1.Bean的自动装配
- 在xml中显示配置
<bean id="dog" class="com.csf.pojo.Dog"></bean>
<bean id="cat" class="com.csf.pojo.Cat"></bean>
<bean id="people" class="com.csf.pojo.People">
<property name="cat" value="cat"></property>
<property name="dog" value="dog"></property>
</bean>
2.Java中配置
3隐式的自动装配bean
- ByName的自动装配
byname的时候,需要保证所有bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值(SET方法后面跟着的名字)一致!
<bean id="people" class="com.csf.pojo.People" autowire="byName"></bean>
- ByType的自动装配
. bytype的时候,需要保证所有bean的jd唯一,并且这个bean需要和自动注入的属性的set方法的值一致!
<bean id="people" class="com.csf.pojo.People" autowire="byType"></bean>
使用注解开发
- 导入约束
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>
- @Autowired
直接在字段上使用即可,set方法上也可。 它是通过ByType实现,当多个类型时搭配 @Qualifier(value =
“beanid”)
@Autowired
private Dog dog;
- @Nullable
–属性可为空
- @Resource【重点】
默认通过byname的方式实现,如果找不到名字,则通过byType实现!如果两个都找不到的情况下,就报错!【常用】
- @Component
相当于bean id=“user” class=“User”
组件,放在类上,说明此类被spring管理,也就是个bean了,通过getbean(“类的小写”)获得
1. 赋值:
1. @Value("秦将")
private String name;
2. @Value("qq")
public void setName(String name) {
this.name = name;
}
2.@ Component衍生注解
- dao【@Repository】
- service【@Service】
- controller【@Controller】
3.作用域
@Scope
singleton,prototype,request,session,
4.小结
- xml 与注解:
o xml更加万能,适用于任何场合!维护简单方便。
o 注解不是自己类使用不了,
o维护相对复杂!
- xml与注解最佳实践:
o xml 用来管理bean;
o 注解只负责完成属性的注入;
o 我们在使用的过程中,只需要注意一个问题:必须让注解生效,就需要开启注解的支持