Spring 의 xml 설정 Bean 대상 디 테 일
39396 단어 Java-Spring자바springbeanxml
Bean 태그 속성
기본 예
우선,가장 간단 한 예:
<bean class="pojo.User"/>
그 를 이렇게 사용 해 야 한다.
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml");
User dzzhyk= (User)ac.getBean(User.class);
System.out.println(dzzhyk);
빈 구조 기 를 사용 합 니 다.빈 대상 user 의 각 속성 은 null 입 니 다.
User{id='null', username='null', password='null'}
id 속성
bean 대상 에 id 를 설정 하여 쉽게 구분 할 수 있 습 니 다.보통 이렇게 합 니 다.
<bean id="user" class="pojo.User"/>
이렇게 하면 우 리 는 bean 을 가 져 올 때 id 를 지정 하여 가 져 올 수 있 습 니 다.이렇게 하면 더욱 정확 합 니 다.
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml");
User dzzhyk= (User)ac.getBean("user"); // id
System.out.println(dzzhyk);
빈 구조 기 를 사용 합 니 다.빈 대상 user 의 각 속성 은 null 입 니 다.
User{id='null', username='null', password='null'}
scope 속성
scope 속성 은 두 개의 수치 만 있 습 니 다.singleton 또는 prototype 은 하나의 예/여러 예 를 대표 합 니 다.
기본 값:단일 예
<bean id="user" class="pojo.User" scope="singleton" />
<bean id="user" class="pojo.User" scope="prototype" />
bean 이 게 으 른 로 딩 여 부 는 scope="singleton"의 bean 대상 에 만 작용 합 니 다.사용 되 었 을 때 만 만 들 고 하나의 예 를 유지 합 니 다.
<bean id="user" class="pojo.User" lazy-init="true" />
init-method 와 destroy-method
<bean id="user" class="pojo.User" init-method="myInit" destroy-method="myDestroy">
<constructor-arg index="0" name="username" type="java.lang.String" value="dzzhyk"/>
<constructor-arg index="1" name="password" type="java.lang.String" value="123456"/>
bean>
public void myInit(){
System.out.println("user ...");
}
public void myDestroy(){
System.out.println("user ...");
}
다음은 다음 코드 를 실행 하여 결 과 를 보십시오.
ClassPathXmlApplicationContext ac =
new ClassPathXmlApplicationContext("applicationContext.xml");
User dzzhyk = (User)ac.getBean(User.class);
System.out.println(dzzhyk);
ac.close(); //
ac.close()방법 으로 용 기 를 닫 아야 합 니 다.destroy 방법 은 이미 시대 에 뒤떨어 졌 습 니 다.
출력 결과:
user ...
User{id='null', username='dzzhyk', password='123456'}
user ...
factory-bean 과 factory-method
공장 방식 으로 Bean 대상 을 만 들 수 있 습 니 다.
public class Factory {
public static User getUser(){
return new User("dzzhyk", "123456");
}
}
다음은 Bean 을 설정 할 때 클 라 스 가 정적 클래스 를 가리 키 는 것 을 직접 사용 하고 정적 공장 방법 을 제정한다.
<bean id="user" class="Factory" factory-method="getUser"/>
public class Factory {
public User getUser(){ // static
return new User("dzzhyk", "123456");
}
}
그리고 xml 에서 Bean 대상 설정:
<bean id="userFactory" class="Factory"/>
<bean id="user" class="pojo.User" factory-bean="userFactory" factory-method="getUser"/>
대상 을 다음 과 같이 가 져 올 수 있 습 니 다:
User{id='null', username='dzzhyk', password='123456'}
Bean 하위 태그
property 태그
방금 대상 은 속성 이 없습니다.property 탭 으로 값 을 부여 합 니 다.
<bean id="user" class="pojo.User">
<property name="id" value="1"/>
<property name="username" value="dzzhyk"/>
<property name="password" value="123456"/>
bean>
constructor-arg 태그
bean 의 구조 함 수 를 지정 하지 않 으 면 기본적으로 빈 구조 기 를 사용 하고 constructor-arg 태그 로 bean 의 구조 함 수 를 지정 합 니 다.
우선,User 클래스 에 새로운 구조 함 수 를 추가 합 니 다.
public User(String username, String password) {
this.username = username;
this.password = password;
}
그리고 bean 대상 을 만 들 때 이 구조 함 수 를 지정 하여 각 위치의 매개 변수 유형 과 값 을 지정 하여 조작 할 수 있 습 니 다.
<bean id="user" class="pojo.User">
<constructor-arg index="0" name="username" type="java.lang.String" value="dzzhyk"/>
<constructor-arg index="1" name="password" type="java.lang.String" value="123456"/>
bean>
User{id='null', username='dzzhyk', password='123456'}
constructor-arg 지정 집합 매개 변수
list 태그
만약 구조 기 가 들 어 와 야 할 매개 변수 가 하나의 대상 집합 이 라면 어떻게 사용 해 야 합 니까?
user 대상 을 만 들 려 면 핸드폰 번호 목록 에 들 어가 구조 함 수 를 실행 해 야 한다 고 가정 합 니 다.핸드폰 번호 목록 은 하나의 목록 이 고 그 요소 유형 은 String 이 며 그 구조 함 수 는 다음 과 같 습 니 다.
public User(String username, String password, List<String> phones) {
this.username = username;
this.password = password;
this.phones = phones;
}
그러면 xml 를 설정 할 때 constructor-arg 를 사용 하여 설정 하려 면 이렇게 써 야 합 니 다.
<bean id="user" class="pojo.User">
<constructor-arg index="0" name="username" type="java.lang.String" value="dzzhyk"/>
<constructor-arg index="1" name="password" type="java.lang.String" value="123456"/>
<constructor-arg index="2" name="phones" type="java.util.List">
<list value-type="java.lang.String">
<value>123456789value>
<value>987654321value>
<value>135248912value>
list>
constructor-arg>
bean>
최종 획득 한 bean 대상 은 다음 과 같 습 니 다:
User{id='null', username='dzzhyk', password='123456', phones=[123456789, 123456789, 123456789]}
물론 여기 도 ref 를 사용 하여 다른 bean 으로 지정 할 수 있 습 니 다.
map 태그
전달 할 매개 변수 가 map 형식 이 라면 작업 도 대동소이 합 니 다.
사용자 대상 을 만 들 려 면 성적 대조 표를 입력 해 야 한다 고 가정 합 니 다.k 는 과목 이름 이 고 v 는 성적 이 며 다음 과 같은 구조 함수 가 있 습 니 다.
public User(String username, String password, Map<String, Integer> grades) {
this.username = username;
this.password = password;
this.grades = grades;
}
그러면 xml 를 설정 할 때 다음 과 같은 설정 을 할 수 있 습 니 다.
<bean id="user" class="pojo.User">
<constructor-arg index="0" name="username" type="java.lang.String" value="dzzhyk"/>
<constructor-arg index="1" name="password" type="java.lang.String" value="123456"/>
<constructor-arg index="2" name="grades" type="java.util.Map">
<map key-type="java.lang.String" value-type="java.lang.Integer">
<entry key=" " value="80"/>
<entry key=" " value="90"/>
<entry key=" " value="100"/>
map>
constructor-arg>
bean>
최종 획득 한 bean 대상 출력 은 다음 과 같 습 니 다:
User{id='null', username='dzzhyk', password='123456', grades={ =80, =90, =100}}
그 밖 에 set 태그,array 태그 도 있 습 니 다.모두 유사 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【eclipse】같은 파일을 2개 열고 싶다【에디터의 분할】「이런 것은 다른 클래스로 나누어야 한다!」라든지 있다고는 생각합니다만. 실제로 실무 속에서 프로그램을 쓰고 있으면, 이런 소스에 눈에 걸리는 일도 적지 않을까···. 그건 그렇고, 내 노트북에서 이렇게 보입니다 네...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.