文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Spring bean有哪几种注入方式

2023-06-20 16:38

关注

这篇文章主要讲解了“Spring bean有哪几种注入方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring bean有哪几种注入方式”吧!

目录

一、Set方式注入

pojo层:

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="wyh2"/>        <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层

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="wyh3"/>        <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层

@Componentpublic class Student3 {    @Value("wyh4")    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层

public class Student4 {    @Value("wyh5")    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

public interface StudentService1 {    void test();}

serviceImpl

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有哪几种注入方式”的内容了,经过本文的学习后,相信大家对Spring bean有哪几种注入方式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