1、控制反转
将控制权赋予他人;
spring创建对象;
package x.y;
public class ThingOne {
public ThingOne(ThingTwo thingTwo, ThingThree thingThree) {
// ...
}
}
通过xml等文件获取需要创建的对象名称、属性
二、依赖注入
1、构造器注入
构造器赋值
value用来赋值;
ref来指定自定义的类对象
A short-cut alternative to a nested "<ref bean='...'/>".
<beans>
<bean id="beanOne" class="x.y.ThingOne">
<constructor-arg ref="beanTwo"/>
<constructor-arg ref="beanThree"/>
</bean>
<bean id="beanTwo" class="x.y.ThingTwo"/>
<bean id="beanThree" class="x.y.ThingThree"/>
</beans>
2、set注入
依赖:bean对象的创建依赖容器
注入:bean对象中所有属性,由容器来注入
调用无参数构造函数或无参数静态工厂方法来实例化bean。
3、扩展方式注入
p标签,注入属性
c标签:注入构造器参数
XML:扩展标记语言
alias 别名
4、自动装配bean
1、sutowire="byName"/"byType" 通过id自动找需要的引用数据类型;
2、使用注解(反射调用)
@Required 避免 NullPointerException
@Autowired可以注解在set方法、构造器、属性
public class People {
@Autowired(required = false)//表示属性可以为null
private Cat cat;
@Autowired
private Dog dog;
private String name;
public Cat getCat() {
return cat;
}
public Dog getDog() {
return dog;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "People{" +
"cat=" + cat +
", dog=" + dog +
", name='" + name + '\'' +
'}';
}
}
@Autowired通过byType的方式实现,
@Qualifier通过name 实现。
@Resource默认通过by name实现,if can‘t find ,则byType;
springmvc