Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- autowired
- 도커
- 블록체인
- express
- Cookie
- PL/SQL
- model1
- jQuery
- RDS
- CSS
- JSP
- JavaScript
- docker
- phaser
- 배포
- EC2
- HTML
- AWS
- node.js
- Ajax
- 웹소켓
- 비트코인
- 알고리즘
- 웹게임
- SQL
- 암호화
- Spring
- websocket
- Servlet
- tiles.xml
Archives
- Today
- Total
記錄
Spring) .xml을 통한 변수값 설정, 생성자 활용 본문
public class JobExecute {
public JobExecute(String first , int second) {
System.out.println("String,int");
}
public JobExecute(String first , long second) {
System.out.println("String,long");
}
public JobExecute(String first , String second) {
System.out.println("String,String");
}
private ArticleDao articledao;
public ArticleDao getArticledao() {
return articledao;
}
public void setArticledao(ArticleDao articledao) {
this.articledao = articledao;
System.out.println("ArticleDao :" + this.articledao);
}
private int data;
public void setData(int data) {
this.data = data;
System.out.println("data value :" + this.data);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!--
IOC 컨테이너 (Spring 전용 메모리 공간) 안에 생성될 객체를 만들고 조립(의존)관계 설정 하는 파일
JobExecute jobexecute = new JobExecute("hong",100L); //parameter 처리
ArticleDao articledao = new ArticleDao();
jobexecute.setArticledao(articledao);
jobexecute.setData(500)
1.<constructor-arg> 순서를 인정
2.<value> 값에 Type 이 명시되지 않으면 Default >> String
-->
<bean id="jobexecute" class="DI_08_Spring.JobExecute">
<!-- 생성자 파라미터 설정 -->
<constructor-arg>
<value>hong</value>
</constructor-arg>
<!-- 생성자 파라미터 설정 -->
<constructor-arg>
<value type="long">100</value>
</constructor-arg>
<!-- articledao라는 변수의 값을 설정 -->
<!-- jobexecute 클래스에 setter가 구현되어 있지 않으면 작동 X -->
<property name="articledao">
<ref bean="articleDAO" />
</property>
<!-- data라는 변수의 값을 설정 -->
<!-- jobexecute 클래스에 setter가 구현되어 있지 않으면 작동 X -->
<property name="data">
<value>500</value>
</property>
</bean>
<!-- 이게 bean 설정 되어 있어야 위에서 articledao에서 ref값으로 설정 가능 -->
<bean id="articleDAO" class="DI_08_Spring.ArticleDao"></bean>
</beans>
public class Program {
public static void main(String[] args) {
/*
JobExecute jobexecute = new JobExecute("hong",100L);
//생성자 주입 (overloading 처리 가능 : Spring 에서)
ArticleDao articledao = new ArticleDao();
jobexecute.setArticledao(articledao); //setter 주입 (주소)
jobexecute.setData(500); //setter 주입 (값)
*/
ApplicationContext context =
new GenericXmlApplicationContext("classpath:DI_08_Spring/DI_08.xml");
}
}
<정리>
1. bean으로 설정할 클래스에 setter가 없으면 .xml에서 property 값 설정이 불가능하다
2. 다수의 오버로드된 생성자들이 존재하더라도 하나의 생성자를 특정할 필요 없이 .xml에서 <constructor-arg> 설정을 잘 하면 이에 맞는 생성자가 작동하게 된다.
'설정을 잘 한다'는 뜻은 생성자에 파라미터로 설정된 타입과 동일한 타입의 파라미터들을 <constructor-arg>를 통해 세팅한다는 것을 의미한다.
3. .xml에서 Reference Type의 변수를 property로 설정 해줄 때에는 ref를 사용한다.
vs
.xml에서 Primitive Type의 변수를 property로 설정 해줄 때에는 value를 사용한다.
'Web > Spring framework' 카테고리의 다른 글
Spring) .properties 파일의 활용 (0) | 2018.04.28 |
---|---|
Spring) Properties Class의 활용 (0) | 2018.04.28 |
Spring) .xml을 통한 List 세팅 (0) | 2018.04.28 |
Spring) .xml을 통한 HashMap 세팅 (0) | 2018.04.28 |
Spring) getBean과 객체의 생성 (0) | 2018.04.26 |
Comments