prototype - 요청할때마다 새로운놈
request - 같은 리퀘스트면 똑같은 빈, 다르면 다른빈
session - 이건 세션!, 근데 이 두개는 웹환겨에서만 됨
singletone - default값임! 싱글톤
//spring컨테이너는 항상 bean을 하나만 만든다!싱글톤으로 굳이 설정하지 않아도
//객체하나로 관리한다! 멀티쓰레딩시 공유에 의한 문제가 없는지 체크는 해봐야함
//밑에건 true이 됨! 만약 새로 객체를 만들어서 받고싶다면 bean에 scope을 준다
System.out.println(bean == bean2);
<bean id="greeting" class="com.gorakgarak.sample3.autowire.GreetingServiceImpl"
autowire="byType" scope="prototype"/>
이렇게 주면
System.out.println(bean == bean2);
이건 false값이 뜰것이다
//이런식으로 주면 됨!
//근데 보면 out은 또 싱글톤이라고 될수있다..(주입된 녀석 출력도우미는 싱글톤이다 ! 무슨문제가 ???)
//주입을 아무데나 해주는게 아님. 내가 필요한 의존객체가 있어야 일하니까 일하기 전에 준다.
//setter가 두번 호출된건 greeting service가 겟빈할때마다 두번 줄어줌!
//getbean한번 더하면 새로운 그리팅 서비스 하나 더 만들고 출력도우미 해주는데 출력도우미는 하나이기 때문에
//같은놈이 두번뜸!
//총코드는 다음과 같다
public class GreetingTest {
public static void main(String[] args) {
//팩토리 기능및 의존성 관리 및 등등등을 제공하는 놈임
//단순공장이 아님
//컨테이너는 클래스패쓰부터 찾음.. 아니면 filesystem..을 써서 경로에 맞게 찾덩가
//클래스의 시작은 src라고 할수있다
ClassPathXmlApplicationContext context
= new ClassPathXmlApplicationContext("beans3.xml");
GreetingService bean = (GreetingService)context.getBean("greeting");
GreetingService bean2 = (GreetingService)context.getBean("greeting");
//spring컨테이너는 항상 bean을 하나만 만든다!싱글톤으로 굳이 설정하지 않아도
//객체하나로 관리한다! 멀티쓰레딩시 공유에 의한 문제가 없는지 체크는 해봐야함
//밑에건 true이 됨! 만약 새로 객체를 만들어서 받고싶다면 bean에 scope을 준다
System.out.println(bean);
System.out.println(bean2);
}
}
결과는 다음과같다
set.... : com.gorakgarak.sample3.autowire.OutputServiceImplFile@57e9bb
set.... : com.gorakgarak.sample3.autowire.OutputServiceImplFile@57e9bb
com.gorakgarak.sample3.autowire.GreetingServiceImpl@1b212f0
com.gorakgarak.sample3.autowire.GreetingServiceImpl@1f96306
'웹 & 프레임워크' 카테고리의 다른 글
Spring 생성자를 통한 의존성 주입 (0) | 2014.06.27 |
---|---|
Spring Auto-Wire, ByType, ByName (0) | 2014.06.27 |
Spring 참조시키는거 좀 쉽게 Namespace - p를 체크하고 이용해서 해보자. (0) | 2014.06.27 |
Spring bean 사용법 (0) | 2014.06.27 |
Spring 구조 그림 (0) | 2014.06.27 |