Notice
Recent Posts
Recent Comments
Tags
- 프로그래머스 level1
- dp 알고리즘
- 프로그래머스 전화번호 목록 파이썬
- 코딩테스트
- 알고리즘 문제
- Django
- 프로그래머스 레벨1
- Django 기초
- 백준 다이나믹프로그래밍
- 코테
- 백준
- 코테 연습
- 프로그래머스 레벨2
- 알고리즘 공부
- 프로그래머스
- spring 기초
- 장고 기초
- 장고
- 코딩테스트 연습
- 스프링 기초
- 바닥장식 파이썬
- 백준 dp
- 프로그래머스 고득점 kit
- Spring 초보
- programmers
- 프로그래머스 전화번호 목록 python
- 전화번호 목록 python
- 스프링 초보
- 백준 바닥장식 python
- 프로그래머스 알고리즘 고득점 kit
Archives
- Today
- Total
일일구름 IT
[Spring] 다양한 의존 객체 주입 (constructor-arg, property) 본문
Spring 의존 객체 주입
Java와 다르게 Spring은 applicationContext.xml을 이용해 객체를 생성하고 생성자 값을 넣어준다.
Java의 경우엔 다음과 같이 객체를 생성하지만
StudentAssembler assembler = new StudentAssembler()
StudentRegisterService registerService = assembler.getRegisterService()
Spring같은 경우엔 스프링 컨테이너라고 표현되는 applicationContext.xml에서 Bean 객체를 생성하고 다음과 같이 GenericXmlApplicationContext을 이용해 applicationContext.xml 파일을 읽어와 객체 생성과 초기화를 할 수 있다.
<bean id="studentDao" class="ems.member.dao.StudentDao" ></bean>
<bean id="registerService" class="ems.member.service.StudentRegisterService">
<constructor-arg ref="studentDao" ></constructor-arg>
</bean>
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
StudentRegisterService registerService = ctx.getBean("registerService", StudentRegisterService.class);
Java에서는 assembler라는 클래스 내부에서 registerService에 studentDao를 참조해주고 getRegisterService 메소드로 registerService 객체를 반환하고 생성할 수 있었다.
반면에 Spring은 applicationContext.xml 파일에 studentDao의 bean 객체를 생성한 후 registerService의 bean 객체를 생성할때 constructor-arg을 이용해 생성자에 값을 넣어주고 ref 태그를 이용해 객체 studentDao를 참조하였다.
MainClass파일에서는 getBean 메소드를 이용하여 registerService 객체를 생성하였다.
다양한 의존 객체 주입
- constructor-arg : 생성자를 통해 객체 생성할 경우 생성자 값을 넣어주기 위해 사용
- ref : 생성자 파라미터가 참조 타입일 경우
- value : 생성자 파라미터가 데이터 타입일 경우
<bean id="registerService" class="ems.member.service.StudentRegisterService">
<constructor-arg ref="studentDao" ></constructor-arg>
</bean>
- property : 변수 초기화시 사용, setter의 파라미터
- name : 변수 이름
<bean id="informationService" class="ems.member.service.EMSInformationService">
<property name="ver">
<value>The version is 1.0</value>
</property>
<property name="sYear">
<value>2015</value>
</property>
</bean>
- list : 리스트 타입
- map : map 타입
- entry : key, value 한 쌍
- key : 키 값
<property name="developers">
<list>
<value>Cheney.</value>
<value>Eloy.</value>
<value>Kian.</value>
</list>
</property>
<property name="administrators">
<map>
<entry>
<key>
<value>Cheney</value>
</key>
<value>cheney@springPjt.org</value>
</entry>
<entry>
<key>
<value>Jasper</value>
</key>
<value>jasper@springPjt.org</value>
</entry>
</map>
</property>
'Spring' 카테고리의 다른 글
[Spring] 생명주기 (Life Cycle) (2) | 2023.11.28 |
---|---|
[Spring] 의존객체 선택 (@Qualifier, @Named) (0) | 2023.11.11 |
[Spring] 의존객체 자동 주입 (@Autowired, @Resource, @Inject) (0) | 2023.11.09 |
[Spring] bean의 범위 (Prototype) (0) | 2023.11.07 |
[Spring] 스프링 설정 파일 분리 (문자열 배열, import) (0) | 2023.11.07 |