Spring Bean常用依赖注入方式详解
一般而言,Spring的依赖注入有三种:构造器注入、setter注入以及接口注入。本文主要讲构造器注入与setter注入。
1、构造器注入
为了让Spring完成构造器注入,我们需要去描述具体的类、构造方法并设置构造方法的对应参数。
代码如下:
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; } public Role() { } public void run() { System.out.println("roleName:" + roleName + ";" + "note:" + note); } }
这个时候是没有办法利用无参的构造方法去创建对象的,为了使Spring能正确创建这个对象,需要在xml文件中加入如下bean:
<bean id="role1" class="com.ssm.chapter.pojo.Role"> <constructor-arg index="0" value="总经理" /> <constructor-arg index="1" value="公司管理者" /> </bean>
其中,constructor-arg元素用于定义类构造方法的参数,index用于定义参数的位置,而value是设置值,通过这样定义spring便知道使用Role(String, String)这样的构造方法去创建对象了。
2、使用setter注入
setter注入是Spring最主流的注入方式,它消除了使用构造器注入多个参数的可能性,可以把构造参数声明为无参的,然后使用setter注入为其设置对应的值。需要注意的是,如果类中没有构造函数,JVM会默认创建一个无参构造函数。xml代码清单如下:
<bean id="role2" class="com.ssm.chapter.pojo.Role" > <property name="roleName" value="高级工程师" /> <property name="note" value="重要人员" /> </bean>
接着编写测试类即可:
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-cfg.xml");
Role role = (Role) ctx.getBean("role2");
role.run();
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
JVM默认时区为:Asia/Shanghai与java程序中GMT+08不一致异常
这篇文章主要介绍了JVM默认时区为:Asia/Shanghai与java程序中GMT+08不一致异常问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-10-10Spring Boot配置文件的语法规则详解(properties和yml)
这篇文章主要介绍了Spring Boot配置文件的语法规则,主要介绍两种配置文件的语法和格式,properties和yml,对于配置文件也有独立的文件夹存放,主要用来存放一些需要经过变动的数据(变量值),感兴趣的朋友跟随小编一起看看吧2024-07-07IDEA将Maven项目中指定文件夹下的xml等文件编译进classes的方法
这篇文章主要介绍了IDEA将Maven项目中指定文件夹下的xml等文件编译进classes的方法,帮助大家更好的利用IDEA进行Java的开发学习,感兴趣的朋友可以了解下2021-01-01springboot扫描自定义的servlet和filter代码详解
本文是一篇根据作者工作经历总结出来的关于springboot扫描自定义的servlet和filter代码详解的文章,小编觉得非常不错,这里给大家分享下,和朋友们一起学习,进步。2017-10-10
最新评论