Spring 注入的两种方式
Spring 的两种注入方式:
1. 属性注入:通过无参构造函数+setter方法注入
2. 构造注入:通过有参的构造函数注入。
优缺点:
1. 属性注入直白易懂,缺点是对于属性可选的时候,很多个构造函数会显得类很臃肿。
2. 构造注入是一种高内聚的体现,特别是针对有些属性需要在对象在创建时候赋值,且后续不允许修改(不提供setter方法)。无参构造方法也不能省略。
不是构造的就是用属性注入的方法。上一篇博客就是属性注入。
构造的例子:
public class HelloSpring { private String name;//定义变量who 他的值通过Spring框架进行注入 //构造注入 public HelloSpring() { } public HelloSpring(String name) { this.name = name; } @Override public String toString() { return "HelloSpring{" + "name='" + name + '\'' + '}'; } }
ApplicationContext.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--构造注入--> <bean id="HelloSpring" class="cn.kitty.bean.HelloSpring" > <constructor-arg index="0" value="kitty"></constructor-arg> </bean> </beans>
test
public class Test201710059 { @Test public void Test201710059(){ ApplicationContext context=new ClassPathXmlApplicationContext("ApplicationContext.xml"); HelloSpring spring = (HelloSpring) context.getBean("HelloSpring"); System.out.println(spring); } }