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 연산자를 사용하여 유연하게 설계