주입할 스프링 빈이 없어도 동작해야 할 때가 있다.@Autowire 만 사용하면 required 옵션의 기본값이 ture로 되어 있어서 자동 주입 대상이 없으면 오류가 발생한다.자동 주입 대상을 옵션으로 처리하는 방법은 다음과 같다.@Autowired(required=
과거에는 수정자 주입과 필드 주입을 많이 사용했지만, 최근에는 스프링을 포함한 DI 프레임워크 대부분이 생성자 주입을 권장한다.불변대부분 의존관계 주입은 한번 일어나면 애플리케이션 종료시점까지 의존관계를 변경할 일이 없다. 오히려 대부분의 의존관계는 애플리케이션 종료
생성자가 딱 1개만 있으면 @Autowired를 생략할 수 있다.롬복 라이브러리가 제공하는 @RequiredArgsConstructor 기능을 사용하면 final이 붙은 필드를 모아서 생성자를 자동으로 만들어준다.(코드에는 보이지 않지만 실제 호출이 가능하다.)롬복이
@Autowired는 타입(type)으로 조회된다.타입으로 조회하기 때문에, 마치 다음 코드와 유사하게 동작한다.ac.getBean(DiscoutPolicy.class)스프링 빈 조회에서 학습했듯이 타입으로 조회하면 선택된 빈이 2개 이상일 때 문제가 발생한다.그리고
데이터베이스 커넥션 풀이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고, 애플리케이션 종료 시점에 연결을 모두 종료하는 작업을 진행하려면, 객체의 초기화와 종료 작업이 필요하다. 스프링 빈은 간단하게 다음과 같은 라이프사이클을 가진다. *
지금까지 우리는 스프링 빈이 스프링 컨텐이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될 때까지 유지된다고 학습했다. 이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. 스코프는 번역 그대로 빈이 존재할 수 있는 범위를 뜻한다.스프링은 다음과 같은
웹 스코프의 특징웹 스코프는 웹 환경에서만 동작한다.웹 스코프는 프로토타입과 다르게 스프링이 해당 스코프의 종료시점까지 관리한다. 따라서 종료 메서드가 호출된다. 웹 스코프의 종류 request : HTTP 요청 하나가 들어오고 나갈 떄 까지 유지되는 스코프, 각각의