초리의 블로그

AnnotationConfigApplicationContext 본문

Spring

AnnotationConfigApplicationContext

초리84 2016. 1. 23. 00:09

※ 토비의 스프링을 보고 학습한 내용을 정리해 놓은 것입니다. 따라서 책 내용과 거의 동일합니다.

저작권이나 기타 문제가 될 경우 조치하겠습니다. ※


Spring의 Bean과 Configuration을 이용한 객체 생성 및 메소드 호출을 해보겠습니다.

XML 설정을 이용하지 않고 자바소스만 이용한 방법입니다.


@Configuration빈 팩토리를 위한 오브젝트 설정을 담당하는 클래스

@Bean오브젝트를 만들어 주는 메소드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
 
@Configuration
public class DaoFactory {
    @Bean
    public UserDao userDao() {
        return new UserDao(connectionMaker());
    }
 
    @Bean
    public ConnectionMaker connectionMaker() {
        return new ChoriConnectionMaker();
    }
}


DaoFactory의 설정한 어노테이션들을 이용해서 ApplicationContext 생성하고, 객체를 생성해 볼게요.

import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
...


public class UserTest {
public static void main(String args[]) throws 

ClassNotFoundException, SQLException{
ApplicationContext context = 

new AnnotationConfigApplicationContext(DaoFactory.class);

// UserDao dao = new DaoFactory().userDao();
UserDao dao = context.getBean("userDao", UserDao.class);

User user = new User();

...

}

AnnotationConfigApplicationContext : @Configuration 어노테이션이 붙은 클래스를 설정 정보로 사용.

파라미터에 클래스를 여러개 넣을 수 있지만 지금은 DaoFactory만 사용한다.

getBean : ApplicationContext가 관리하는 오브젝트를 요청하는 메소드.

ApplicationContext에 등록된 빈 이름을 파라미터로 받음. (여기선 "userDao")

getBean은 Object를 리턴해주기 때문에 형변환을 해야 되는데, 두 번째 파라미터에 리턴 타입을 받음.

context.getBean("userDao") 로 사용하면 Object를 리턴


- 토비의 스프링 -

Comments