应用上下文配置【AppConfig】
从spring3.0开始,Spring将JavaConfig整合到核心模块,普通的POJO只需要标注@Configuration注解,就可以成为spring配置类,并通过在方法上标注@Bean注解的方式注入bean。
Xml配置和Java类配置对比如下:
applicationContext-AppConfig.xml
- <!-- 激活自动代理功能 参看:web.function.aop.aspect.DemoAspect -->
- <aop:aspectj-autoproxy proxy-target-class="true" />
- <context:component-scan base-package="web.function">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
- </context:component-scan>
- <import resource="classpath:config/context/applicationContext-CachingConfig.xml" />
- <import resource="classpath:config/context/applicationContext-DaoConfig.xml" />
AppConfig.java
- @Configuration
- @ComponentScan(basePackages = "web.function", excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = { Controller.class }) })
- @EnableAspectJAutoProxy(proxyTargetClass=true)
- @Import({CachingConfig.class,DaoConfig.class})
- public class AppConfig {
- }
applicationContext-CachingConfig.xml
- <!-- 启用缓存注解 -->
- <cache:annotation-driven cache-manager="cacheManager" />
- <!-- cacheManager工厂类,指定ehcache.xml的位置 -->
- <bean id="cacheManagerFactory"
- class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
- p:configLocation="classpath:/config/ehcache.xml" />
- <!-- 声明cacheManager -->
- <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
- p:cacheManager-ref="cacheManagerFactory" />
CachingConfig.java
- @Configuration
- @EnableCaching//<!-- 启用缓存注解 --> <cache:annotation-driven cache-manager="cacheManager" />
- public class CachingConfig {
- private static final Logger logger = Logger.getLogger(CachingConfig.class);
- @Bean
- public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
- EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
- ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource(
- "config/ehcache.xml"));
- return ehCacheManagerFactoryBean;
- }
- @Bean
- public CacheManager cacheManager() {
- logger.info("EhCacheCacheManager");
- EhCacheCacheManager cacheManager = new EhCacheCacheManager();
- cacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
- return cacheManager;
- }
- }
applicationContext-DaoConfig.xml
- <import resource="classpath:config/context/applicationContext-DataSourceConfig.xml" />
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan">
- <list>
- <value>web.function.**.model.oracle</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">
- ${hibernate.dialect}
- </prop>
- <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
- <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
- </props>
- </property>
- </bean>
- <!-- hibernateDAO -->
- <bean id="hibernateDAO" class="web.dao.hibernate.impl.CP_Hibernate4DAOImpl">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- <!-- 启用事务注解功能 -->
- <tx:annotation-driven transaction-manager="transactionManager" />
DaoConfig.java
- @Configuration
- //启用注解事务管理,使用CGLib代理
- @EnableTransactionManagement(proxyTargetClass = true)
- @Import({DataSourceConfig.class})
- public class DaoConfig {
- private static final Logger logger = Logger.getLogger(DaoConfig.class);
- @Value("${hibernate.dialect}")
- String hibernate_dialect;
- @Value("${hibernate.show_sql}")
- String hibernate_show_sql;
- /**
- * 描述 : <负责解析资源文件>. <br>
- *<p>
- <这个类必须有,而且必须声明为static,否则不能正常解析>
- </p>
- * @return
- */
- @Bean
- public static PropertySourcesPlaceholderConfigurer placehodlerConfigurer() {
- logger.info("PropertySourcesPlaceholderConfigurer");
- return new PropertySourcesPlaceholderConfigurer();
- }
- @Resource(name="dataSource")
- public DataSource dataSource;
- @Bean(name = "sessionFactory")
- public LocalSessionFactoryBean localSessionFactoryBean() {
- logger.info("sessionFactory");
- LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
- sessionFactory.setDataSource(dataSource);
- String[] packagesToScan = new String[] { "web.function.**.model.oracle" };
- sessionFactory.setPackagesToScan(packagesToScan);
- Properties hibernateProperties = new Properties();
- hibernateProperties.setProperty("hibernate.dialect", hibernate_dialect);
- hibernateProperties.setProperty("hibernate.show_sql",
- hibernate_show_sql);
- hibernateProperties.setProperty(
- "hibernate.current_session_context_class",
- "org.springframework.orm.hibernate4.SpringSessionContext");
- sessionFactory.setHibernateProperties(hibernateProperties);
- return sessionFactory;
- }
- @Bean(name = "hibernateDAO")
- public CP_Hibernate4DAOImpl hibernate4Dao() {
- logger.info("hibernateDAO");
- CP_Hibernate4DAOImpl dao = new CP_Hibernate4DAOImpl();
- dao.setSessionFactory(localSessionFactoryBean().getObject());
- return dao;
- }
- @Bean(name = "transactionManager")
- public HibernateTransactionManager hibernateTransactionManager() {
- logger.info("transactionManager");
- HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
- hibernateTransactionManager.setSessionFactory(localSessionFactoryBean()
- .getObject());
- return hibernateTransactionManager;
- }
- }
applicationContext-DataSourceConfig.xml
- <context:property-placeholder
- location="classpath:/config/properties/db.properties" />
- <!-- 数据源 -->
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${jdbc.driver}" />
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
- </bean>
DataSourceConfig.java
- @Configuration
- //加载资源文件
- @PropertySource({"classpath:/config/properties/db.properties"})
- public class DataSourceConfig {
- private static final Logger logger = Logger.getLogger(DataSourceConfig.class);
- /*
- * 绑定资源属性
- */
- @Value("${jdbc.driver}")
- String driverClass;
- @Value("${jdbc.url}")
- String url;
- @Value("${jdbc.username}")
- String userName;
- @Value("${jdbc.password}")
- String passWord;
- @Bean(name = "dataSource")
- public DataSource dataSource() {
- logger.info("DataSource");
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName(driverClass);
- dataSource.setUrl(url);
- dataSource.setUsername(userName);
- dataSource.setPassword(passWord);
- return dataSource;
- }
- }
DataSource如果使用JNDI的方式如下:
xml配置:
- <jee:jndi-lookup id="dataSource" jndi-name="jdbc/demoDB" />
Java类配置:
- @Bean
- public JndiObjectFactoryBean jndiObjectFactoryBean(){
- JndiObjectFactoryBean factory = new JndiObjectFactoryBean();
- // factory.setJndiName("java:comp/env/jdbc/demoDB"); //两种方式均可,spring会自动补齐
- factory.setJndiName("jdbc/demoDB");
- return factory;
- }
- @Bean(name = "dataSource")
- public DataSource dataSource() throws Exception{
- logger.info("DataSourceJNDI");
- return (DataSource)jndiObjectFactoryBean().getObject();
- }
应用上下文配置【AppConfig】的更多相关文章
- SpringMVC4零配置--Web上下文配置【MvcConfig】
与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明. ...
- OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)
OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...
- Web上下文配置【MvcConfig】
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...
- Jetty:配置上下文
这篇文件讲述配置Jetty上下文的各种选项. 设置上下文路径 上下文路径是一个URL路径的前缀,用于将一个输入请求相应到相应的上下文.Java Servlet Server的URL通常的格式为:htt ...
- spring的父子上下文容器及配置
本文由作者张远道授权网易云社区发布. spring父子容器 spring总的上下文容器有父子之分.父容器和子容器.父容器对子容器可见,子容器对父容器不可见. 对于传统的spring mvc来说,spr ...
- SpringMVC4零配置--web.xml
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...
- SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI(转)
原文地址:SpringMvc4.2.5 零配置出现 No mapping found for HTTP request with URI 采用 spring 零配置,参考 http://hanqunf ...
- 【Java Web开发学习】Spring MVC 开始配置
Spring MVC 开始配置 转载:http://www.cnblogs.com/yangchongxing/p/8871370.htm 学习搭建最简单的Spring MVC框架. ======== ...
- springmvc笔记(基本配置,核心文件,路径,参数,文件上传,json整合)
首先导入jar包 大家注意一下我的springmvc,jackson,common-up的jar包版本.其他版本有可能出现不兼容. src文件: webroot目录: web.xml <?xml ...
随机推荐
- 判断一个字符串是否为有效ip地址
bool f (const char *s) { int s1,s2,s3,s4; ) { return false; } if ((s1 & 0xffffff00) || (s2 & ...
- 从ajax获取的数据无法通过Jquery选择器来调用事件
如果标签是动态生成的,比如说div.tr.td等,若需通过Jquery来获取事件,那么需要用live来绑定相应的事件. 比如说绑定div的click事件 $("div").live ...
- (DFS)hdoj1010-Tempter of the Bone
#include<cstdio> #include<cmath> #include<stdlib.h> ][]={{,},{,-},{,},{-,}},escape ...
- 【STL】- vector的用法
初始化: 1. 默认构造: vector<int> vint; 2. 用包含10个元素的数组初始化: vector<int> vint(ia, ia+10); 算法: 1. v ...
- linux命令每日一练习-ls
ls列出目录下所有文件 ls -l列出具体信息. drwxr-xr-x 9 root root 4096 2011-11-01 tomcat6.0.32 第一个d表示是目录,如果是-表示普 ...
- Quartz之主方法运行
import static org.quartz.JobBuilder.newJob; import static org.quartz.TriggerBuilder.newTrigger; impo ...
- [网络技术][转]PPTP协议解析
PPTP协议大体上可以分为两部分:控制层连接和隧道,下面简要介绍两部分的功能.如果要详细了解PPTP协议请阅读RFC文档. 一. Control Connection Protol 控制层连接是基于T ...
- ld can't link with a main executable file for architecture armv7
在iPhone 6 Plus上跑的时候遇到了这么一个错误:ld can't link with a main executable file for architecture armv7,然后就各种改 ...
- BZOJ 1954 The xor-longest Path
问题转化为一些数里面选两个数异或和最大. #include<iostream> #include<cstdio> #include<cstring> #includ ...
- iOS9的适配
1.大部分社交平台接口不支持https协议. 问题描述:在iOS9下,系统默认会拦截对http协议接口的访问,因此无法获取http协议接口的数据.对ShareSDK来说,具体表现可能是,无法授权.分享 ...