2 스프링 학습 개체를 만들 수있는 봄

스프링 방식의 객체를 생성하는

인수 없음의 생성자를 통해 객체를 생성 (1)

pojo 류

public class User2 {
    private String name;
    public User2(){
        System.out.println("user2 的无参构造函数");
    }
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User2{" +
                "name='" + name + '\'' +
                '}';
    }
}

XML

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--通过无参构造函数创建对象-->
    <bean id="user2" class="com.cong.pojo.User2">
        <property name="name" value="cong2"/>
    </bean>
</beans>

테스트 카테고리

    @Test
    public void test2(){
        //通过无参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 user = (User2) context.getBean("user2");
System.out.println(user);
    }

찾을 수 있습니다 결과는 인수가없는 생성자를 호출

user2 的无参构造函数
User2{name='cong2'}

생성자는 매개 변수가 통해 객체를 생성합니다

pojo 류

public class User3 {
    private String name;
    public User3(){
        System.out.println("user3 的无参构造函数");
    }
    public User3(String name){
        this.name = name;
        System.out.println("user3 的有参构造函数");
    }
    @Override
    public String toString() {
        return "User3{" +
                "name='" + name + '\'' +
                '}';
    }
}

세 쓰기 XML이 있습니다

    <!--1.下标赋值-->
    <bean id="user31" class="com.cong.pojo.User3">
        <constructor-arg index="0" value="cong31"/>
    </bean>
    <!--2.类型赋值,不建议使用-->
    <bean id="user32" class="com.cong.pojo.User3">
        <constructor-arg type="java.lang.String" value="cong32"/>
    </bean>
    <!--3.直接通过参数名设置,推荐-->
    <bean id="user33" class="com.cong.pojo.User3">
        <constructor-arg name="name" value="cong33"/>
    </bean>

테스트 카테고리

    @Test
    public void test3(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User3 user = (User3) context.getBean("user31");
        System.out.println(user);
    }

결과적으로 볼 수 있습니다

user3 的有参构造函数
User3{name='cong31'}

결론 : 구성 파일로드 시간에. 어떤 관리 객체가 초기화됩니다!

객체를 생성하기 위해 공장을 확장

1, 일반 공장은 객체를 생성합니다

객체 생성 실제 개발은 때때로 공장 클래스의 사용 방법의 일반적인를 작성하는 다른 사람을 사용 (클래스에서 사용할 개체를 만들고, 봄의 용기에에),이 클래스는 단지 패키지에있을 수 우리는 수정되지 않습니다

아날로그 공장 클래스

public class User2Factory {
    public User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

XML

    <bean id="factory" class="com.cong.pojo.User2Factory"/>
    <!--模拟工程创建对象-->
    <bean id="userByFactory" factory-bean="factory" factory-method="getUser2"/>

테스트

    //模拟工厂创建对象
    @Test
    public void test4(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByFactory = (User2) context.getBean("userByFactory");
        System.out.println(userByFactory);
    }

2, 정적 공장은 개체를 만듭니다

(a 클래스의 정적 메소드를 사용하여 객체를 생성하고, 스프링 용기에까지) 식물의 정적 메소드를 사용하여 객체를 만들기

정적 시뮬레이션 프로젝트

public class StaticFactory {
    public static User2 getUser2(){
        User2 user2 = new User2();
        user2.setName("userByFactory");
        return user2;
    }
}

XML

    <!--模拟静态工长创建对象-->
    <bean id="userByStaticFactory" class="com.cong.pojo.StaticFactory" factory-method="getStaticUser2"/>

테스트

    //模拟静态工厂创建对象
    @Test
    public void test5(){
        //通过有参构造函数创建对象
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        User2 userByStaticFactory = (User2) context.getBean("userByStaticFactory");
        System.out.println(userByStaticFactory);
    }

추천

출처www.cnblogs.com/ccoonngg/p/12026743.html