栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

依赖注入实现bean装配进Spring Ioc容器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

依赖注入实现bean装配进Spring Ioc容器

1、构造器注入

(1)创建实体类

package com.ssm.spring.pojo;

public class Role {
    private Long id;
    private String roleName;
    private String note;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public Role(String roleName, String note) {
        this.roleName = roleName;
        this.note = note;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + ''' +
                ", note='" + note + ''' +
                '}';
    }
}

可以看到实体类中的构造函数是有参构造函数,不能用无参构造函数创建对象。

(2)使用构造器注入的配置

    
        
        
    

id:bean的名字 

class:实体类的位置

constructor-arg:用于定义类构造方法的参数,index为参数的位置(从0开始)value为参数的值。

(3)编辑测试代码测试

    @Test
    public void test6(){
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-cfg.xml");
        Role role1 = (Role) ctx.getBean("role1");
        System.out.println(role1);
        ctx.close();
    }

使用getbean获取id=role1的bean实例,输出该实例,输出结果如下,依赖注入成功。

2、setter注入

setter注入是Spring中最主流的注入方式,该方法是由Bean中所定义的setter方法实现的。

实现:首先把Bean中的构造参数声明为无参参数,然后通过setter注入,设置对应的值。这一步相当于首先使用无参构造函数初始化,然后使用setter方法对参数设置值。

(1)实体类代码

package com.ssm.spring.pojo;

public class Role {
    private Long id;
    private String roleName;
    private String note;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + ''' +
                ", note='" + note + ''' +
                '}';
    }
}

与构造方法注入的区别在于该实体类使用的无参构造函数

 (2)使用setter的配置

    
        
        
    

property元素中name为bean中的属性(属性指set方法中的那个名字,例如setName()则属性为name,不是成员变量名字!不是成员变量名字!不是成员变量名字!虽然他们大部分情况下一样)

value : 属性值

(3)测试代码测试

    @Test
    public void test6(){
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("spring-cfg.xml");
        Role role1 = (Role) ctx.getBean("role1");
        System.out.println(role1);
        ctx.close();
    }

测试结果如下

测试成功

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号