从spring3.0开始,Spring将JavaConfig整合到核心模块,普通的POJO只需要标注@Configuration注解,就可以成为spring配置类,并通过在方法上标注@Bean注解的方式注入bean。

Xml配置和Java类配置对比如下:

applicationContext-AppConfig.xml

  1. <!-- 激活自动代理功能 参看:web.function.aop.aspect.DemoAspect -->
  2. <aop:aspectj-autoproxy proxy-target-class="true" />
  3. <context:component-scan base-package="web.function">
  4. <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
  5. </context:component-scan>
  6. <import resource="classpath:config/context/applicationContext-CachingConfig.xml" />
  7. <import resource="classpath:config/context/applicationContext-DaoConfig.xml" />

 AppConfig.java

  1. @Configuration
  2. @ComponentScan(basePackages = "web.function", excludeFilters = { @ComponentScan.Filter(type = FilterType.ANNOTATION, value = { Controller.class }) })
  3. @EnableAspectJAutoProxy(proxyTargetClass=true)
  4. @Import({CachingConfig.class,DaoConfig.class})
  5. public class AppConfig {
  6. }

 

applicationContext-CachingConfig.xml

  1. <!-- 启用缓存注解 -->
  2. <cache:annotation-driven cache-manager="cacheManager" />
  3. <!-- cacheManager工厂类,指定ehcache.xml的位置 -->
  4. <bean id="cacheManagerFactory"
  5. class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
  6. p:configLocation="classpath:/config/ehcache.xml" />
  7. <!-- 声明cacheManager -->
  8. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
  9. p:cacheManager-ref="cacheManagerFactory" />

CachingConfig.java 

  1. @Configuration
  2. @EnableCaching//<!-- 启用缓存注解 --> <cache:annotation-driven cache-manager="cacheManager" />
  3. public class CachingConfig {
  4. private static final Logger logger = Logger.getLogger(CachingConfig.class);
  5. @Bean
  6. public EhCacheManagerFactoryBean ehCacheManagerFactoryBean() {
  7. EhCacheManagerFactoryBean ehCacheManagerFactoryBean = new EhCacheManagerFactoryBean();
  8. ehCacheManagerFactoryBean.setConfigLocation(new ClassPathResource(
  9. "config/ehcache.xml"));
  10. return ehCacheManagerFactoryBean;
  11. }
  12. @Bean
  13. public CacheManager cacheManager() {
  14. logger.info("EhCacheCacheManager");
  15. EhCacheCacheManager cacheManager = new EhCacheCacheManager();
  16. cacheManager.setCacheManager(ehCacheManagerFactoryBean().getObject());
  17. return cacheManager;
  18. }
  19. }

applicationContext-DaoConfig.xml

  1. <import resource="classpath:config/context/applicationContext-DataSourceConfig.xml" />
  2. <bean id="sessionFactory"
  3. class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  4. <property name="dataSource" ref="dataSource" />
  5. <property name="packagesToScan">
  6. <list>
  7. <value>web.function.**.model.oracle</value>
  8. </list>
  9. </property>
  10. <property name="hibernateProperties">
  11. <props>
  12. <prop key="hibernate.dialect">
  13. ${hibernate.dialect}
  14. </prop>
  15. <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
  16. <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
  17. </props>
  18. </property>
  19. </bean>
  20. <!-- hibernateDAO -->
  21. <bean id="hibernateDAO" class="web.dao.hibernate.impl.CP_Hibernate4DAOImpl">
  22. <property name="sessionFactory" ref="sessionFactory"></property>
  23. </bean>
  24. <bean id="transactionManager"
  25. class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  26. <property name="sessionFactory" ref="sessionFactory" />
  27. </bean>
  28. <!-- 启用事务注解功能 -->
  29. <tx:annotation-driven transaction-manager="transactionManager" />

