`
zhangwei_david
  • 浏览: 475917 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Spring in Action 使用@Required 注解检查属性

 
阅读更多

        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>

 如果任何带有@Required的属性未设置,Bean后处理器会抛出一个BeanInitializationException 异常

分享到:
评论

相关推荐

    springmvc注解详解

    @Controller 注解的主要作用是注册所写的 Controller 类,添加了@Controller 注解的类就可以担任控制器(Action)的职责,不使用注解,定义 SpringMVC 的控制类,则要继承 Spring 的 Controller 接口,如:...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解

    在Struts2中,可以使用`@Action`和`@Result`注解来定义Action和结果;在Hibernate中,可以使用`@Entity`, `@Table`, `@Id`等注解来映射实体类和数据库表。 ### 开发环境搭建 确保你的开发环境符合以下最低要求: -...

    Struts2.1.6+Spring2.5.6+Hibernate3.3.1全注解实例详解(一)

    - 使用Struts2的注解,如@Controller和@Action,定义Action类和方法。 - 通过Spring的@Autowired和@Service注解进行依赖注入。 - Hibernate的@Entity、@Table、@Column等注解,实现ORM映射。 **示例中的步骤**: 1....

    Spring相关编码规范

    如果需要按类型注入,应明确指定`@Autowired`的`required`属性为`false`,并提供备选注入对象。 2. **组件纳入Spring容器管理**: - 对于控制器,推荐使用`@Controller`注解,表示该类是处理HTTP请求的组件。 - ...

    Spring的Annotation配置相关讲义

    使用`@Component`注解标记一个类作为Spring的Bean,如: ```java @Component public class NewsDAOImpl extends HibernateDaoSupport implements INewsDAO { // ... } ``` 这里,`@Component`注解告诉Spring将这...

    springmvc注解

    ### Spring MVC 注解详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring Framework 的一个重要模块,它实现了 MVC(Model-View-Controller)设计模式,主要用于构建 Web 应用程序。Spring MVC 提供了清晰的分层...

    spring,struts,hibernate,事务配置

    在Action类中,使用Spring的@Transactional注解标记需要进行事务控制的方法。 4. **Hibernate 事务管理** Hibernate的事务管理通常是由容器(如Spring)或者JTA(Java Transaction API)来完成的。在Spring中,...

    SpringMVC注解

    ### SpringMVC注解@RequestParam详解 #### 一、引言 在现代Web开发中,SpringMVC框架因其灵活且强大的特性被广泛应用于构建企业级应用。其中,`@RequestParam`注解作为处理HTTP请求参数的核心工具之一,在实现前后...

    ssh注解整合

    - 使用`@Action`注解标记控制器类。 - 使用`@ActionMapping`、`@Result`等注解配置请求映射和结果处理。 - 使用`@Intercepts`和`@Interceptor`进行拦截器的配置。 2. **与Spring整合**: - 通过`struts-plugin....

    struts验证框架的实例

    XML配置是在struts-config.xml或struts-plugin.xml文件中定义验证规则,而注解配置则是在Action类的属性上直接添加注解。例如,我们可以使用`@RequiredString`来指定一个字段必须填写,或者使用`@MinLength`和`@...

    基于Annotation的Struts2.0+Hibernate3.3+Spring2.5图文教程整合开发.doc

    这篇文档主要介绍了一个使用注解(Annotation)进行Struts2.0、Hibernate3.3和Spring2.5整合开发的教程。这种集成方式相比传统的XML配置,可以简化配置过程,提高开发效率。以下是各个框架及注解技术在教程中的应用: ...

    spring WEB入门级项目搭建

    在本教程中,我们将深入探讨如何搭建一个基于Spring框架的Web入门级项目,重点是使用Spring MVC和Spring JDBC实现简单的用户登录功能。Spring是一个广泛使用的Java企业级应用框架,而Spring MVC是它的一个核心模块,...

    Struts+Spring+Hibernate整合详细

    在`src`目录下创建的`struts.xml`文件用于定义Struts的Action,其中的`class`属性应与`applicationContext.xml`中定义的Bean ID相匹配,保证Action可以通过Spring的IoC容器进行实例化和依赖注入。 ### 日志配置 ...

    springmvc绑定Set的解决方案

    但如果希望在没有参数时返回null,可以在控制器方法的参数上使用`@RequestParam(required=false)`来声明参数不是必须的。 5. **使用Form表单提交** 当使用HTML表单提交数据时,Spring MVC会自动将同名的多个input...

    spring声明式事务配置方法.docx

    除了`TransactionProxyFactoryBean`,Spring还提供了基于注解的声明式事务管理,通过在方法上添加`@Transactional`注解,可以指定事务属性,如传播行为、隔离级别、是否读写等。这种方式更加简洁,但需要代码和配置...

    ssh整合配置(struts2.2.1+ hibernate3.6+spring3.0.5)

    4. **创建Action**:在Spring容器中定义Action类,使用@Autowired注解注入需要的服务。例如: ```java @Controller public class MyAction { @Autowired private MyService myService; // 自动注入由Spring管理的...

Global site tag (gtag.js) - Google Analytics