作用
@Required
注解作用于Beansetter
方法上,用于检查一个Bean的属性的值在配置期间是否被赋予或设置(populated)
配置
使用<context:annotation-config/>
隐式地注册RequiredAnnotationBeanPostProcessor
,使@Required
注解生效
<?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-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"
default-lazy-init="true">
<context:annotation-config/>
<bean id="resultMessage" class="com.jake.ResultMessage">
<property name="code" value="001" /><!--此处只设置了code属性,无message属性-->
</bean>
</beans>
ResultMessage
在code
和message
的setter
方法上加上@Required
注解
public class ResultMessage {
private String code;
private String message;
public String getCode() {
return code;
}
@Required
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
@Required
public void setMessage(String message) {
this.message = message;
}
}
测试
@Controller
public class Test{
@Autowired
private ResultMessage message;
@RequestMapping("/testRequired")
public String testRequired(HttpServletRequest req, HttpServletResponse resp) {
System.out.println(message);
}
}
结果
此时访问testRequired
,可以看到,报BeanInitializationException
异常。
org.springframework.beans.factory.BeanInitializationException: Properties 'message' are required for bean 'resultMessage'