使用注解
一、@Autowired @Qualifier @Resource使用步骤:
- 在spring配置文件中引入context约束
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
- 开启属性注解支持!
<context:annotation-config/>
二、@Component @value @Controller @Service @Repository使用步骤:
- 引入aop的包
- 在spring配置文件中引入context约数
xmlns:context="http://www.springframework.org/schema/context"
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
- 指定注解扫描包
<context:component-scan base-packag="包名"/>
Spring用于属性注入的注解
- @Autowired
@Autowired是按类型自动转配的,不支持id匹配。
注解中有required属性,默认为true。当属性值为true时对象必须存在,不能为null。
当bean对象中出现不同的id对应同一个类的时候使用该注解会出错。
需要导入spring-aop的包!
public class User{
//要想可以通过@Autowired注解自动导入,则一定要将Cat这个类交给Spring管理。
@Autowired(required=“true/false”)
private Cat cat;
}
<bean id="cat" class="com.cn.Cat"/>
- @Qualifier
@Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配
@Qualifier不能单独使用
<bean id="cat1" class="com.cn.Cat"/>
<bean id="cat2" class="com.cn.Cat"/>
此时如果只使用@Autowired注解会出现错误,需要@Qualifier注解与@Autowired一同使用
public class User{
@Autowired
@Qualifier(value = "cat1")
private Cat cat;
}
- @Resource
@Resource如有指定的name属性,先按照该属性进行byName方式查找装配;
其次再进行默认的byName方式进行装配;
如果上述都不成功,则按byType的方式进行自动装配。
都不成功则报异常。
实体类:
public class User{
@Resource(name="cat2")
private Cat cat;
}
配置文件:
<bean id="cat1" class="com.cn.Cat"/>
<bean id="cat2" class="com.cn.Cat"/>
测试可以成功
配置文件2:删除cat2
<bean id="cat1" class="com.cn.Cat"/>
实体类上只保留注解
public class User{
@Resource
private Cat cat;
}
测试可以成功
结论:先进行byName查找,失败;再进行byType查找,成功。
- @Value(“值")
可以在set方法上注入,也可以在属性上注入。
public class User{
//相当于配置文件中的<property name=”name“ value=”cc“/>
@Value("cc")
public String name;
}
Spring用于Bean实现的注解
@Component
使用该注解就相当于将这个类交给Spring管理装配
//相当于配置文件中<bean id="user" class="当前注释类">
@Component("user")
public class User{
public String name = "cc";
}
@Component 三个衍生注解(和该注解是同一个作用)
@Controller:web层
@Service:service层
@Repository:dao层
其他常用注解
@Configuration
代表这是一个配置类
@Import(类名.class)
导入合并其他配置类,类似于配置文件中的include标签
@Configuration
@Import(MyConfig1.class)
public class MyConfig{
@Bean
public Cat cat(){
return new Cat();
}
}