spring构造器注入

来源:互联网 发布:同志手机聊天软件 编辑:程序博客网 时间:2024/05/20 10:15

spring set注入请看:http://blog.csdn.net/luckey_zh/article/details/46674113

一、声明一个简单的bean

直接来个角色bean

public class Roles {private int id;private String roleName;public Roles() {}public Roles(int id,String roleName) {this.id=id;this.roleName = roleName;}@Overridepublic String toString() {return "Users [id=" + id + ", name=" + roleName + "]";}}
spring配置
<bean id="roles" class="cn.com.ztz.spring.model.Roles"><constructor-arg value="1"/><constructor-arg value="管理员"/></bean>

在运行我们的测试方法

public class SpringTest {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");Roles u = (Roles)context.getBean("roles");System.out.println(u.toString());}}

得到的结果是:

Users [id=1, name=管理员]


我们可以看出来,我没有是去实例化Roles,也没有set方法。实际上spring给我们去实例化了,<constructor-arg/>给我们bean赋值了。

在实际开发中,角色下面肯定会有用户,现在我们引入用户bean

public class Roles {private int id;private String roleName;//用户private Users users;public Roles() {}public Roles(int id,String roleName,Users users) {this.id=id;this.roleName = roleName;this.users=users;}//重写toString方法,方便测试@Overridepublic String toString() {return "Roles [id=" + id + ", roleName=" + roleName + ", users="+ users + "]";}}
用户bean

public class Users {private int id;private String name;public Users(){}public Users(int id, String name) {this.id = id;this.name = name;}@Overridepublic String toString() {return "Users [id=" + id + ", name=" + name + "]";}}

spring配置

<bean id="roles" class="cn.com.ztz.spring.model.Roles"><constructor-arg value="1"/><constructor-arg value="管理员"/><constructor-arg ref="users"/></bean><bean id="users" class="cn.com.ztz.spring.model.Users"><constructor-arg value="2"/><constructor-arg value="张三"/></bean>

运行测试方法,得到结果:

Roles [id=1, roleName=管理员, users=Users [id=2, name=张三]]


下面这个在Roles里面引入Users,在spring里面就要用<constructor-arg ref="users"/>去关联Users。

总结:构造器注入虽然很方便,但是在开发中有很多弊端,比如我不想注入某个字段,怎么办。所以,在用的时候看业务在去用具体方法。


博主表述不太好,见谅



2 0
原创粉丝点击