码迷,mamicode.com
首页 > 编程语言 > 详细

sbs spring

时间:2018-01-21 22:35:03      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:col   ber   str   匹配   setter   create   构造函数   lan   pos   

ioc的三种类型

构造函数注入

属性注入

接口注入

spring的注入类型

构造函数注入

属性注入

工厂方法注入

属性注入

<!-- 通过属性注入 -->
<bean id="user" class="com.laolang.sstudy.ioc.domain.User">
    <property name="id" value="1001" />
    <property name="age" value="23" />
    <property name="name" value="laolang" />
</bean>

 

根据JavaBean关于属性命名的特殊规范,变量的前两个字母要么全部大写,要么全部小写

要提供相应的setter方法

构造函数注入

构造函数

public User(Long id, String name, Integer age) {
    this.id = id;
    this.name = name;
    this.age = age;
}

 

按类型匹配入参

<!-- 按类型匹配入参 -->
<bean id="user2" class="com.laolang.sstudy.ioc.domain.User">
    <constructor-arg type="java.lang.Long">
        <value>1001</value>
    </constructor-arg>
    <constructor-arg type="java.lang.String">
        <value>xiaodaima</value>
    </constructor-arg>
    <constructor-arg type="java.lang.Integer">
        <value>23</value>
    </constructor-arg>
</bean>

 

按索引匹配入参

<!-- 按索引匹配入参 -->
<bean id="user3" class="com.laolang.sstudy.ioc.domain.User">
    <constructor-arg index="0" value="1001" />
    <constructor-arg index="1" value="tianya" />
    <constructor-arg index="2" value="23" />
</bean>

 

联合使用类型和索引匹配入参

如果有两个构造函数的入参数目相同,则可以同时使用类型和索引匹配

 

public Student(Long id, String name, Integer age) {
    this.id = id;
    this.name = name;
    this.age = age;
}

public Student(Long id, String name, Long number) {
    this.id = id;
    this.name = name;
    this.number = number;
}

 

 

    <!-- 联合使用类型和索引匹配入参 -->
    <bean id="student" class="com.laolang.sstudy.ioc.domain.Student">
        <constructor-arg index="0" type="java.lang.Long">
            <value>1001</value>
        </constructor-arg>
        <constructor-arg index="1" type="java.lang.String">
            <value>student</value>
        </constructor-arg>
        <constructor-arg index="2" type="java.lang.Integer">
            <value>23</value>
        </constructor-arg>
    </bean>
    <bean id="student2" class="com.laolang.sstudy.ioc.domain.Student">
        <constructor-arg index="0" type="java.lang.Long">
            <value>1001</value>
        </constructor-arg>
        <constructor-arg index="1" type="java.lang.String">
            <value>student</value>
        </constructor-arg>
        <constructor-arg index="2" type="java.lang.Long">
            <value>14061001</value>
        </constructor-arg>
    </bean>

 

工厂方法注入

非静态工厂方法

工厂

package com.laolang.sstudy.ioc.factory;

import com.laolang.sstudy.ioc.domain.Student;

public class StudentFactory {

    public Student createStudent(){
        Student student = new Student();
        student.setId(1001L);
        student.setAge(23);
        student.setName("student by factory without param");
        student.setNumber(14061001L);
        return student;
    }

    public Student createStudent( Long id , String name){
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        return student;
    }
}

 

 

xml

<!-- 非静态工厂方法 -->
<!-- 工厂类 bean -->
<bean id="studentFactory" class="com.laolang.sstudy.ioc.factory.StudentFactory" />
<!--
    factory-bean : 指定工厂类bean
    factory-method : 指定创建 bean 的方法
-->
<bean id="student3" factory-bean="studentFactory" factory-method="createStudent" />
<!-- 带参数的工厂方法 -->
<bean id="student4" factory-bean="studentFactory" factory-method="createStudent">
    <constructor-arg index="0" value="1001" />
    <constructor-arg index="1" value="student by factory with param" />
</bean>

 

静态工厂方法

工厂

package com.laolang.sstudy.ioc.factory;

import com.laolang.sstudy.ioc.domain.Student;

public class StudentStaticFactory {

    public static Student createStudent(){
        Student student = new Student();
        student.setId(1001L);
        student.setAge(23);
        student.setName("student by static factory without param");
        student.setNumber(14061001L);
        return student;
    }

    public static Student createStudent( Long id , String name){
        Student student = new Student();
        student.setId(id);
        student.setName(name);
        return student;
    }
}

 

xml

<!-- 静态方法工厂 无参-->
<bean id="student5" class="com.laolang.sstudy.ioc.factory.StudentStaticFactory" factory-method="createStudent" />
<!-- 静态方法工厂 带参-->
<bean id="student6" class="com.laolang.sstudy.ioc.factory.StudentStaticFactory" factory-method="createStudent" >
    <constructor-arg index="0" value="1001" />
    <constructor-arg index="1" value="student by static factory with param" />
</bean>

 

sbs spring

标签:col   ber   str   匹配   setter   create   构造函数   lan   pos   

原文地址:https://www.cnblogs.com/khlbat/p/8325668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!