DaoConfig.java

  1. @Configuration
  2. //启用注解事务管理,使用CGLib代理
  3. @EnableTransactionManagement(proxyTargetClass = true)
  4. @Import({DataSourceConfig.class})
  5. public class DaoConfig {
  6. private static final Logger logger = Logger.getLogger(DaoConfig.class);
  7. @Value("${hibernate.dialect}")
  8. String hibernate_dialect;
  9. @Value("${hibernate.show_sql}")
  10. String hibernate_show_sql;
  11. /**
  12. * 描述 : <负责解析资源文件>. <br>
  13. *<p>
  14. <这个类必须有,而且必须声明为static,否则不能正常解析>
  15. </p>
  16. * @return
  17. */
  18. @Bean
  19. public static PropertySourcesPlaceholderConfigurer placehodlerConfigurer() {
  20. logger.info("PropertySourcesPlaceholderConfigurer");
  21. return new PropertySourcesPlaceholderConfigurer();
  22. }
  23. @Resource(name="dataSource")
  24. public DataSource dataSource;
  25. @Bean(name = "sessionFactory")
  26. public LocalSessionFactoryBean localSessionFactoryBean() {
  27. logger.info("sessionFactory");
  28. LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
  29. sessionFactory.setDataSource(dataSource);
  30. String[] packagesToScan = new String[] { "web.function.**.model.oracle" };
  31. sessionFactory.setPackagesToScan(packagesToScan);
  32. Properties hibernateProperties = new Properties();
  33. hibernateProperties.setProperty("hibernate.dialect", hibernate_dialect);
  34. hibernateProperties.setProperty("hibernate.show_sql",
  35. hibernate_show_sql);
  36. hibernateProperties.setProperty(
  37. "hibernate.current_session_context_class",
  38. "org.springframework.orm.hibernate4.SpringSessionContext");
  39. sessionFactory.setHibernateProperties(hibernateProperties);
  40. return sessionFactory;
  41. }
  42. @Bean(name = "hibernateDAO")
  43. public CP_Hibernate4DAOImpl hibernate4Dao() {
  44. logger.info("hibernateDAO");
  45. CP_Hibernate4DAOImpl dao = new CP_Hibernate4DAOImpl();
  46. dao.setSessionFactory(localSessionFactoryBean().getObject());
  47. return dao;
  48. }
  49. @Bean(name = "transactionManager")
  50. public HibernateTransactionManager hibernateTransactionManager() {
  51. logger.info("transactionManager");
  52. HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
  53. hibernateTransactionManager.setSessionFactory(localSessionFactoryBean()
  54. .getObject());
  55. return hibernateTransactionManager;
  56. }
  57. }

applicationContext-DataSourceConfig.xml

  1. <context:property-placeholder
  2. location="classpath:/config/properties/db.properties" />
  3. <!-- 数据源 -->
  4. <bean id="dataSource"
  5. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  6. <property name="driverClassName" value="${jdbc.driver}" />
  7. <property name="url" value="${jdbc.url}" />
  8. <property name="username" value="${jdbc.username}" />
  9. <property name="password" value="${jdbc.password}" />
  10. </bean>

DataSourceConfig.java

  1. @Configuration
  2. //加载资源文件
  3. @PropertySource({"classpath:/config/properties/db.properties"})
  4. public class DataSourceConfig {
  5. private static final Logger logger = Logger.getLogger(DataSourceConfig.class);
  6. /*
  7. * 绑定资源属性
  8. */
  9. @Value("${jdbc.driver}")
  10. String driverClass;
  11. @Value("${jdbc.url}")
  12. String url;
  13. @Value("${jdbc.username}")
  14. String userName;
  15. @Value("${jdbc.password}")
  16. String passWord;
  17. @Bean(name = "dataSource")
  18. public DataSource dataSource() {
  19. logger.info("DataSource");
  20. DriverManagerDataSource dataSource = new DriverManagerDataSource();
  21. dataSource.setDriverClassName(driverClass);
  22. dataSource.setUrl(url);
  23. dataSource.setUsername(userName);
  24. dataSource.setPassword(passWord);
  25. return dataSource;
  26. }
  27. }

DataSource如果使用JNDI的方式如下:

xml配置:

  1. <jee:jndi-lookup id="dataSource" jndi-name="jdbc/demoDB" />

Java类配置:

  1. @Bean
  2. public JndiObjectFactoryBean jndiObjectFactoryBean(){
  3. JndiObjectFactoryBean factory = new JndiObjectFactoryBean();
  4. //  factory.setJndiName("java:comp/env/jdbc/demoDB"); //两种方式均可,spring会自动补齐
  5. factory.setJndiName("jdbc/demoDB");
  6. return factory;
  7. }
  8. @Bean(name = "dataSource")
  9. public DataSource dataSource() throws Exception{
  10. logger.info("DataSourceJNDI");
  11. return (DataSource)jndiObjectFactoryBean().getObject();
  12. }

