文章目录
- 1、使用注解时的配置文件
- 2、@Component 系列注解
- 3、类型注解与名称注解
- 4、Spring的生命周期方法注解
- 5、Bean的作用范围注解
- 6、传统XML配置和注解配置混合使用
注解: 代码中的特殊标记,注解可以使用在类、方法、属性上面,完成一些特殊的功能。
格式: @注解名称(属性=属性值)
1、使用注解时的配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- 注意Beans的属性配置 -->
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!--开启注解扫描 扫描指定包下的所有类 -->
<context:component-scan base-package="com.moc.demo"/>
<!-- 下面一句是只单独使用属性注解时的配置 -->
<context:annotation-config/>
<!-- Bean 由XML管理, 属性注入交给注解管理 -->
<bean id="productService" class="com.moc.demo.ProductService">
<property name="productDao" ref="productDao"/>
<property name="catagoryDao" ref="categoryDao"/>
</bean>
<bean id="productDao" class="com.moc.demo.ProductDao"/>
<bean id="categoryDao" class="com.moc.demo.CatagoryDao"/>
....
</beans>
2、@Component 系列注解
@Component 描述Spring框架中Bean
- 除了@Component外,Spring提供了3个功能基本和@Component等效的注解
@Repository 用于对DAO实现类进行标注
@Service 用于对Service实现类进行标注
@Controller 用于对Controller实现类进行标注
这三个注解是为了让标注类本身的用途清晰。
// 普通类型的注解方式
@Value("小米") // 没有set方法写在属性上,有set方法写在set方法上
private String something;
// 引用类型的注解方式
@Resource(name = "userDao")
private UserDao userDao;
3、类型注解与名称注解
- 使用@Autowired 进行自动注入
@Autowired 默认按照类型进行注入
如果存在两个相同Bean类型相同,则按照名称注入
注入时可以针对成员变量或者set方法 - 使用 @Qualifier 指定注入Bean的名称
使用Qualifier 指定Bean名称后,注解Bean必须指定相同名称
这两个注解一起使用便可以实现强制按名称进行注入。 - Spring提供对JSR-250中定义 @Resource 标准注解的支持
@Resource相当于@Autowired和@Qualifier一起使用的作用,实现强制按名称进行注解。 - 下面两种方式是一样的
// 方式1
@Autowired
@Qualifier("userDao")
private UserDao userDao;
// 方式2
@Resource(name = "userDao")
private UserDao userDao;
4、Spring的生命周期方法注解
Spring初始化bean或销毁bean时,有时需要作一些处理工作,因此spring可以在创建和注销bean的时候调用bean的两个生命周期方法 init-method 和 destory-method。
<bean id="xxx"class="..Moc" init-method="init" destory-method="destroy"/>
当bean被载入到容器的时候调用 init-method,可采用 @PostConstruct 注解方式实现上面的配置。
当bean从容器中删除的时候调用 destory-method(scope=singleton有效),可采用 @PreDestroy 注解方式实现上面的配置。
@Component("bean1")
public class Bean1 {
@PostConstruct
public void init() {
System.out.println("InitBean ... ");
}
public void beanMethod() {
System.out.println("say ...");
}
@PreDestroy
public void teardown() {
System.out.println("DestoryBean ...");
}
}
5、Bean的作用范围注解
使用注解配置的 Bean 和 <bean> 配置的一样,默认作用范围都是singleton
@Scope 注解用于指定Bean的作用范围
@Component("bean2")
@Scope("prototype") // 采用多例创建Bean
public class Bean2 { ... }
6、传统XML配置和注解配置混合使用
- XML方式的优势
结构清晰,易于阅读 - 注解方式的优势
开发便捷,属性注入方便 - XML与注解的整合开发
Bean 由XML管理, 属性注入交给注解管理
- 引入 context 命名空间
- 在配置文件中添加 context:annotation-config 标签
<beans ...
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config/>