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

依赖注入实现bean装配进Spring Ioc容器,第1张

依赖注入实现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();
    }

测试结果如下

测试成功

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5708086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存