前言
**不管是 XML 还是注解,它们都是表达 Bean 定义的载体,其实质都是为 Spring 容器提供 Bean 定义的信息,在表现形式上都是将 XML 定义的内容通过类注解进****行描述。**Spring 从2.0开始就引入了基于注解的配置方式,在2.5时得到了完善,在4.0时进一步增强。
我们知道,Spring 容器成功启动的三大要件分别是 Bean定义信息、Bean实现类及 Spring 本身。如果采用基于XML 的配置,则 Bean定义信息和 Bean实现类本身是分离的:而如果采用基于注解的配置文件,则 Bean定义信息通过在 Bean实现类上标注注解实现。
注解的使用
注解配置默认情况下在Spring中是关闭的,我们需要在配置文件中使用<context:annotation-config/>
激活它。
<?xml version="1.0" encoding="UTF-8"?> <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-3.0.xsd"> <context:annotation-config/> </beans>
一旦激活注解配置后,我们就可以在代码中使用注解来进行依赖注入。其中下面是几个重要的注解:
@Required注解应用于bean属性的setter方法 @Autowired注解可以应用到bean属性的setter方法,非setter方法,构造函数和属性 @Qualifier,通过指定确切的将被引用的bean,@Autowired和@Qualifier注解可以用来删除混乱 JSR-250 Annotations,Spring支持JSR-250的基础的注解,其中包括了@Resource,@PostContruct和@PreDestory注解
@Required 注解
@Required 注解应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。
示例
下面显示的是一个使用 @Required 注解的示例。
创建一个Person
类,
public class Person { private String name; private int age; public String getName() { return name; } @Required public void setName(String name) { this.name = name; } public int getAge() { return age; } @Required public void setAge(int age) { this.age = age; } }
使用@Required
注解了属性name
和age
的两个setter方法setName()
和setAge()
,这表示我们在使用XML为Person
类注入属性时必须注入这两个属性。
spring-config.xml
文件配置如下:
<context:annotation-config/> <bean id="person" class="com.gavin.domain.Person"> <property name="age" value="20"/> <property name="name" value="zmj"/> </bean>
注意:@Required
注解用于注解属性的setter方法,如果一个属性的setter方法被@Required
注解,则表示在XML配置中,该属性一定要注入值,否则会报异常。