애플리케이션은 애플리케이션 전체 기능중 일부를 담당하는 많은 컴포넌트로 구성된다.
Spring application context ( container )
스프링은 Spring application context라는 컨테이너를 제공하는데, 이 컨테이너가 애플리케이션 컴포넌트(빈, bean)들을 생성하고 관리한다.
Spring application context 내부에서 bean들은 서로 연결되어 완전한 애플리케이션을 만든다.
Dependency Injection ( DI )
bean들의 상호 연결은 의존성주입(Dependency Injection)을 기반으로 수행된다.
애플리케이션 컴포넌트에서 의존(사용)하는 다른 빈의 생성과 관리를 Spring application context가 해준다.
Spring application context는 모든 컴포넌트를 생성, 관리하고 해당 컴포넌트를 필요로 하는 빈에 주입(연결)한다.
@Configuration
public class A {
@Bean
Public 리턴타입 메소드이름() {
~
~
return ~ ;
}
}
@Configuration : Spring application context에게 bean을 제공하는 구성(configuration)클래스라는것을 스프링에게 알려줌
@Bean : 해당 메서드가 반환하는 객체가 Spring application context의 bean으로 추가됨
XML기반 구성, 자바기반 구성, 자동-구성
Auto-configuration ( 자동-구성 )
스프링은 자동으로 컴포넌트들을 구성할수 있는 자동-구성기능이 있어, 자동구성을 할수 없을 경우에 XML구성이나 자바구성이 필요하다.
자동-구성은 자동연결(autowiring)과 컴포넌트 검색(component scanning)이라는 스프링 기법을 기반으로 한다
컴포넌트 검색(component scanning)
컴포넌트 검색을 사용하여 스프링은 자동으로 애플리케이션의 classpath에 지정된 컴포넌트를 찾은후 Spring application context의 bean으로 생성할수 있다
자동연결(autowiring)
자동연결을 사용하여 의존관계가 있는 컴포넌트를 자동으로 다른 bean에 주입(연결)한다.
스프링부트의 Auto-configuration
스프링부트에서 자동-구성 기능이 더욱 향상됨.
향상된 자동-구성 기능에 의해 환경변수인 classpath를 기준으로 어떤 컴포넌트가 구성되고 연결되어야 하는지 알수있다.
스프링 구성을 적용해야 할지 말지를 결정하는 요인들을 판단하는 런타임(더 정확하게는 애플리케이션이 시작되는 시점) 과정이라고 할 수 있다.
스프링 부트의 자동 구성 대상으로 고려할 만한 예
• 클래스패스에 JdbcTemplate이 있고 DataSource 빈이 있다면 JdbcTemplate 빈을 자동 구성한다.
• 클래스패스에 Thymeleaf가 있다면 Thymeleaf 템플릿 리졸버, 뷰 리졸버, 템플릿 엔진을 구성한다.
• 클래스패스에 스프링 시큐리티가 있다면 아주 기본적인 웹 보안을 구성한다.
'Spring' 카테고리의 다른 글
| Lombok이 만드는 메소드들이 생성되는 시점 (1) | 2022.10.24 |
|---|---|
| Bean , 빈 등록과 사용 , 스프링 Bean의 LifeCycle (0) | 2022.10.24 |
| IoC , DI , AOP (0) | 2022.10.24 |
| Spring Starter Project 구조 (0) | 2022.10.20 |
| 웹 spring boot 프로젝트 ( JSP View, DB 연동 ) (1) | 2022.09.14 |