contenido configurado de archivo de configuración de primavera

Configuración completa

  • Redis configurados, AOP, mysql, mybatis
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  xmlns:jee="http://www.springframework.org/schema/jee"
  xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  xmlns:aop="http://www.springframework.org/schema/aop"
  xmlns:task="http://www.springframework.org/schema/task"
  xsi:schemaLocation="
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
      http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
      http://www.springframework.org/schema/aop  http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
      http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd"
  <!-- 开启懒加载-->
  default-lazy-init="true">

  <description>Spring公共配置 </description>

  <!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 -->
  <context:component-scan base-package="org.ecinsight">
      <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
      <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
  </context:component-scan>

  <bean id="transactionManager"
      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
  </bean>
  <!-- 使用annotation定义事务 -->
  <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />

  <!-- JSR303 Validator定义 -->
   <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

  <!-- MyBatis配置 -->
  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <property name="dataSource" ref="dataSource" />
      <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->
      <property name="typeAliasesPackage" value="org.ecinsight.entity" />
      <!-- 显式指定Mapper文件位置 -->
      <property name="mapperLocations" value="classpath:/mybatis/*.xml" />
      <property name="configLocation" value="classpath:mybatis-config.xml"></property>
  </bean>
  <!-- 扫描basePackage下所有以@MyBatisRepository标识的 接口 -->
  <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <property name="basePackage" value="org.ecinsight.dao" />
      <property name="annotationClass" value="org.ecinsight.dao.MyBatisRepository" />
  </bean>
  <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
          <tx:method name="insert*" propagation="NESTED"
              rollback-for="Exception" />
          <tx:method name="add*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="update*" propagation="NESTED"
              rollback-for="Exception" />
          <tx:method name="modify*" propagation="NESTED"
              rollback-for="Exception" />
          <tx:method name="edit*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="del*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="bind*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="save*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="send*" propagation="NESTED" rollback-for="Exception" />
          <tx:method name="get*" read-only="true" />
          <tx:method name="find*" read-only="true" />
          <tx:method name="query*" read-only="true" />
          <tx:method name="search*" read-only="true" />
          <tx:method name="select*" read-only="true" />
          <tx:method name="count*" read-only="true" />
      </tx:attributes>
  </tx:advice>
  <aop:config>
      <aop:pointcut id="service"
          expression="execution(* org.ecinsight.service..*.*(..))" />
      <!-- 关键配置,切换数据源一定要比持久层代码更先执行(事务也算持久层代码) -->
       <aop:advisor advice-ref="txAdvice" pointcut-ref="service"
          order="1" />
  </aop:config>

      <!-- redis cache -->
  <bean id="redisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
      <!-- <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxTotal"
          value="${redis.maxActive}" /> <property name="maxWaitMillis" value="${redis.maxWait}"
          /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> -->
  </bean>

  <!-- 配置线程池 -->
  <bean id ="taskExecutor"  class ="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor" >
          <!-- 线程池维护线程的最少数量 -->
      <property name ="corePoolSize" value ="5" />
          <!-- 线程池维护线程所允许的空闲时间 
      <property name ="keepAliveSeconds" value ="30000" />
              线程池维护线程的最大数量 -->
      <property name ="maxPoolSize" value ="200" />
          <!-- 线程池所使用的缓冲队列 -->
      <property name ="queueCapacity" value ="200" />
  </bean>

  <bean id="stringSerializer"
      class="org.springframework.data.redis.serializer.StringRedisSerializer" />
  <!-- 开启事务,可以通过redisTemplate注解控制 -->
  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
      <property name="connectionFactory" ref="redisConnectionFactory" />
      <property name="keySerializer" ref="stringSerializer" />
      <!-- <property name="enableTransactionSupport" value="true" />-->
  </bean>
  <bean id="stringRedisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
       <property name="connectionFactory" ref="redisConnectionFactory" />
  </bean>

  <!-- production环境 -->
   <beans profile="production">
       <context:property-placeholder ignore-unresolvable="true"
          location="classpath*:/application.properties" />  

      <!-- 数据源配置, 使用druid JDBC连接池 -->
      <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close">
          <property name="url" value="${jdbc.url}" />
          <property name="username" value="${jdbc.username}"></property>
          <property name="password" value="${jdbc.password}" />
          <property name="filters" value="stat"></property>
          <property name="maxActive" value="${jdbc.pool.maxActive}"></property>
          <property name="initialSize" value="${jdbc.pool.initialSize}"></property>
          <property name="maxWait" value="${jdbc.pool.maxWait}"></property>
          <property name="minIdle" value="${jdbc.pool.minIdle}"></property>
          <property name="timeBetweenEvictionRunsMillis" value="${jdbc.pool.timeBetweenEvictionRunsMillis}"></property>
          <property name="minEvictableIdleTimeMillis" value="${jdbc.pool.minEvictableIdleTimeMillis}"></property>
          <property name="validationQuery" value="SELECT 'x'"></property>
          <property name="testWhileIdle" value="${jdbc.pool.testWhileIdle}"></property>
          <property name="testOnBorrow" value="${jdbc.pool.testOnBorrow}"></property>
          <property name="testOnReturn" value="${jdbc.pool.testOnReturn}"></property>
          <property name="poolPreparedStatements" value="${jdbc.pool.poolPreparedStatements}"></property>
          <property name="maxOpenPreparedStatements" value="${jdbc.pool.maxOpenPreparedStatements}"></property>
      </bean>

      <!-- redis -->
      <bean id="redisConnectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
          <property name="hostName" value="${redis.hostName}" />
          <property name="port" value="${redis.port}" />
          <property name="password" value="${redis.password}" />
          <property name="poolConfig" ref="redisPoolConfig" />
      </bean>
  </beans>
</beans>

20 artículos originales publicados · Me gusta0 · Visitas 930

Supongo que te gusta

Origin blog.csdn.net/vistaed/article/details/105558845
Recomendado
Clasificación