应用上下文配置【AppConfig】的更多相关文章

  1. SpringMVC4零配置--Web上下文配置【MvcConfig】

    与SpringSecurity的配置类似,spring同样为我们提供了一个实现类WebMvcConfigurationSupport和一个注解@EnableWebMvc以帮助我们减少bean的声明. ...

  2. OsharpNS轻量级.net core快速开发框架简明入门教程-多上下文配置(多个数据库的使用)

    OsharpNS轻量级.net core快速开发框架简明入门教程 教程目录 从零开始启动Osharp 1.1. 使用OsharpNS项目模板创建项目 1.2. 配置数据库连接串并启动项目 1.3. O ...

  3. Web上下文配置【MvcConfig】

    基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论. 项目说明如下: 1.db.sql是项目中用到的表,数据库使用的是oracle11g ...

  4. Jetty:配置上下文

    这篇文件讲述配置Jetty上下文的各种选项. 设置上下文路径 上下文路径是一个URL路径的前缀,用于将一个输入请求相应到相应的上下文.Java Servlet Server的URL通常的格式为:htt ...

  5. spring的父子上下文容器及配置

    本文由作者张远道授权网易云社区发布. spring父子容器 spring总的上下文容器有父子之分.父容器和子容器.父容器对子容器可见,子容器对父容器不可见. 对于传统的spring mvc来说,spr ...

  6. SpringMVC4零配置--web.xml

    servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...

  7. 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 ...

  8. 【Java Web开发学习】Spring MVC 开始配置

    Spring MVC 开始配置 转载:http://www.cnblogs.com/yangchongxing/p/8871370.htm 学习搭建最简单的Spring MVC框架. ======== ...

  9. springmvc笔记(基本配置,核心文件,路径,参数,文件上传,json整合)

    首先导入jar包 大家注意一下我的springmvc,jackson,common-up的jar包版本.其他版本有可能出现不兼容. src文件: webroot目录: web.xml <?xml ...

随机推荐

  1. Python背景色与语法高亮主题配置

    使用python idle的人恐怕都无法忍受默认的白色背景,及其语法高亮主题. 大家更倾向于使用黑色背景. 用户目录 的.idlerc 目录: 下面的各个系统下对应的该文件的位置: 在Linux系列系 ...

  2. 二模 (12)day2

    第一题: 题目大意: 有N颗糖,两个人轮流取,每次只能取质数颗,不能取的输.求先取者若必胜,最少需要多少步胜利.(N<=10000) 解题过程: 1.看到N的范围比较小,先打个素数表,然后dp即 ...

  3. Android listview 制作表格样式+由下往上动画弹出效果实现

    效果是这样的:点击按下弹出表格的按钮,会由下往上弹出右边的列表,按下返回按钮就由上往下退出界面. 布局文件: activity_main.xml <RelativeLayout xmlns:an ...

  4. const的全面理解

    const关键字用来作甚?const是一个类型修饰符.常见的类型修饰符有哪些? short long unsigned signed static autoextern register 定义一个变量 ...

  5. Linux Lab

    ssh vi /etc/apt/sources.list su ssh username@ipaddress eg : ssh root@172.16.247.143 实验一 fdisk /dev/s ...

  6. Android TextView多行垂直滚动

    在Android应用中,有时候需要TextView可以垂直滚动,今天我就介绍一下怎么实现的.在布局里: <TextView android:id="@+id/tvCWJ" a ...

  7. APP store 审核注意点

    磨刀不误砍柴工.作为手机应用开发者,你需要向应用商店提交应用审核,迅速通过审核可以让你抢占先机.对苹果iOS应用开发者来说尤其如此.苹果应用商店的审核近乎吹毛求疵,下面这些清单可以让你知道苹果会在哪些 ...

  8. CentOS中配置LNMP环境打开提示File not found

    在centos系统中配置好php环境了,但是发现能运行html页面并不能运行php文件了,这样我就在gg的帮助下一步不解决了,下面来看问题的具体解决过程.     安装之后测试发现,怎么Html能运行 ...

  9. MAT

    http://www.yrom.net/blog/2014/08/29/eclipse-mat/

  10. 玩转无线电 -- GPS Hacking (上)

    0x00 序 GPS Hacking 在过去几年的安全会议上一直都是很受关注的议题. 但往往因为内容太过学术化, 所需设备成本太高. 让许多感兴趣的朋友苦于无法入门. 直到GPS-SDR-SIM 这类 ...