Spring Bean 의 기본 설정 에 대해 말씀 드 리 겠 습 니 다.
사용자 실체
@Data
//lombok
@AllArgsConstructor
lombok
@NoArgsConstructor
public class User {
private int id;
private String name;
private int age;
private String sex;
private String birthday;
}
beanFactory.xml
<bean id="user" class="edu.xalead.User">
<property name="id" value="1806"/>
<property name="name">
<value> </value>
</property>
<property name="sex" value=" "/>
<property name="age" value="18"/>
<property name="birthday" value="2000-1-1"/>
</bean>
1.1 set 의 두 가지 주입 방법우리 가 xml 파일 에 주입 할 때 우 리 는 이렇게 쓸 수 있다.
<property name="id" value="1806"/>
이렇게 쓸 수도 있다.
<property name="id">
<value>1806</value>
</property>
이것 은 별 차이 가 없 지만,우 리 는 일반적으로 전 자 를 사용한다.왜냐하면 코드 가 적 고 편리 해 보이 기 때문이다.코드 테스트:
@Test
public void test3(){
//
BeanFactory beanFactory = new ClassPathXmlApplicationContext("beanFactory.xml");
// UserServlet
User user = beanFactory.getBean(User.class);
System.out.println(user);
}
1.2 type 속성
일이 있 으 면 우 리 는 주입 할 때 가끔 type 을 볼 수 있다.
<property name="id">
<value type="int">1806</value>
</property>
이것 은 하나의 형식 성명 에 해당 합 니 다.value 가 어떤 종류의 데이터 인지 설명 한 다음 에 형식 변환 기 를 호출 하여 우리 가 쓴 문자열 을 우리 가 정의 하 는 형식 으로 변환 합 니 다.그러나 이것 은 불필요 한 것 이다.우리 가 주입 할 때 User 대상 을 통 해 반사 되 어 어떤 유형 인지 알 수 있다.1.3 Date()형식의 주입
그러나 일부 특수 한 유형 은 Spring 에 없 는 것 이다.우리 가 스스로 정의 해 야 한다.예 를 들 어 Date 유형 은 우리 가 이렇게 쓰 면 잘못 보고 할 것 이다.
private Date birthday;
<property name="birthday" value="2000-1-1"/>
Spring 은 이것 이 없 는 변환기 입 니 다.문자열 을 Date 형식 으로 변환 하기 때문에 사실 우 리 는 String 으로 직접 쓰 거나 new Date()를 쓸 수 있 습 니 다.그러나 후 자 는 제약 성 이 너무 커서 우리 가 원 하 는 날 짜 를 얻 지 못 하고 전자 가 편리 합 니 다.
2.Springscop
우리 가 테스트 사례 에서 두 개의 User 인 스 턴 스 를 만 들 때 검 사 를 한 결과 이 두 개의 인 스 턴 스 는 사실 하나 이다.
BeanFactory beanFactory = new ClassPathXmlApplicationContext("beanFactory.xml");
// UserServlet
User user = beanFactory.getBean(User.class);
User user1 = beanFactory.getBean(User.class);
System.out.println(user == user1);
만약 우리 가 여러 가지 모드 를 만 들 려 면 속성 scope 에 사용 해 야 합 니 다.
scope 속성 은 두 개의 값 이 있 습 니 다:
1.singleton(기본 적 인 상황 에서 단일 모드)
2.prototype(다 중 모드)
<bean id="user" class="edu.xalead.User" scope="prototype">
저희 가 테스트 를 하고 있 는데 정 답 은 false 입 니 다.3.자동 주입(autowire)
저 희 는 userServlet 에 userDao 를 주입 합 니 다.
<bean id="userDao" class="edu.xalead.UserDao"></bean>
<bean id="userServlet" class="edu.xalead.UserServlet">
<property name="userDao" ref="userDao"/>
</bean>
그러나 사실 우 리 는 이렇게 쓸 필요 가 없다.Bean 에서 you 가 자동 으로 주입 하 는 속성 autowire 는 두 가지 값 이 있다.1.byName,이름 에 따라 주입,즉 id="userDao"
<bean id="userDao" class="edu.xalead.UserDao"></bean>
<bean id="userServlet" class="edu.xalead.UserServlet" autowire="byName"/>
2.by Type,유형 에 따라 주입,유형 주입 에 한계 가 있 습 니 다.같은 유형 은 하나만 주입 할 수 있 습 니 다.많 으 면 보고 하 는 것 이 유일한 오류 가 아 닙 니 다.
<bean id="userDao" class="edu.xalead.UserDao"></bean>
<bean id="userServlet" class="edu.xalead.UserServlet" autowire="byType">
4.구조 주입
<!-- User , constructor-arg -->
<bean id="user" class="edu.xalead.User">
<constructor-arg value="1111"/>
<constructor-arg value="zhangsan"/>
<constructor-arg value="20"/>
<constructor-arg value="M"/>
</bean>
구조 주입 과 set 주입 의 차이 점 은 요 소 를 넣 는 순서 가 당신 이 만 든 실체(User)류 와 같 아야 한 다 는 것 입 니 다.다 르 면 오 류 를 보고 할 수 있 습 니 다.반 사 된 유형 과 변환기 전환 의 유형 이 다 르 기 때문에 이 럴 때 우 리 는 다른 속성 index 를 추가 해 야 합 니 다.
<!-- User , constructor-arg -->
<bean id="user" class="edu.xalead.User">
<constructor-arg value="M" index="3"/>
<constructor-arg value="zhangsan" index="1"/>
<constructor-arg value="1111"/ index="0">
<constructor-arg value="20" index="2"/>
</bean>
그럼 언제 구조 주입 을 사용 합 니까?우리 가 스스로 구조 함 수 를 정의 할 때 구조 주입 을 사용한다.
public class User {
private int id;
private String name;
private int age;
private String sex;
private String birthday;
//
public User(int id , String name){
this.id = id;
this.name = name;
}
}
<bean id="user" class="edu.xalead.User">
<constructor-arg value="18"/>
<constructor-arg value=" "/>
</bean>
이 럴 때 set 주입 을 사용 할 수 없습니다.그 는 잘못 보고 할 것 입 니 다.설령 당신 이 전 삼 구조 함 수 를 써 도 안 됩 니 다.5.Array 주입(배열 주입)
private String[] photos;
<property name="photos">
<array>
<value>1.jpg</value>
<value>2.jpg</value>
<value>3.jpg</value>
</array>
</property>
6.List 주입
private List<String> list;
<property name="list">
<list>
<value>a</value>
<value>b</value>
<value>c</value>
</list>
</property>
7.세트 주입
private Set<String> set;
<property name="set">
<set>
<value>a</value>
<value>b</value>
<value>c</value>
</set>
</property>
8.지도 주입
private Map<Integer,String> map
<property name="map">
<map>
//
<entry key="1" value="a"/>
//
<entry key="2">
<value>b</value>
</entry>
<entry key="3" value="c"/>
</map>
</property>
9.부동산 주입
private Properties prop;
<property name="prop">
<props>
<prop key="4432">42341231</prop>
<prop key="54353">5464564</prop>
<prop key="9865">2659846</prop>
</props>
</property>
Spring Bean 의 기본 설정 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.Spring Bean 에 관 한 더 많은 설정 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.