이번 포스팅에서는 JPA에서 Maven으로 Project를 생성하는 방법에 대해서 공부하고자 한다. 1. 인텔리제이에서 프로젝트를 생성하기 프로젝트 생성을 한 후, Maven에서 Project SDK를 선택해준다. 나는 JAVA11이 깔려있는데, corretto-11 버전을 선택했다. 그리고 아래에 있는 Next를 클릭 후 다음 화면으로 넘어간다. 다음으로 넘어오면 저장 경로, 저장명, 그리고 그룹명과 아티팩트 명을 설정할 수 있다. 필요한 경로 및 파일명 등을 설정한 후 Finish를 눌러주면 프로젝트 생성은 완료된다. 2. pom.xml 설정하기 인텔리제이에서 pom.xml을 설정해야한다. pom.xml은 스프링으로 치면 gradle과 비슷하게 이해하면 될 것 같다(정확하지는 않음). pom.xml에..
@Autowired가 붙었을 때의 동작 공부 @Autowired는 @ComponentScan과 함께 주로 사용된다. @ComponentScan을 통해 @Component가 붙은 객체들이 모두 생성되어 빈 컨테이너에 저장이 된다. 저장이 완료된 후, 의존관계를 주입하는 단계에서 @Autowired가 붙은 메서드들이 하나씩 호출이 된다. 이 때, 각 메서드의 매개변수에 해당되는 타입이 스프링 빈 컨테이너에서 찾아온 후 의존관계 주입이 된다. 순서를 좀 더 간략히 정리해보면 다음과 같을 것 같다. @ComponentScan이 @Component의 대상인 모든 Class를 읽어온다. 모든 Class의 생성자를 통해 싱글톤 객체를 하나 생성해서 스프링 컨테이너의 빈 저장소에 저장한다. 의존관계 주입 단계에서 @A..
이 게시글은 인프런 영한님의 강의를 듣고 복습하며 정리한 글입니다. 빈 스코프란? 빈 스코프는 '빈이 존재할 수 있는 범위'를 의미한다. 빈이 존재할 수 있는 범위에 따라서 여러 형태의 빈 스코프로 나누어지게 된다. 빈 스코프는 여러가지가 있는데, 아래 정도로 간략히 나눌 수 있다. 싱글톤 : 기본 스코프. 스프링 컨테이너 시작부터 종료까지 유지되는 스코프. 가장 넓은 범위 프로토타입 : 스프링 컨테이너는 프로토타입 빈의 생성, 의존관계 주입, 초기화 메서드까지만 관여. 클라이언트에게 빈을 반환 후, 이후 관리는 클라이언트에서만 관리한다. 따라서 종료 메서드가 호출되지 않는다. Request : 클라이언트로부터 Http 요청이 들어오고 나갈 때까지만 유지되는 빈. 프로토타입 스코프란? 싱글톤 스코프는 항..
빈 생명주기 콜백 네트워크 소켓처럼 어플리케이션 시작 시점에 필요한 연결을 미리 해두고, 어플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 미리 필요하다. 미리 연결을 해두면 빠르게 처리가 가능하고, 종료 전에 객체의 종료가 완료되면 안전하게 종료할 수 있는 장점이 있기 때문이다. 이를 코드로 미리 한번 해보는 작업을 해보려고 한다. public class NetworkClient { private String url; public NetworkClient() { System.out.println("생성자 호출, url = " + url); connect(); call("초기화 연결 메세지"); } private void connect() { System.out..
빈 등록, 자동? 수동? 선택 기준은 무엇일까? 앞서 정리된 게시글들은 모두 스프링 빈을 자동, 수동으로 등록하는 것들에 대한 정리였다. 이번 정리글에서는 이런 수동, 자동등록들 중 어떤 것들을 주로 사용해야 될지에 대해 정리한다. 결론부터 말하면 자동을 위주로 사용하는 것이 좋다고 한다. 자동등록은 코드가 간결해지는 장점이 있으나, 의존관계 같은 것들이 명확하지 않다는 단점이 있다. 수동 등록은 의존관계를 명확하게 파악할 수 있으나, 등록해야 할 것들이 많아지면 매우 부담스럽게 작용한다. 최근 스프링에는 @Component 뿐만 아니라 @Controller, @Service @Repository 등의 어노테이션이 추가되면서 점점 자동등록에 힘을 싣고 있다. 개발이 복잡해질수록 등록해야 할 스프링 빈이 ..