05-spring-构造注入
Posted 美好的明天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了05-spring-构造注入相关的知识,希望对你有一定的参考价值。
spring中只有两大核心技术:
控制反转(IOC)&依赖注入(DI),AOP(面向切面编程)
依赖注入
指利用配置文件的关系,来决定类之间的引用关系,以及数据的设置操作。
构造方法注入
默认在applicationContext文件中配置的程序都可以自动通过spring容器加载时自动对对象实例化。
但是自动进行初始化的时候,调用的是类中的无参构造方法,而且通过反射机制可以知道,无参构造方法一定比有参构造方法的实例化更容易。
但是spring简化了反射的处理机制。利用spring中的动态的特性可以直接明确调用构造方法参数。
构造注入之前的文章已经有了,这里只补充前面没有的内容。
除了有之前的通过index,参数类型配置bean。
还能使用参数名称描述构造方法
Dept类:
package com.Spring.Demo; import java.beans.ConstructorProperties; public class Dept { private Integer deptno; private String name; @ConstructorProperties(value={"paramDeptno","paramDeptName"}) public Dept(Integer deptno, String name) { this.deptno = deptno; this.name = name; } @Override public String toString() { return "Dept [deptno=" + deptno + ", name=" + name + "]"; } }
调用这个方法:
package com.Spring.Demo; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestDept { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); Dept dept=ctx.getBean("dept",Dept.class); System.out.println(dept); } }
Dept.java类 设置参数名称:
@ConstructorProperties(value={"paramDeptno","paramDeptName"}) public Dept(Integer deptno, String name) { this.deptno = deptno; this.name = name; }
也就是说设置的时候可以使用paramDeptno来代替索引0,paramDeptName代替索引1。
利用参数名称进行设置:
<bean id="dept" class="com.Spring.Demo.Dept"> <constructor-arg name="paramDeptno" value="10" ></constructor-arg> <constructor-arg name="paramDeptName" value="开发部门" ></constructor-arg> </bean>
真使用构造方法,还是使用参数的类型和顺序编写比较方便。
以上是关于05-spring-构造注入的主要内容,如果未能解决你的问题,请参考以下文章
以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段