프밍일기

IoC(Inversion of Control, 제어역전) 본문

Spring

IoC(Inversion of Control, 제어역전)

스에조theLED 2017. 1. 28. 18:50

■ IoC(Inversion of Control, 제어역전)

    - 개발자가 작성한 프로그램을 프레임워크가 호출할 수 있도록 설정하는것

    - 어노테이션을 이용하는 방식과 XML을 사용하는 방식이 있음


■ 어노테이션을 이용한 IoC 설정

@Configuration
public class DaoFactory {
	
	@Bean
	public UserDao userDao() {
		return new UserDao(connectionMaker());
	}
	
	@Bean
	public ConnectionMaker connectionMaker() {
		return new NConnectionMaker();
	}
}

    - @Configuration : 스프링 프레임워크가 사용할 Class임을 나타냄

    - @Bean : object 생성을 담당하는 IoC용 메소드임을 나타냄


■ IoC 설정을 이용한 메소드 호출

public class UserDaoTest {

	public static void main(String[] args) throws ClassNotFoundException, SQLException {
		
		// Non-DI
		// UserDao dao = new DaoFactory().userDao();
		
		// DI of Annotation
		// ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class);
		// UserDao dao = context.getBean("userDao", UserDao.class);
		
		// DI of XML
		ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");
		UserDao dao = context.getBean("userDao", UserDao.class);
		
		UserVo uservo = new UserVo();
		uservo.setId("user_id");
		uservo.setName("user_name");
		uservo.setPassword("user_password");
		
		dao.add(uservo);
		
		System.out.println(uservo.getId() + " 등록 성공");
		
		UserVo uservo2 = dao.get(uservo.getId());
		System.out.println(uservo2.getName());
		System.out.println(uservo2.getPassword());
		
		System.out.println(uservo.getId() + " 조회 셩공");

	}

}

    - 6) 기존 방식 object 생성

    - 9~10) IoC(Annotation) 방식으로 object 생성. 프레임워크가 하는 역할이므로 따로 사용할 일은 없음

    - 13~14) IoC(XML) 방식으로 object 생성. 프레임워크가 하는 역할이므로 따로 사용할 일은 없음





'Spring' 카테고리의 다른 글

Spring과 MyBatis 연동 예제  (2) 2017.04.07
AOP - Annotation  (0) 2017.03.24
AOP - XML  (0) 2017.03.24
스프링 컨테이너 <beans> 설정 유의사항  (0) 2017.03.03
DI(Dependency Injection, 의존성주입)  (0) 2017.01.28
Comments