最近在研究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/> 可以省略。如果两者都进行了配置,则只有前者有效。
相关推荐
2. **XML配置问题**:确保你的Spring配置文件(如`applicationContext.xml`)正确包含了`<context:component-scan>`或`<context:annotation-config>`元素,它们是启用注解配置的关键。 3. **编译器设置**:检查你的...
10. <context:annotation-config /> 11. <!-- 把标记了@Controller注解的类转换为bean --> 12. <context:component-scan base-package="com.mvc.controller" /> 13. <!-- 启动Spring MVC的注解功能,...
`<context:annotation-config>`元素会扫描容器中的所有Bean,查找并处理如`@Autowired`、`@Required`、`@PostConstruct`等注解,实现依赖注入。 `<context:component-scan>`元素用于指定需要扫描的包,这样Spring会...
### Spring基于注释...`<context:annotation-config/>`是Spring提供的一个配置选项,它可以自动注册多个BeanPostProcessor,包括`AutowiredAnnotationBeanPostProcessor`、`CommonAnnotationBeanPostProcessor`、`...
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web....
- **配置DWR Annotation Config**:利用`<dwr:annotation-config/>`标签启用注解支持,使得开发者能够使用`@RemoteProxy`和`@RemoteMethod`等注解来标注需要暴露给客户端的方法。 ```xml <!-- 配置DWR注解支持 -->...
<param-value>classpath:config/springAnnotation-*.xml</param-value> </context-param> <!-- 启动Spring上下文监听器 --> <listener> <listener-class>org.springframework.web.context....
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/> ...
- 使用`<context:annotation-config/>`来启用Spring MVC的注解支持。 - **控制器扫描**: - 通过`<context:component-scan base-package="controller"/>`指定要扫描的控制器包名。 - **视图解析器**: - 配置视图...
<context:annotation-config /> <context:component-scan base-package="com.mvc.*"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" /> </context:component...
<context:annotation-config /> <context:component-scan base-package="com.mvc" /> <mvc:annotation-driven /> <mvc:resources mapping="/resources/**" location="/resources/" /> <mvc:default-servlet-...
2. **配置静态资源和 JSP 视图解析器**: 在 `src/main/resources/config/spring/webmvc-config.xml` 中,定义一个 MVC 配置类,添加一个视图解析器来处理 JSP 页面,如下: ```xml <beans xmlns=...
`<context:annotation-config>`启用对注解的处理,使得我们可以使用`@Transactional`注解来声明事务边界。 数据源配置(`<bean id="dataSource">`)中,我们使用了BoneCP连接池,配置了数据库连接信息和其他连接池...
在上面的配置文件中,我们使用了 `<context:annotation-config/>` 和 `<context:component-scan base-package="testspring.main"/>` 两个标签。 `<context:annotation-config/>` 用于启用注释型的 IOC,而 `<context...
<artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${...
"aop"命名空间中的`<aop:config>`、`<aop:advisor>`、`<aop:pointcut>`等元素,允许开发者定义切面、切入点表达式和通知,实现代码的解耦,降低系统复杂性。 "mvc"模块是Spring MVC,它是构建Web应用程序的强大工具...
</beans><context:annotation-config/> <context:component-scan base-package="com.spring.*"/> 两行为开启spring的注解配置 <aop:aspect id="aspect" ref="logIntercepter"> 引入具体的AOP操作类 <aop:pointcut ...
1. `<context:annotation-config>`: - 这个元素启用对类路径中注解的自动检测,使得Spring能够识别并处理如`@Controller`、`@Service`、`@Repository`等注解的类。 2. `<context:component-scan>`: - 这个元素...
<context:annotation-config /> <!-- <bean id="sessionFactory"--> <!-- class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">--> <!-- <property name="configLocation"--> <!-- value=...