SPRING
@SpringBootApplication 역할 나누기
silver-w
2024. 12. 10. 21:45
@SpringBootApplication 역할 나누기
□ @SpringBootApplication 역할 클래스를 두개 이상으로 쪼갤 수 있다
(단, main 메서드는 쪼개서 사용할 수 없음)
main 메서드 외 역할 = @SpringBootApplication
그러므로 메인기능을 하는 클래스와 ComponentScan 역할만 할 수 있음
§ 컴포넌트 스캔 기능과 메인메서드 기능을 나눈 모습
※ 참고로 DI대상 객체의 생명주기 (디자인)을 @SpringBootApplication 클래스에서 설정할 수 있다.
@SpringBootApplication
@ComponentScan(basePackages = "com.example.ex1")
public class Ex1Application2 {
A target1;
@Bean // A객체를 반환하여 Spring Bean pool에 등록한다. ( pool : Collection )
@Scope("singleton")
A getA() {
return new A();
}
}
@Scope("singleton") // 하나의 Bean의 생명주기를 단계별로 나눌수 있다, 자주 사용하는 건 "singleTon", "prototype"
// "singleTon" : Autowired를 많이 하더라도 하나의 인스턴스로 호출 , "prototype" : Autowired를 할때마다 다른 인스턴스로 호출
// prototype 을 사용하려면 Autowired를 사용할때마다 주석으로 표시를 해야하므로, new 연산자를 사용하여 유연하게 설계