일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jpa lazy
- jpa no session
- java predicate
- 기능적 요구사항
- 스프링di
- kotlin 리팩터링
- open-session-in-view
- 스프링시큐리티
- kotlin ::
- 자바 필터
- 스프링부트 도커
- 정적팩토리메서드
- spring formatter
- 비기능적 요구사항
- Atomicity
- IOC
- 수정자주입
- 스프링 포매터
- 도커 이미지 빌드
- 동적파라미터
- Spring
- 소프트웨어의 품격
- 토비의 스프링
- 그래프큐엘
- 생성자주입
- method refetence
- 스프링 시큐리티 설정
- ioc컨테이너
- fetch join
- 스프링
Archives
- Today
- Total
공부기록
[SPRING] 스프링 IoC컨테이너 본문
반응형
IoC
- DI라고도하며, 어떤 객체가 사용하는 의존객체를 직접 만들어서 사용하는 것이 아닌, 주입받아서 사용하는 것.
스프링 IoC 컨테이너
- 빈 설정소스로부터 빈 정의를 읽어들이고, 빈을 구성하고 제공한다. (여기서 빈이란 스프링 컨테이너가 관리하는 객체를 말한다.)
스프링 IoC 컨테이너의 빈이되면 얻는 장점.
- 의존성관리가 된다.
- 다양한 스코프를 제공한다( 싱글톤, 프로토타입 ... 등)
- 라이프사이클을 이용할 수 있다. ( @PostConstruct ... 등 )
빈 설정소스의 종류.
XML
<bean id="bookService" class="...">
<property name="bookRepository" ref="bookRepository"/>
<!-- name 속성의 값 bookRepository은 BookService 클래스 내에 있는 setBookRepository를 뜻한다. -->
<!-- ref 속성의 값 bookRepository은 밑에있는 bean을 뜻한다. -->
<!-- 한 마디로 BookService 클래스의 setBookRepository 메소드의 인자값으로 컨테이너가 관리하는 bean을 넣어주겠다는 뜻 (setter주입)-->
</bean>
<bean id="bookRepository" class="..." />
XML + 자바설정
<context:component-scan base-package="..."/>
@Service //@Component, @Controller, @Repository ...
public class BookService{ ... }
자바설정
@Configuration
public class ApplicationConfig{
@Bean
public BookRepository bookRepository(){
return new BookRepository();
}
@Bean
public BookService bookService(){
return new BookService(bookRepository()); //생성자주입.
}
}
이렇게 의존관계를 직접 맺어주기 싫다면, 기본 생성자를 통해 빈을 등록시키고, 해당 클래스 내의 의존객체에 @Autowired 해줘도 된다.
(BookService -> BookRepository이기 떄문에, BookService 클래스 내에 있는 BookRepository 타입의 변수에 @Autowired 붙여준다.)
자바설정2
@Configuration
@ComponentScan(basePackages = "...")
public ApplicationConfig{ ... }
@Service //@Component, @Controller, @Repository ...
public class BookService{ ... }
스프링부트에서의 설정.
@SpringBootApplication //@ComponentScan과 @Configuration 을 확장한 어노테이션이다.
public class DemoApplication { ... }
반응형
'Spring' 카테고리의 다른 글
[SPRING] web.xml 보충설명 (0) | 2019.08.10 |
---|---|
[SPRING] .properties 에서 값 가져오기. (0) | 2019.08.08 |
[SPRING] @Controller클래스 메소드에 @ResponseBody 유무에 따른 차이 (0) | 2019.08.05 |
[SPRING] 컨트롤러에서 ModelAndView와 Model의 차이. (0) | 2019.08.05 |
[SPRING] AOP? 핵심기능과 부가기능의 분리. (1) | 2019.08.04 |