Spring Bean 의 기본 설정 에 대해 말씀 드 리 겠 습 니 다.

1.Spring 에서 set 방법의 주입
사용자 실체

@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 에 관 한 더 많은 설정 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기