(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(); }
测试结果如下
测试成功
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)