Spring/Spring 이야기

[Spring framework] 공부를 해보자 3탄

seungdols 2016. 7. 29. 23:34

Spring framework - 개념

스프링에서 스프링이 제어권을 가지고 직접 만들고, 관계를 부여하는 오브젝트를 Bean이라 부른다.

빈 생성과 관계설정 같은 제어를 담당하는 IoC 오브젝트빈 팩토리라 부른다.
좀 더 확장한 어플리케이션 컨텍스트를 주로 사용한다.

어플리케이션 컨텍스트는 별도의 정보를 참고해서 빈의 생성, 관계설정등의 제어 작업을 총괄하는 역할을 한다.

빈 팩토리

  • 스프링의 IoC를 담당하는 핵심 컨테이너이며, 빈 등록, 생성, 조회, 반환 및 부가적인 빈을 관리하는 기능을 담당한다.

어플리케이션 컨텍스트

  • 빈 팩토리를 확장한 IoC 컨테이너다. 빈 팩토리와 빈과 관련한 기능을 하는 것 이외에 스프링이 제공하는 각종 부가 기능들을 추가 제공한다.

스프링이 싱글톤으로 빈을 생성하는 이유.

  • 동작하는 환경 때문!!(엔터프라이즈 서버 환경)
  • 요청에 따라 오브젝트 생성시 부하가 너무 크다.
  • 디자인 패턴의 싱글톤과는 다르게 구현한다.

실제 디자인 패턴 싱글톤의 경우 한계점이 존재한다.

상속이 불가능 하다거나 서버 환경에서의 싱글톤이 진짜 하나인지도 보장을 하지 못한다. 더군다나 테스트하기가 힘들다.
하지만, 스프링의 싱글톤 레지스트리에서 싱글톤 형태의 오브젝트를 만들고 관리하는 기능을 제공한다. 그리고, 테스트도 가능하며, 상속도 가능하다는 점이 활용성을 더욱 높여준다.

스프링이 관리하는 오브젝트인 빈이 생성되고, 존재하고, 적용되는 범위는 싱글톤으로 ...

싱글톤 스코프는 컨테이너 내에 한 개의 오브젝트만 만들어져서, 강제로 제거하지 않는 한 스프링 컨테이너가 존재하는 동안 계속 유지 된다.

스프링에서 만들어지는 대부분의 싱글톤 스코프를 갖는다. (이에 대한 의미를 조금 더 찾아 보아야 할 것 같다.)

Code 설정에서 XML 설정으로
@Bean
public ConnectionMaker connectionMaker(){
    return new DConnectionMaker();
}

이 코드에서 @Bean은 <bean 으로 connectionMaker는 id =”connectionMaker”로
new DConnectionMaker()는 class=”spring…DConnectionMaker”로 변경 된다.

즉, 아래와 같이 변한다.

<bean id="connectionMaker" class = "DConnectionMaker" />
userDao.setConnectionMaker(connectionMaker());

위 코드는 다음처럼 바뀐다.

<bean id="userDao" class="spring.dao.UserDao">
    <property name ="connectionMaker" ref="connectionMaker" />
</bean>



반응형