`

spring的基于java的项目配置示例1

阅读更多
spring的基于java的项目配置示例。


import org.springframework.web.context.AbstractContextLoaderInitializer;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;

public class CmsAppInitializer extends AbstractContextLoaderInitializer {

	@Override
	protected WebApplicationContext createRootApplicationContext() {
		AnnotationConfigWebApplicationContext applicationContext = new AnnotationConfigWebApplicationContext();
	    applicationContext.register(RootConfig.class);
	    return applicationContext;
	}

}


import java.util.Properties;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.PropertySource;
import org.springframework.context.annotation.PropertySources;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;

import com.xxx.springutil.failfast.FailFastFromPropertyAndSystemProperty;

@Configuration
@ComponentScan(basePackages={"com.xxx.cms"})
@PropertySources({
	@PropertySource(value="classpath:/hs-cms-srv-properties/hs-cms-srv-env.properties"),
	@PropertySource(value="file:${appHome}/hs-cms-srv-env.properties", ignoreResourceNotFound=true)
})
@ImportResource(value = {
	"classpath:/hs-cms-srv-config/spring-memcached.xml",
//	"classpath:/hs-cms-srv-config/spring-elasticsearch.xml",
	"classpath:/hs-cms-srv-config/spring-dubbo.xml",
	"classpath:/hs-core-srv-client-config/context-client.xml",
	"classpath:/hs-cms-srv-config/spring-redis-client.xml",
	"classpath*:/hs-mq-client-config/spring-jms-common.xml",
	"classpath*:/hs-mq-client-config/spring-jms-producer.xml"
})
@Import({
	MybatisConfig.class, 
	ElasticSearchConfig.class
	})
public class RootConfig {

	@Autowired
	Environment env;
	
	@Bean
	public static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() {
		final PropertySourcesPlaceholderConfigurer pspc = new PropertySourcesPlaceholderConfigurer();
		pspc.setIgnoreResourceNotFound(true);
		pspc.setIgnoreUnresolvablePlaceholders(true);
		return pspc;
	}
	
	@Bean
	public PropertiesFactoryBean appProps() {
		PropertiesFactoryBean pfb = new PropertiesFactoryBean();
		pfb.setSingleton(true);
		
		Properties properties = new Properties();
		properties.put("appEnv", env.getProperty("hs.admin.env", "dev"));
		pfb.setProperties(properties);
		
		return pfb;
	}
	
	@Bean
	public FailFastFromPropertyAndSystemProperty failFastFromPropertyAndSystemProperty() {
		FailFastFromPropertyAndSystemProperty ff = new FailFastFromPropertyAndSystemProperty();
		ff.setIfExistSystemPropertyVar("appHome");
		ff.setPropertyValueBySpring(env.getProperty("hs.cms.srv.env", "dev"));
		ff.setStopWhenPropertyEqualsThisValue("dev");
		return ff;
	}
	
	@Bean
	public ThreadPoolTaskExecutor taskExcutor() {
		ThreadPoolTaskExecutor taskExcutor = new ThreadPoolTaskExecutor();
		taskExcutor.setCorePoolSize(16);
		taskExcutor.setMaxPoolSize(32);
		taskExcutor.setQueueCapacity(64);
		return taskExcutor;
	}
	
}


import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.support.TransactionTemplate;

import com.xxx.dao.GenericMybatisDao;
import com.xxx.passwordencrypt.DbPasswordFactoryBean;
import com.alibaba.druid.pool.DruidDataSource;

@Configuration
public class MybatisConfig {
	
	private final static String ENV_PRODUCT = "product";
	private final static String ENV_BETA = "beta";
	
	@Value("${hs.cms.srv.env}")
	private String env;
	
	@Value("${hs.cms.srv.jdbc.druid.driverClassName}")
	private String driverClassName;
	@Value("${hs.cms.srv.jdbc.druid.url}")
	private String jdbcUrl;
	@Value("${hs.cms.srv.jdbc.druid.username}")
	private String username;
	@Value("${hs.cms.srv.jdbc.druid.password}")
	private String password;
	@Value("${hs.cms.srv.jdbc.druid.initialSize}")
	private Integer initialSize;
	@Value("${hs.cms.srv.jdbc.druid.maxActive}")
	private Integer maxActive;
//	@Value("${hs.cms.srv.jdbc.druid.maxIdle}")
//	private Integer maxIdle;
	@Value("${hs.cms.srv.jdbc.druid.minIdle}")
	private Integer minIdle;
	@Value("${hs.cms.srv.jdbc.druid.maxWait}")
	private Integer maxWait;
//	@Value("${hs.cms.srv.jdbc.druid.removeAbandoned}")
//	private Boolean removeAbandoned;
//	@Value("${hs.cms.srv.jdbc.druid.removeAbandonedTimeout}")
//	private Integer removeAbandonedTimeout;
	
	private boolean needDecryptPassword() {
		return ENV_PRODUCT.equals(env) || ENV_BETA.equals(env);
	}
	
	@Bean(initMethod = "init", destroyMethod = "close")
	@DependsOn()
	public DruidDataSource dataSource() throws Exception {
		
		if (needDecryptPassword()) {
			DbPasswordFactoryBean dbPasswordFactoryBean = new DbPasswordFactoryBean();
			dbPasswordFactoryBean.setCryptWord(password);
			password = dbPasswordFactoryBean.getObject();
		}
		
		DruidDataSource dataSource = new DruidDataSource();
		dataSource.setDriverClassName(driverClassName);
		dataSource.setUrl(jdbcUrl);
		dataSource.setUsername(username);
		dataSource.setPassword(password);
		dataSource.setInitialSize(initialSize);
		dataSource.setMaxActive(maxActive);
//		dataSource.setMaxIdle(maxIdle);
		dataSource.setMinIdle(minIdle);
		dataSource.setMaxWait(maxWait);
		dataSource.setTestOnBorrow(true);
		dataSource.setTestOnReturn(false);
		dataSource.setTestWhileIdle(true);
		dataSource.setFilters("mergeStat");
		dataSource.setValidationQuery("SELECT 1");
		dataSource.setPoolPreparedStatements(true);// MySQL的4.1.0后可开启服务端PreparedStatement的缓存优化
		dataSource.setMaxPoolPreparedStatementPerConnectionSize(20);// 设置单个数据库连接缓存的PreparedStatement的条数
//		dataSource.setRemoveAbandoned(removeAbandoned);
//		dataSource.setRemoveAbandonedTimeout(removeAbandonedTimeout);
		
//		<property name="filters" value="stat" />
//		<property name="minEvictableIdleTimeMillis" value="300000" />
//		<property name="timeBetweenEvictionRunsMillis" value="60000" />
//		<property name="validationQuery" value="SELECT 1" />
//		<property name="testWhileIdle" value="true" />
//		<property name="testOnBorrow" value="false" />
//		<property name="testOnReturn" value="false" />
		
		return dataSource;
	}
	
	@Bean
    public DataSourceTransactionManager transactionManager() throws Exception {
        return new DataSourceTransactionManager(dataSource());
    }
	
	@Bean
	public TransactionTemplate transactionTemplate() throws Exception {
		TransactionTemplate txTemplate = new TransactionTemplate();
		txTemplate.setTransactionManager(transactionManager());
		return txTemplate;
	}
	
	@Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dataSource());
//        sessionFactory.setTypeAliasesPackage("com.huasheng.cms.channel.common.domain");
//        sessionFactory.setTypeHandlersPackage("com.huasheng.cms.dao.mybatis.typehandler");
        Resource configLocation = new ClassPathResource("/hs-cms-srv-mybatis/mybatis-configuration.xml");
        sessionFactory.setConfigLocation(configLocation);
        ResourcePatternResolver patternResolver = new PathMatchingResourcePatternResolver();   
        Resource [] mappingLocations = patternResolver.getResources("classpath*:/hs-cms-srv-mybatis/**/*Mapper.xml");
        sessionFactory.setMapperLocations(mappingLocations);
        return sessionFactory.getObject();
    }
	
	@Bean
	public SqlSessionTemplate sqlSessionTemplate() throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory());
	}
	
	@Bean
	public SqlSessionTemplate sqlSessionTemplateBatch() throws Exception {
		return new SqlSessionTemplate(sqlSessionFactory(), ExecutorType.BATCH);
	}
	
	@Bean
	public GenericMybatisDao dao() throws Exception {
		GenericMybatisDao dao = new GenericMybatisDao();
		dao.setMybatisTemplate(sqlSessionTemplate());
		return dao;
	}
	
	@Bean
	public GenericMybatisDao batchDao() throws Exception {
		GenericMybatisDao dao = new GenericMybatisDao();
		dao.setMybatisTemplate(sqlSessionTemplateBatch());
		return dao;
	}
	
}
分享到:
评论

相关推荐

    spring-boot示例项目

    本项目示例基于spring boot 最新版本(2.1.9)实现,Spring Boot、Spring Cloud 学习示例,将持续更新…… 在基于Spring Boot、Spring Cloud 分布微服务开发过程中,根据实际项目环境,需要选择、集成符合项目...

    spring的Java项目

    这个"spring的Java项目"很可能是为了展示Spring框架的基础用法,帮助开发者理解和掌握Spring的核心概念。下面将详细解释Spring框架的一些关键知识点。 1. **IoC(Inversion of Control)控制反转**:Spring通过IoC...

    spring famework 基于注解配置示例

    本示例将详细介绍如何使用注解配置实现Spring框架的注入。 首先,我们需要了解几个关键的注解: 1. `@Component`:这是Spring中的基础组件注解,可以标记一个类为Spring管理的bean。例如,我们可以定义一个简单的...

    精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码(带数据库)

    Java EE是企业级应用开发的重要框架,而"精通Java EE项目案例-基于Eclipse Spring Struts Hibernate光盘源码"的资源提供了丰富的实践学习材料,旨在帮助开发者深入了解和掌握Java后端开发技术。这个项目案例涵盖了四...

    基于Java Spring框架的项目示例简单的“待办事项”(Todo)管理应用程序

    Java Spring框架是一个广泛...以上就是基于Java Spring框架的“待办事项”管理应用程序中涉及的主要知识点。通过学习和实践这个示例,开发者可以深入了解Spring框架如何在实际项目中发挥作用,提升开发效率和应用质量。

    如何使用Java Spring Boot执行RAG架构GenAI项目的示例.zip

    在本示例中,我们将深入探讨如何利用Java Spring Boot框架来执行一个基于RAG(Red-Amber-Green)架构的GenAI项目。RAG是一种广泛应用于项目管理的颜色代码系统,用于评估任务完成状态:红色代表问题,琥珀色表示部分...

    纯Java Config配置的Spring MVC项目示例.zip

    在本示例中,我们探讨的是一个基于纯Java配置的Spring MVC项目。Spring MVC是Spring框架的一个重要模块,专门用于构建Web应用程序。它提供了一种模型-视图-控制器(MVC)架构,使得开发人员可以更有效地组织和管理...

    maven spring mvc示例源码

    【标题】"maven spring mvc示例源码"揭示了这是一个基于Maven构建的Spring MVC Java项目的实例。Spring MVC是Spring框架的一部分,用于构建Web应用程序,而Maven则是一个项目管理和综合工具,用于自动化构建、依赖...

    基于Java语言的Spring框架示例设计源码

    本项目为基于Java语言的Spring框架设计的示例源码,包含37个文件,包括26个Java源文件、8个XML配置文件、1个Git忽略文件、1个Protocol Buffers文件以及1个Markdown文件。

    spring-javaconfig-sample, Spring MVC/Spring Data JPA/Hibernate的spring JavaConfig示例.zip

    spring-javaconfig-sample, Spring MVC/Spring Data JPA/Hibernate的spring JavaConfig示例 spring-配置示例自 spring 3.0以来,JavaConfig特性被包含在核心 spring 模块中。 因此Java开发人员可以将 spring bean...

    spring_mongo项目示例

    在本文中,我们将深入探讨`spring_mongo`项目示例,这是一个基于Spring框架集成MongoDB数据库的应用程序实例。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,适合处理大规模、非结构化或半结构化数据。而...

    spring-batch分区处理示例

    6. **配置文件**:通常,这些配置会在Spring Batch的XML或Java配置文件中定义,包括Job、Step、Partitioner、TaskExecutor以及其他相关组件的设置。 在这个示例中,我们可能会看到如何通过XML或Java配置实现上述...

    Spring MVC简单示例

    在压缩包`spring_mvc_01`中,可能包含了基本的Spring MVC项目结构,如`web.xml`配置文件、Spring MVC配置类、控制器类以及简单的JSP视图。通过分析这些文件,你可以更直观地学习如何配置和运行一个基本的Spring MVC...

    Spring-MVC+Maven构建java项目

    在本文中,我们将深入探讨如何使用Spring MVC和Maven来构建一个Java项目。Spring MVC是Spring框架的一个模块,专门用于构建Web应用程序,而Maven则是一个项目管理工具,用于简化构建、依赖管理和项目文档的生成。 *...

    spring boot基于Java的容器配置讲解

    本文将深入探讨Spring Boot基于Java的容器配置,通过示例代码帮助理解其工作原理和使用方法。 首先,Spring容器是Spring框架的核心,它负责管理对象的生命周期,包括创建、初始化、装配和销毁。Spring提供了多种...

    SpringCloud基本框架+完整示例工程.rar

    SpringCloud是中国Java开发者广泛使用的微服务框架之一,它基于Netflix OSS构建,提供了众多服务治理功能,如服务发现、负载均衡、断路器、配置中心、API Gateway等,旨在简化分布式系统开发。本压缩包文件“Spring...

    基于SpringCloud的微服务架构示例项目设计源码

    本项目是基于SpringCloud开发的微服务架构示例项目,包含749个文件,其中包括126个Java源代码文件、108个HTML文件、105个JavaScript脚本文件、79个JSP页面文件、78个Freemarker模板文件、63个CSS样式表文件、51个JPG...

    flex与spring连接java后台示例

    首先,我们需要在Spring项目中配置BlazeDS。这包括在`web.xml`中添加BlazeDS的Servlet和监听器配置,以及在Spring配置文件中定义服务代理。这样,Spring的服务可以通过HTTP或AMF(Action Message Format)协议被Flex...

    Java-Spring-WebService最基础的配置示例

    本示例将探讨如何在Spring框架中配置最基础的Web服务,特别关注的是基于CXF的Web服务。CXF是一个强大的开源框架,它支持SOAP和RESTful风格的Web服务,使得开发者能够方便地创建和消费Web服务。 首先,我们需要理解...

Global site tag (gtag.js) - Google Analytics