`
hanqunfeng
  • 浏览: 1543322 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SpringMVC4零配置--应用上下文配置【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();
		
	}

 

SpringMVC4零配置 :代码下载

SpringMVC4零配置--web.xml

SpringMVC4零配置--应用上下文配置【AppConfig】

SpringMVC4零配置--SpringSecurity相关配置【SpringSecurityConfig】

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

 

 

分享到:
评论

相关推荐

    SpringMVC ---- HelloWorld ---- 代码

    SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...

    SpringMVC4零配置

    总结,SpringMVC4的零配置特性使得开发更加简洁高效,通过Java配置、自动配置和各种注解,我们可以快速搭建起一个功能完善的Web应用。理解并熟练掌握这些知识点,能够极大地提升开发效率,让开发者更专注于业务逻辑...

    SpringMVC-Mybatis-Shiro-redis

    《SpringMVC-Mybatis-Shiro-Redis:构建安全高效的Web应用》 在现代Web开发中,构建一个高效且安全的后端系统是至关重要的。本文将深入探讨一个基于SpringMVC、Mybatis、Shiro和Redis的Web应用架构,这四个组件共同...

    SpringMVC-Activiti5.16-Shiro-EasyUI项目整合

    总结,SpringMVC-Activiti5.16-Shiro-EasyUI项目的整合是一个典型的Java Web应用实例,它结合了后端处理、工作流管理、权限控制和前端展示等多个方面,对于想要深入学习Java企业级开发的开发者来说,这是一个极好的...

    springMVC集成spring-data-redis

    4. **RedisConfig**:在Spring Boot应用中,我们需要配置一个`RedisConnectionFactory`来建立到Redis服务器的连接,并配置`StringRedisTemplate`或`RedisTemplate`。这通常通过`@Configuration`注解的类来完成,其中...

    SpringMVC-Mybatis-Shiro-redis-master

    【标题】"SpringMVC-Mybatis-Shiro-redis-master" 涉及的是一个集成框架项目,这个项目集成了四个关键的技术组件:SpringMVC、MyBatis、Shiro和Redis。这些技术在现代Java Web开发中扮演着重要角色。 **SpringMVC**...

    SpringMVC精品资源--SpringMVC+Mybatis 脚手架.zip

    SpringMVC和Mybatis是Java开发中非常流行的两个框架,它们在企业级Web应用开发中起着关键作用。SpringMVC作为Spring框架的一部分,主要负责处理HTTP请求和响应,而Mybatis则是一个轻量级的持久层框架,专注于数据库...

    SpringMVC精品资源--vans 基于SpringBoot构建的后端开发脚手架项目,完美整合springmvc.zip

    综上所述,SpringMVC精品资源--vans项目是一个基于SpringBoot的高效后端开发框架,它融合了SpringMVC的强大功能,为开发者提供了一个便捷的开发平台。通过对"ahao5"文件的深入学习,可以掌握项目结构,理解SpringMVC...

    SpringMVC精品资源--JAX-RS &amp; SpringMVC supported maven buil.zip

    1. **SpringMVC示例项目**:可能包含一个使用SpringMVC构建的实际应用,展示了如何配置SpringMVC、如何创建控制器、如何处理视图以及如何与数据库交互。 2. **JAX-RS示例**:可能提供了一个或多个使用JAX-RS创建的...

    SpringMVC精品资源--JAX-RS &amp; SpringMVC supported gradle bui.zip

    4. `pom.xml`(如果存在):Maven的配置文件,可能是因为项目同时支持Maven构建。 5. `.gitignore`:定义了Git忽略的文件和目录,避免将不必要的文件加入版本控制。 6. `README.md`:项目说明文档,可能会包含如何...

    SpringMVC精品资源--Java platform springmvc demo for work !.zip

    4. webapp/WEB-INF:Web应用目录,其中web.xml是Web应用的部署描述符,可能包含DispatcherServlet的配置。 5. webapp/WEB-INF/views:视图文件夹,存放JSP或其他模板引擎的页面。 通过这个资源包,学习者可以深入...

    SpringMVC精品资源--Spring Security Core Brewery.zip

    总的来说,"SpringMVC精品资源--Spring Security Core Brewery.zip"提供的内容可能包括了如何将Spring Security集成到SpringMVC应用中的实例和教程,帮助开发者理解这两者之间的协作,以及如何构建一个安全的Web应用...

    SpringMVC精品资源--JAVA、Spring、SpringMVC、SpringBoot、Mybatis、Vu.zip

    4. **SpringBoot**:SpringBoot简化了Spring应用的初始搭建和运行过程,通过预配置和自动配置特性,使得开发者可以快速创建独立运行的应用。理解起步依赖、内嵌容器、Actuator监控和健康检查等功能至关重要。 5. **...

    SpringMVC精品资源--宜立方商城,完整代码 + 资源,java + spring + springmvc +.zip

    6. **配置文件**:Spring的配置文件,如 applicationContext.xml 和 servlet-context.xml,用于设置bean的依赖注入、数据源配置、视图解析器以及其他SpringMVC的相关配置。 7. **实体类(Entities)**:表示数据库...

    SpringMVC精品资源--基于springMVC实现的解决方案系统.zip

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序。它是一个模型-视图-控制器(MVC)架构的实现,提供了强大的数据绑定、模型验证、本地化和国际化等功能,极大地简化了Java Web开发。在“SpringMVC精品资源...

    SpringMVC精品资源--使用javaconfig的方式整合SpringMVC+Mybatis+SpringSe.zip

    【描述】:这个资源包聚焦于Java开发中的Web应用程序集成,通过使用javaconfig而非传统的XML配置来整合SpringMVC、Mybatis和SpringSecurity三大框架。这种方式使得配置更加简洁且易于维护,同时体现了Spring框架的...

    SpringMVC精品资源--Spring、SpringMVC、MyBatis、Spring Boot案例.zip

    4. Spring Boot快速启动:展示如何使用Spring Initializr创建项目,配置POM.xml,以及编写主启动类。 5. 整合Spring、SpringMVC和MyBatis:展示这三者如何协同工作,实现完整的数据访问和业务逻辑处理。 6. 可能还有...

    SpringMVC4教程-超权威--超详细

    - **配置文件**:在`web.xml`中配置DispatcherServlet,并指定其上下文配置文件路径。这一步骤对于初始化Spring MVC容器至关重要。 - **创建控制器**:使用@Controller注解标记一个Java类作为控制器,并使用@...

    SpringMVC精品资源--Spring+Springmvc+Mybatis框架,后续集成日志插件log4j、lo.zip

    学习这个资源包,可以理解Spring、SpringMVC和Mybatis的基本概念,掌握它们的整合方式,以及如何利用Log4j进行日志记录,为构建Java Web应用打下坚实的基础。此外,实践这些示例代码将有助于加深对框架功能的理解,...

    springmvc与swagger swagger-ui 集成demo

    标题 "springmvc与swagger swagger-ui 集成demo" 涉及到的是在Spring MVC框架下集成Swagger和Swagger-UI的技术实践。Spring MVC是Java Web开发中的一个流行框架,用于构建可重用、模块化的Web应用程序。Swagger则是...

Global site tag (gtag.js) - Google Analytics