Spring 的依赖检查功能仅能检查某些类的所有属性。它的灵活性不够,不能仅仅检查特定的属性。在大部分的情况下,你希望检查特定的属性是否设置,而不是特定类型的所有属性。
解决方案是在set方法上添加@Required 注解。
RequiredAnnotationBeanPostProcessor 是一个Spring bean 后置处理器,检查带有@Required注解的所有bean的属性是否设置。 注意这里是检查属性是否设置而不能够测试属性是否为空。
为了邀请Spring检查所有的@Required,必须在IOC容器中注册一个RequiredAnnotationBeanPostProcessor实例。应该在应用上下文中添加这样一个bean
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
如果使用的是Spring 3.0 的版本可以做如下配置
写道
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:task="http://www.springframework.org/schema/task"
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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd
">
<context:component-scan base-package="*"></context:component-scan>
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<property name="prefix" value="B30"/> <property name="suffix" value="A"/>
<property name="initial" value="10000" /> </bean> -->
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<constructor-arg value="C30" /> <constructor-arg value="B" /> <constructor-arg
value="10000" /> </bean> -->
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl"
p:prefix="D" p:suffix="D" p:initial="10000"/> -->
<bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<property name="suffix" value="A" />
<property name="initial" value="10000" />
<property name="prefixes">
<list>
<value>A</value>
<value>B</value>
<value>C</value>
</list>
</property>
</bean>
<bean id="aaa" class="SpringInAction.IOC.shop.Battery" p:name="AAA"
p:price="2.5" p:rechargeable="true" />
<bean id="cdrw" class="SpringInAction.IOC.shop.Disc" p:name="CD-RW"
p:price="1.5" p:capacity="7000" />
</beans>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:task="http://www.springframework.org/schema/task"
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-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/jee
http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.1.xsd
">
<context:component-scan base-package="*"></context:component-scan>
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<property name="prefix" value="B30"/> <property name="suffix" value="A"/>
<property name="initial" value="10000" /> </bean> -->
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<constructor-arg value="C30" /> <constructor-arg value="B" /> <constructor-arg
value="10000" /> </bean> -->
<!-- <bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl"
p:prefix="D" p:suffix="D" p:initial="10000"/> -->
<bean id="sequenceGenerator" class="SpringInAction.IOC.SequenceGeneratorImpl">
<property name="suffix" value="A" />
<property name="initial" value="10000" />
<property name="prefixes">
<list>
<value>A</value>
<value>B</value>
<value>C</value>
</list>
</property>
</bean>
<bean id="aaa" class="SpringInAction.IOC.shop.Battery" p:name="AAA"
p:price="2.5" p:rechargeable="true" />
<bean id="cdrw" class="SpringInAction.IOC.shop.Disc" p:name="CD-RW"
p:price="1.5" p:capacity="7000" />
</beans>
如果任何带有@Required的属性未设置,Bean后处理器会抛出一个BeanInitializationException 异常
相关推荐
在Spring Boot中,我们可以使用@Before注解来实现AOP的Before通知类型。@Before通知表示在目标方法执行之前,将会先执行切面逻辑。这是一种常用的AOP通知类型,常用于日志记录、安全性检查等方面。 下面详细解释...
本文将详细探讨Spring Boot中@Scheduled注解的使用,包括其原理、实现流程、步骤和代码示例。通过本文,读者将能够了解如何在Spring Boot应用中轻松创建和管理定时任务。 # @Scheduled注解简介 在Spring框架中,@...
为了帮助读者更好地理解@Pointcut注解的实际应用,我们提供了一个完整的Spring Boot示例代码,展示了如何创建一个切面类并在其中使用@Pointcut注解。通过该示例,我们记录了服务类中方法的执行时间,并在运行时得到...
@RunWith(SpringJUnit4ClassRunner.class)//Spring的Junit测试,会在测试开始时,创建Spring的应用上下文 @ContextConfiguration(classes=CDPlayerSpringConfig.class)//表明配置类 public class SpringTest1 { //...
Spring @compenent注解详解,对应我的相关博客。注意,不包含相关的依赖包
Spring Boot技术知识点:如何理解@ConfigurationProperties注解
spring 支持@RequestBody注解依赖包 、 spring 支持@RequestBody注解依赖包 spring 支持@RequestBody注解依赖包
用@Resource注解完成属性装配
Spring in Action CN.001<br>Spring in Action CN.002<br>Spring in Action CN.003<br>Spring in Action CN.004<br>Spring in Action CN.005<br>Spring in Action CN.006<br>Spring in Action CN.007<br>Spring in ...
主要介绍了结合SpEL使用@Value-基于配置文件或非配置的文件的值注入-Spring Boot的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
Spring Boot技术知识点:如何使用@Validated注解来对邮箱字段进行数据校验
本篇文章主要介绍了详解Spring Data JPA使用@Query注解(Using @Query),具有一定的参考价值,有兴趣的可以了解一下
获取springbean对象
Spring In Action-3.2@Conditional条件化Bean,Spring In Action-3.2@Conditional条件化Bean,Spring In Action-3.2@Conditional条件化Bean
使用 @Qualifier 注解是解决 Spring 中多个同类型 Bean 注入冲突的一种常见方法。当我们在 Spring 容器中存在多个同一接口或父类的实现时,如果不明确指定要注入哪个实现,Spring 就会抛出 "Consider marking one of...
本篇文章主要介绍了Spring @Bean vs @Service注解区别,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
用一个最最简单的例子,来讲解:使用Springboot @TypeDiscriminator注解实现多态对象的查询,jackson @JsonTypeInfo注解实现controller多态支持。
Spring3事务管理——使用@Transactional 注解.rar
注解包含: 拦截器 , 过滤器 , 序列化 , @After , @AfterReturning , @AfterThrowing , @annotation , @Around , @Aspect , @Autowired , @Bean , @Before , @Component , @ComponentScan , @ComponentScans , @...