Spring bean 四种注入方式详解

目录一、Set方式注入pojo层:1.xml 文件test测试二、构造函数方式注入pojo层2.xml文件test测试三、注解注入pojo层3.xml文件test测试四、JavaConfig 方式注入pojo层JavaConfig 类xml文件 扫描包测试:五、Service层注入详解serviceserviceImplxml配置文件总结

一、Set方式注入

pojo层:

/** * @Author: crush * @Date: 2021-06-17 16:57 * version 1.0 * xml 配置注入版本  set 方式 */public class Student1 {    public String name;    public String school;    public void setName(String name) {        this.name = name;    }    public void setSchool(String school) {        this.school = school;    }    @Override    public String toString() {        return "Student1{" +                "name='" + name + '\'' +                ", school='" + school + ''' +                '}';    }}

1.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 http://www.springframework.org/schema/beans/spring-beans.xsd">    <!--set方式注入        id是注入bean中的名字        class 是全限定类名        property 是按照set方式注入    -->    <bean id="student1" class="com.crush.pojo.Student1">        <property name="name" value="wyh1"/>        <property name="school" value="hngy1"/>    </bean></beans>

test测试

 @Test    public void student1(){        ApplicationContext context = new ClassPathXmlApplicationContext("student1.xml");        Student1 student1 = context.getBean("student1", Student1.class);        System.out.println(student1);    }

二、构造函数方式注入

pojo层

/** * @Author: crush * @Date: 2021-06-17 17:02 * version 1.0 * xml 配置 构造函数方式注入 */public class Student2 {    private String name;    private String school;    public Student2(String name, String school) {        this.name = name;        this.school = school;    }    @Override    public String toString() {        return "Student2{" +                "name='" + name + '\'' +                ", school='" + school + ''' +                '}';    }}

2.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 http://www.springframework.org/schema/beans/spring-beans.xsd">    <!--set方式注入        id是注入bean中的名字        class 是全限定类名        constructor 是按照构造方式注入        index 是按照成员变量在构造函数中的参数的第几个        name 表示成员变量名        type 表示类型        value 表示值        ref 表示引用 可引用另外一个注入到Spring的中的值    -->    <bean id="student2" class="com.crush.pojo.Student2">        <constructor-arg index="0"  name="name" type="java.lang.String" value="wyh2"/>        <constructor-arg name="school" value="hngy2"/>    </bean></beans>

test测试

   @Test    public void student2(){        ApplicationContext context = new ClassPathXmlApplicationContext("student2.xml");        Student2 student2 = context.getBean("student2", Student2.class);        System.out.println(student2);    }

三、注解注入pojo层

/** * @Author: crush * @Date: 2021-06-17 17:08 * version 1.0 */@Componentpublic class Student3 {    @Value("wyh3")    private String name;    @Value("hngy3")    private String school;    @Override    public String toString() {        return "Student3{" +                "name='" + name + '\'' +                ", school='" + school + ''' +                '}';    }}

3.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"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">    <!--注解方式注入        需要扫描注解在的包 注解才会生效    -->    <context:component-scan base-package="com.crush.pojo"/></beans>

test测试

   @Test    public void student3(){        ApplicationContext context = new ClassPathXmlApplicationContext("student3.xml");        Student3 student3 = context.getBean("student3", Student3.class);        System.out.println(student3);    }

四、JavaConfig 方式注入pojo层

/** * @Author: crush * @Date: 2021-06-17 17:16 * version 1.0 * JavaConfig 配置 */public class Student4 {    @Value("wyh4")    private String name;    @Value("hngy4")    private String school;    @Override    public String toString() {        return "Student4{" +                "name='" + name + '\'' +                ", school='" + school + ''' +                '}';    }}

JavaConfig 类

@Configurationpublic class Student4Config {    @Bean    public Student4 student4(){        return new Student4();    }}

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"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">    <context:component-scan base-package="com.crush.config"/></beans>

测试:

    @Test    public void student4(){        ApplicationContext context = new ClassPathXmlApplicationContext("student4.xml");        Student4 student4 = context.getBean("student4", Student4.class);        System.out.println(student4);    }

五、Service层注入详解

service

/** * @Author: crush * @Date: 2021-06-17 17:27 * version 1.0 * xml 配置 */public interface StudentService1 {    void test();}

serviceImpl

/** * @Author: crush * @Date: 2021-06-17 17:29 * version 1.0 * xml 配置 */public class StudentService1Impl implements StudentService1{    @Override    public void test() {        System.out.println("===StudentDao1Impl===");    }}

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 http://www.springframework.org/schema/beans/spring-beans.xsd">    <bean id="studentService1" class="com.crush.dao.StudentService1" /></beans>

总结

本篇文章就到这里了,希望能给你带来帮助,也希望能够您能够关注的更多内容!

更有一种逍遥,浑然忘我,与大自然交融的境界令人心弛神往。

Spring bean 四种注入方式详解

相关文章:

你感兴趣的文章:

标签云: