Java
-
TIL 자바 스프링부트 서버개발 올인원 : 43-46강Java 2024. 5. 15. 16:25
이전 강의에서 AWS EC2서버를 빌리는 것 까지 했다.이번 강의에서는 빌린 EC2서버에 접속하는 것이다. 우선 EC2서버에 접속하는 방법으로는 2가지가 있다. 1. 다운로드 받은 키 페어(PEM키)를 이용하는 방법2. AWS콘솔을 활용해서 접속하는 방법 1. 다운로드 받은 키 페어(PEM키)를 이용하는 방법준비물- 접속하려는 EC2의 IP주소(퍼블릭 IP주소)- 서버를 열면서 다운로드 받았던 키 페어- 접속하기 위한 프로그램(git CLI) 우선 다운로드 받았던 키 페어의 권한이 열려있는 상태이기 때문에 권한을 닫아주는 작업부터 해야한다.git CLI에서 chmod 400 [다운로드 받은 키페어 파일주소(보통 드래그해서 가져옴)]보안처리를 해야만 에러가 발생하지 않음보안처리를 하지 않으면 위와같은 ..
-
TIL 자바 스프링부트 서버개발 올인원 : 38강Java 2024. 5. 14. 00:01
Profile현재 도서관리 어플리케이션은 로컬에서만 실행이 되도록 하고있다. 때문에 DB도 로컬에 있는 MySql과 연결이 되어있다. 그렇다면 AWS로 배포 할 때는 어떻게 아마존에서 빌린 컴퓨터의 DB를 사용할 수 있을까?Profile이라는 개념은 여기에 적용이 되는 부분이다. 로컬 컴퓨터에서 돌렸을 때의 설정과 외부 서버에서 돌렸을 때의 설정을 다르게 해준다는 것이다.(비단 DB뿐만 아니라, 다양한 종류의 설정을 할 수 있다.)(이미 로컬서버를 실행시킬 때 Profile 설정을 체크하고 있었다.) 연습을 위해 위의 사진과 같이 Profile설정을 다르게 해서 local일 경우, H2 DB를 사용하도록 하고 dev일 경우 MySql DB를 사용하도록 해보자H2 DB경량 DB로 개발 단계에서 많이 사용하..
-
TIL 자바 스프링부트 서버개발 올인원 : 35강Java 2024. 5. 11. 00:01
아래와 같은 형식으로 리팩토링 하기 위해서 OneToMany / ManyToOne / 연관관계의 주인을 알아봤다. User도메인과 UserLoanHistory도메인이 직접적으로 연결되도록 리팩토링 해보자 우선 User도메인에 userLoanHistorties에 cascade옵션과 orphanRemoval옵션을 설정해주고@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)List userLoanHistories = new ArrayList(); loanBook메서드를 만들어서 해당 메서드에서 userLoanHistories에 리스트를 추가할 수 있도록 해준다.public void loanBook(String bookNa..
-
TIL 자바 스프링부트 서버개발 올인원 : 33-34강Java 2024. 5. 10. 00:01
@ManyToOne / @OneToMany이제까지의 대출기능은 절차지향적으로 진행이 되고 있었다.1. Request로 들어오는 bookName을 통해 Book이 있는지 확인2. 있으면, UserLoanHistoryRepository에서 빌릴 수 있는지 확인3. 빌릴 수 있다면, User가 있는지 확인4. 유저가 있다면, UserLoanHistory객체로 만들어서 저장 이 경우 User와 UserLoanHistory는 밀접한 연관이 있기 때문에 두 객체를 협업하게 할 수 있다.요런식으로 생략할 수 있게 된다. 단 선행 조건으로 User와 UserLoanHistory가 서로 알아야한다.@Entitypublic class UserLoanHistory { @Id @GeneratedValue(strat..
-
TIL 자바 스프링부트 서버개발 올인원 : 30-32강Java 2024. 5. 8. 22:19
테이블을 만들 때 varchar(255)로 쓴 이유1. @Column의 기본값이 255이기 때문에 을 생략할 수 있게 된다.2. 문자열 필드는 최적화를 해야 하는 경우가 아닐 때 조금 여유롭게 설정하는 것이 좋다.(나중을 대비)Entity추가package com.group.libraryapp.domain.book;import javax.persistence.*;@Entitypublic class book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id = null;// @Column(nullable = false, length = 255, name="name")// name = "name" DB의 이름..
-
@RequiredArgsConstructor 사용에러(Feat.eclipse)Java 2023. 12. 20. 22:45
전에 팀프로젝트를 리팩토링 과정 중 생성자를 따로 쓰지 않으면서 생성자를 통한 주입으로 바꿔주기 위해@RequiredArgsConstructor를 썼었다. 그런데, 자꾸 "The blank final field boardService may not have been initialized"컴파일 에러로 final을 초기화 시키라고 뜨길래 "eclipse에서는 못쓰나..?" 하면서 어쩔 수 없이 생성자를 남겨줬었다. 그리고 지금..새로 게시판을 만드는데, final 초기화 하라는 컴파일에러가 또 뜨길래 이번엔 왜 그러는지 자세히 좀 알아봤다. https://stackoverflow.com/questions/54489530/lombok-requiredargsconstructor-not-working-causi..
-
배포, 컴파일, 빌드, CI/CD란 무엇인가?Java 2023. 12. 11. 22:21
프로젝트를 하면서 WAS에서만 프로젝트를 돌리고 따로 배포를 하지 못했었다. 그래서 따로 배포와 관련된 공부를 하지 않았었기에 하나씩 알아가 보려고 한다. 컴파일 번역가가 영어로된 글을 한글로 바꿔주듯, 컴퓨터가 이해할 수 있는 언어로 바꿔주는 과정을 말한다. 빌드 번역된 글을 책으로 엮어주는 것과 같이, 컴파일된 코드를 실행할 수 있는 상태로 만들어주는 과정이다. 보통 컴파일을 포함한 배포하기 직전의 모든 과정을 빌드라고 표현하기도 한다. 빌드 툴로는 빌드 툴로는 Ant, Maven, Gradle 등이 있다. 배포 빌드가 완성된 실행 파일(JAR, WAR)을 사용자가 접근할 수 있는 환경에 배치시키는 일을 뜻한다. JAR : Java Archive의 약자로 Java어플리케이션이 동작할 수 있돌고 자바 ..
-
Spring AOP란 무엇인가?Java 2023. 11. 30. 22:24
개요 @Transactional을 정리하면서 AOP에 관한 내용이 많이 나왔는데, AOP를 따로 정리한 적이 없기 때문에 이번에 정리를 해보려고 한다. AOP란? AOP는 Aspect-Oriented Programming의 약자로 관점 지향 프로그래밍이라 불린다. 어떤 로직을 기준으로 핵심적인 관점과 부가적인 관점으로 나눠보고 그 관점을 기준으로 각각 모듈화 하겠다는 의미 주로 핵심 비즈니스 로직에서 횡단 관심사(Cross-cutting concerns)를 모듈화하고 분리하기 위한 목적으로 사용된다. AOP는 횡단 관심사를 별도의 모듈로 분리하여 개발자가 핵심 비즈니스 로직에 집중할 수 있도록 해준다. 위의 사진과 같이 흩어진 관심사, 횡단 관심사의 모듈화를 통해 핵심 비즈니스 로직을 분리한다. 관점 지..