自动装配
autowired=""
- byName:会自动在容器上下文中找,和自己全限定名路径下的set方法后面的值对应的bean的ID
- byType:会自动在容器上下文中找,和自己对象属性(比如在people类文件中,有以下内容,即为属性),类型相同的bean的ID
public class people{
private Cat cat;
pricate Dog dog;
}
自动装配的注解实现
- @Nullable 表明这个属性可以为null
- @Autowired Required属性默认true,如果手动的设置为false,说明这个对象可以为null,否则不允许为空
- @Qualifier(value=“dog222”)//显式的将一个属性和Ioc容器中的一个id为dog222的bean绑定
- private Dog dog;
- 用该注解配合@Autowired去使用
- @Primary
- @Resource:Java的注解,没有spring高级
- 先通过名字去查找
- 再通过类名去查找
- @Resource(name=“cat1”)
- private Cat cat;
导入注解支持(开启Ioc自动装配的注解)
<context:annotaion-config/>
<bean id="people" class="com.simon.entity.People"/>
<bean id="dog" class="com.simon.entity.Dog"/>
<bean id="cat" class="com.simon.entity.Cat"/>
@Autowired
-
在属性上用
-
或者在set方法上使用
public class people{
@Autowired
@Qualifier(value="cat333")
private Cat cat;
@Autowired
@Qualifier(value="dog222")
pricate Dog dog;
}
Spring注解开发(必须保证aop的包导入)
bean
指定要扫描的包
<context:component-scan base-package="com.simon.entity"/>
开启注解支持
<context:annotation-config/>
@Conponent
-
添加在类名上
-
等价于
<bean id="user" class="com.simon.entity.User">
属性的注入
@Value
@Component
public class User{
@Value("Simon")
public String name;
}
-
相当于
<bean id="user" class="com.simon.entity.User"> <property name="name" value="Simon"/> </bean>
衍生的注解
- @Component
- @Repository 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Dao层
- @Servcie 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Servcie层
- @Controller 与@Component功能一样,都会在Spring容器中注册为一个Bean,一般用在Controller层
自动装配(见上面)
作用域
@Scope
@Scope("singleton")
public class User{
}
小结
-
xml更加万能,适用于任何场合
-
注解—不是自己的类用不了,维护相对复杂,需要一个个文件的点进去查看
-
最佳实现
- xml用来管理bean
- 注解只用来属性注入
使用注解,需要开启注解支持
指定要扫描的包
<context:component-scan base-package="com.simon.entity"/>
开启注解支持
<context:annotation-config/>