`

Spring中<context:annotation-config/>的作用

阅读更多

最近在研究Spring中<context:annotation-config/>配置的作用,现记录如下:

<context:annotation-config/>的作用是向Spring容器注册以下四个BeanPostProcessor:

  • AutowiredAnnotationBeanPostProcessor
  • CommonAnnotationBeanPostProcessor
  • PersistenceAnnotationBeanPostProcessor
  • RequiredAnnotationBeanPostProcessor

那么,为什么要注册这四个BeanPostProcessor呢?

是为了让系统能够识别相应的注解。 

例如: 

1、如果想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。

传统声明方式如下:

<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/> 

2、如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor  Bean。

3、如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。

4、如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。 

以上这些注解是很常用的,如果按照传统的方式进行配置将会非常繁琐,所以Spring给我们提供了一个简便的方式:<context:annotation-config/>,使用该元素可以自动声明以上注解。

注:由于<context:component-scan base-package=”xx.xx”/>也包含了自动注入上述Bean的功能,所以<context:annotation-config/> 可以省略。如果两者都进行了配置,则只有前者有效。

分享到:
评论

相关推荐

    异常解决:错误:namespace element 'annotation-config' … on JDK 1.5 and higher

    2. **XML配置问题**:确保你的Spring配置文件(如`applicationContext.xml`)正确包含了`&lt;context:component-scan&gt;`或`&lt;context:annotation-config&gt;`元素,它们是启用注解配置的关键。 3. **编译器设置**:检查你的...

    spring_MVC源码

    10. &lt;context:annotation-config /&gt; 11. &lt;!-- 把标记了@Controller注解的类转换为bean --&gt; 12. &lt;context:component-scan base-package="com.mvc.controller" /&gt; 13. &lt;!-- 启动Spring MVC的注解功能,...

    Spring的Annotation配置相关讲义

    `&lt;context:annotation-config&gt;`元素会扫描容器中的所有Bean,查找并处理如`@Autowired`、`@Required`、`@PostConstruct`等注解,实现依赖注入。 `&lt;context:component-scan&gt;`元素用于指定需要扫描的包,这样Spring会...

    Spring基于注释(Annotation)的配置.pdf

    ### Spring基于注释...`&lt;context:annotation-config/&gt;`是Spring提供的一个配置选项,它可以自动注册多个BeanPostProcessor,包括`AutowiredAnnotationBeanPostProcessor`、`CommonAnnotationBeanPostProcessor`、`...

    [新手-图文]整合ssm框架-从mybatis到spring-mybatis再到ssm-sping-mybatis-spingmvc

    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;/listener&gt; &lt;servlet&gt; &lt;servlet-name&gt;dispatcher&lt;/servlet-name&gt; &lt;servlet-class&gt;org.springframework.web....

    spring使用annotation整合dwr笔记

    - **配置DWR Annotation Config**:利用`&lt;dwr:annotation-config/&gt;`标签启用注解支持,使得开发者能够使用`@RemoteProxy`和`@RemoteMethod`等注解来标注需要暴露给客户端的方法。 ```xml &lt;!-- 配置DWR注解支持 --&gt;...

    spring mvc基础

    &lt;param-value&gt;classpath:config/springAnnotation-*.xml&lt;/param-value&gt; &lt;/context-param&gt; &lt;!-- 启动Spring上下文监听器 --&gt; &lt;listener&gt; &lt;listener-class&gt;org.springframework.web.context....

    Spring注解详解

    &lt;context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/&gt; &lt;context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/&gt; ...

    自己写网页spring框架搭建

    - 使用`&lt;context:annotation-config/&gt;`来启用Spring MVC的注解支持。 - **控制器扫描**: - 通过`&lt;context:component-scan base-package="controller"/&gt;`指定要扫描的控制器包名。 - **视图解析器**: - 配置视图...

    集成springmvc spring hibernate的配置

    &lt;context:annotation-config /&gt; &lt;context:component-scan base-package="com.mvc.*"&gt; &lt;context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /&gt; &lt;/context:component...

    Spring3中配置DBCP,C3P0,Proxool,Bonecp数据源

    &lt;context:annotation-config /&gt; &lt;context:component-scan base-package="com.mvc" /&gt; &lt;mvc:annotation-driven /&gt; &lt;mvc:resources mapping="/resources/**" location="/resources/" /&gt; &lt;mvc:default-servlet-...

    Springboot项目整合JSP页面

    2. **配置静态资源和 JSP 视图解析器**: 在 `src/main/resources/config/spring/webmvc-config.xml` 中,定义一个 MVC 配置类,添加一个视图解析器来处理 JSP 页面,如下: ```xml &lt;beans xmlns=...

    JSP 中spring事务配置详解.docx

    `&lt;context:annotation-config&gt;`启用对注解的处理,使得我们可以使用`@Transactional`注解来声明事务边界。 数据源配置(`&lt;bean id="dataSource"&gt;`)中,我们使用了BoneCP连接池,配置了数据库连接信息和其他连接池...

    使用Spring2.5的Autowired实现注释型的IOC

    在上面的配置文件中,我们使用了 `&lt;context:annotation-config/&gt;` 和 `&lt;context:component-scan base-package="testspring.main"/&gt;` 两个标签。 `&lt;context:annotation-config/&gt;` 用于启用注释型的 IOC,而 `&lt;context...

    开发框架搭建

    &lt;artifactId&gt;spring-context&lt;/artifactId&gt; &lt;version&gt;${spring.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework&lt;/groupId&gt; &lt;artifactId&gt;spring-webmvc&lt;/artifactId&gt; &lt;version&gt;${...

    spring-framework-3.2.0.RC2-schema.zip

    "aop"命名空间中的`&lt;aop:config&gt;`、`&lt;aop:advisor&gt;`、`&lt;aop:pointcut&gt;`等元素,允许开发者定义切面、切入点表达式和通知,实现代码的解耦,降低系统复杂性。 "mvc"模块是Spring MVC,它是构建Web应用程序的强大工具...

    Spring AOP配置源码

    &lt;/beans&gt;&lt;context:annotation-config/&gt; &lt;context:component-scan base-package="com.spring.*"/&gt; 两行为开启spring的注解配置 &lt;aop:aspect id="aspect" ref="logIntercepter"&gt; 引入具体的AOP操作类 &lt;aop:pointcut ...

    spring mvc

    1. `&lt;context:annotation-config&gt;`: - 这个元素启用对类路径中注解的自动检测,使得Spring能够识别并处理如`@Controller`、`@Service`、`@Repository`等注解的类。 2. `&lt;context:component-scan&gt;`: - 这个元素...

    spring3.2+strut2+hibernate4

    &lt;context:annotation-config /&gt; &lt;!-- &lt;bean id="sessionFactory"--&gt; &lt;!-- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"&gt;--&gt; &lt;!-- &lt;property name="configLocation"--&gt; &lt;!-- value=...

Global site tag (gtag.js) - Google Analytics