应用上下文配置【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 ...
随机推荐
- 在Win7下安装IIS
由于工作上的需要,有朋友在问在windows7系统下如何来配置IIS,大部分用户平时都很少接触到这个功能,所以对于安装配置十分陌生也是在所难免的,下面就让小编与你分享下windows7系统下IIS详细 ...
- codeigniter在nginx 下支持pathinfo和去除index.php的方法
as今天准备把网站搬迁到nginx上发现codeigniter框架在nginx上不能使用,后来发现是nginx不支持pathinfo,下面介绍怎么在nginx下开启pathinfo 开始pathinf ...
- RM报表 刷新打印机列表
procedure TRMReport.ShowPreparedReport; var s: string; lPreviewForm: TRMPreviewForm; begin RMCurRepo ...
- jsp:useBean标准动作
1.bean法则 JavaBean和企业JavaBean是完全不相干的两个东西.普通的非企业JavaBean需要满足一定的规范才能被JSP和servlet使用: 1)必须有一个无参数的公共构造函数: ...
- Windows平台下的读写锁
Windows平台下的读写锁简单介绍Windows平台下的读写锁以及实现.背景介绍Windows在Vista 和 Server2008以后才开始提供读写锁API,即SRW系列函数(Initialize ...
- 到目前为止,Linux下最完整的Samba服务器配置攻略 (转)
http://blog.chinaunix.net/uid-23069658-id-3142052.html 安装平台为UBUNTU 14.04,直接软件中心安装samba, service smb ...
- Android 自动朗读(TTS)
在Android应用中,有时候需要朗读一些文本内容,今天介绍一下Android系统自带的朗读TextToSpeech(TTS).自动朗读支持可以对指定文本内容进行朗读,还可以把文本对应的音频录制成音频 ...
- @Param注解在mybatis中的使用以及传入参数的几种方式(转)
第一种: Dao层的方法 <span style="font-size:12px;">Public User selectUser(String name,String ...
- JVM-class文件完全解析-访问标志
访问标志 在前面分析了 class文件的魔数,次版本号,主版本号,常量池入口,常量池,那么在常量池结束后,紧接着的两个字节代表访问标志(access_flages).这个标志用于识别一些类或者接口层次 ...
- 国内android帮助文档镜像网站---http://wear.techbrood.com/develop/index.html
http://wear.techbrood.com/develop/index.html