RootConfig類
阿新 • • 發佈:2019-01-30
string 行號 value 最大 exceptio red 空閑 type pac
1 package com.ssm.yjblogs.config; 2 3 import java.util.Properties; 4 5 import javax.sql.DataSource; 6 7 import org.apache.commons.dbcp.BasicDataSourceFactory; 8 import org.mybatis.spring.SqlSessionFactoryBean; 9 import org.mybatis.spring.mapper.MapperScannerConfigurer; 10 importorg.springframework.context.annotation.Bean; 11 import org.springframework.context.annotation.ComponentScan; 12 import org.springframework.context.annotation.ComponentScan.Filter; 13 import org.springframework.context.annotation.Configuration; 14 import org.springframework.context.annotation.FilterType;15 import org.springframework.core.io.ClassPathResource; 16 import org.springframework.core.io.Resource; 17 //import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; 18 //import org.springframework.data.redis.core.RedisTemplate; 19 //import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;20 //import org.springframework.data.redis.serializer.RedisSerializer; 21 //import org.springframework.data.redis.serializer.StringRedisSerializer; 22 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 23 import org.springframework.stereotype.Repository; 24 import org.springframework.stereotype.Service; 25 import org.springframework.transaction.PlatformTransactionManager; 26 import org.springframework.transaction.annotation.EnableTransactionManagement; 27 import org.springframework.transaction.annotation.TransactionManagementConfigurer; 28 29 //import redis.clients.jedis.JedisPoolConfig; 30 31 @Configuration 32 //定義Spring 掃描的包 33 @ComponentScan(value= "com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value ={Service.class})}) 34 //使用事務驅動管理器 35 @EnableTransactionManagement 36 //實現接口TransactionManagementConfigurer,這樣可以配置註解驅動事務 37 public class RootConfig implements TransactionManagementConfigurer { 38 39 private DataSource dataSource = null; 40 41 /** 42 * 配置數據庫. 43 * @return 數據連接池 44 */ 45 @Bean(name = "dataSource") //使用@Bean裝配數據源 P245 46 public DataSource initDataSource() { 47 if (dataSource != null) { 48 return dataSource; 49 } 50 Properties props = new Properties(); 51 props.setProperty("driverClassName", "com.mysql.jdbc.Driver");//jdbc驅動 52 props.setProperty("url", "jdbc:mysql://localhost:3306/chapter22");//url 53 props.setProperty("username", "yujie");//數據庫賬號 54 props.setProperty("password", "123456");//數據庫密碼 55 props.setProperty("maxActive", "200");//最大連接數量 56 props.setProperty("maxIdle", "20");//最大的空閑連接數量 57 props.setProperty("maxWait", "30000");//最大的等待時間,單位是毫秒 58 try { 59 dataSource = BasicDataSourceFactory.createDataSource(props); 60 } catch (Exception e) { 61 e.printStackTrace(); 62 } 63 return dataSource; 64 } 65 66 /*** 67 * 配置SqlSessionFactoryBean 68 * @return SqlSessionFactoryBean 69 */ 70 @Bean(name="sqlSessionFactory") 71 public SqlSessionFactoryBean initSqlSessionFactory() { 72 SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean(); 73 sqlSessionFactory.setDataSource(initDataSource()); 74 //配置MyBatis配置文件 75 //src下的mybatis配置文件 76 Resource resource = new ClassPathResource("mybatis/mybatis-config.xml"); 77 sqlSessionFactory.setConfigLocation(resource); 78 return sqlSessionFactory; 79 } 80 81 /*** 82 * 通過自動掃描,發現MyBatis Mapper接口 83 * @return Mapper掃描器 84 */ 85 //P325 86 @Bean 87 public MapperScannerConfigurer initMapperScannerConfigurer() { 88 MapperScannerConfigurer msc = new MapperScannerConfigurer(); 89 //以com.開頭的 90 msc.setBasePackage("com.*"); 91 //設置SqlSessionFactoryBean名字 92 msc.setSqlSessionFactoryBeanName("sqlSessionFactory"); 93 //把註解為@Repository的接口掃描為Mapper對象,存放在容器中,對於多個包的掃描可以用半角逗號分隔開來 94 //註解為@Repository的接口表示數據訪問層(DAO, Data Access Object) 95 msc.setAnnotationClass(Repository.class); 96 return msc; 97 } 98 99 100 /** 101 * 實現接口方法,註冊註解事務,當@Transactional 使用的時候產生數據庫事務 102 */ 103 @Override 104 @Bean(name="annotationDrivenTransactionManager") 105 //P334 106 public PlatformTransactionManager annotationDrivenTransactionManager() { 107 DataSourceTransactionManager transactionManager = 108 new DataSourceTransactionManager(); 109 transactionManager.setDataSource(initDataSource()); 110 return transactionManager; 111 } 112 113 // @Bean(name = "redisTemplate") 114 // public RedisTemplate initRedisTemplate() { 115 // JedisPoolConfig poolConfig = new JedisPoolConfig(); 116 // //最大空閑數 117 // poolConfig.setMaxIdle(50); 118 // //最大連接數 119 // poolConfig.setMaxTotal(100); 120 // //最大等待毫秒數 121 // poolConfig.setMaxWaitMillis(20000); 122 // //創建Jedis鏈接工廠 123 // JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig); 124 // connectionFactory.setHostName("localhost"); 125 // connectionFactory.setPort(6379); 126 // //調用後初始化方法,沒有它將拋出異常 127 // connectionFactory.afterPropertiesSet(); 128 // //自定Redis序列化器 129 // RedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); 130 // RedisSerializer stringRedisSerializer = new StringRedisSerializer(); 131 // //定義RedisTemplate,並設置連接工程[修改為:工廠] 132 // RedisTemplate redisTemplate = new RedisTemplate(); 133 // redisTemplate.setConnectionFactory(connectionFactory); 134 // //設置序列化器 135 // redisTemplate.setDefaultSerializer(stringRedisSerializer); 136 // redisTemplate.setKeySerializer(stringRedisSerializer); 137 // redisTemplate.setValueSerializer(stringRedisSerializer); 138 // redisTemplate.setHashKeySerializer(stringRedisSerializer); 139 // redisTemplate.setHashValueSerializer(stringRedisSerializer); 140 // return redisTemplate; 141 // } 142 143 }
無行號版本:
package com.ssm.yjblogs.config; import java.util.Properties; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.mapper.MapperScannerConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan.Filter; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.FilterType; import org.springframework.core.io.ClassPathResource; import org.springframework.core.io.Resource; //import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; //import org.springframework.data.redis.core.RedisTemplate; //import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; //import org.springframework.data.redis.serializer.RedisSerializer; //import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.TransactionManagementConfigurer; //import redis.clients.jedis.JedisPoolConfig; @Configuration //定義Spring 掃描的包 @ComponentScan(value= "com.*", includeFilters= {@Filter(type = FilterType.ANNOTATION, value ={Service.class})}) //使用事務驅動管理器 @EnableTransactionManagement //實現接口TransactionManagementConfigurer,這樣可以配置註解驅動事務 public class RootConfig implements TransactionManagementConfigurer { private DataSource dataSource = null; /** * 配置數據庫. * @return 數據連接池 */ @Bean(name = "dataSource") //使用@Bean裝配數據源 P245 public DataSource initDataSource() { if (dataSource != null) { return dataSource; } Properties props = new Properties(); props.setProperty("driverClassName", "com.mysql.jdbc.Driver");//jdbc驅動 props.setProperty("url", "jdbc:mysql://localhost:3306/chapter22");//url props.setProperty("username", "yujie");//數據庫賬號 props.setProperty("password", "123456");//數據庫密碼 props.setProperty("maxActive", "200");//最大連接數量 props.setProperty("maxIdle", "20");//最大的空閑連接數量 props.setProperty("maxWait", "30000");//最大的等待時間,單位是毫秒 try { dataSource = BasicDataSourceFactory.createDataSource(props); } catch (Exception e) { e.printStackTrace(); } return dataSource; } /*** * 配置SqlSessionFactoryBean * @return SqlSessionFactoryBean */ @Bean(name="sqlSessionFactory") public SqlSessionFactoryBean initSqlSessionFactory() { SqlSessionFactoryBean sqlSessionFactory = new SqlSessionFactoryBean(); sqlSessionFactory.setDataSource(initDataSource()); //配置MyBatis配置文件 //src下的mybatis配置文件 Resource resource = new ClassPathResource("mybatis/mybatis-config.xml"); sqlSessionFactory.setConfigLocation(resource); return sqlSessionFactory; } /*** * 通過自動掃描,發現MyBatis Mapper接口 * @return Mapper掃描器 */ //P325 @Bean public MapperScannerConfigurer initMapperScannerConfigurer() { MapperScannerConfigurer msc = new MapperScannerConfigurer(); //以com.開頭的 msc.setBasePackage("com.*"); //設置SqlSessionFactoryBean名字 msc.setSqlSessionFactoryBeanName("sqlSessionFactory"); //把註解為@Repository的接口掃描為Mapper對象,存放在容器中,對於多個包的掃描可以用半角逗號分隔開來 //註解為@Repository的接口表示數據訪問層(DAO, Data Access Object) msc.setAnnotationClass(Repository.class); return msc; } /** * 實現接口方法,註冊註解事務,當@Transactional 使用的時候產生數據庫事務 */ @Override @Bean(name="annotationDrivenTransactionManager") //P334 public PlatformTransactionManager annotationDrivenTransactionManager() { DataSourceTransactionManager transactionManager = new DataSourceTransactionManager(); transactionManager.setDataSource(initDataSource()); return transactionManager; } // @Bean(name = "redisTemplate") // public RedisTemplate initRedisTemplate() { // JedisPoolConfig poolConfig = new JedisPoolConfig(); // //最大空閑數 // poolConfig.setMaxIdle(50); // //最大連接數 // poolConfig.setMaxTotal(100); // //最大等待毫秒數 // poolConfig.setMaxWaitMillis(20000); // //創建Jedis鏈接工廠 // JedisConnectionFactory connectionFactory = new JedisConnectionFactory(poolConfig); // connectionFactory.setHostName("localhost"); // connectionFactory.setPort(6379); // //調用後初始化方法,沒有它將拋出異常 // connectionFactory.afterPropertiesSet(); // //自定Redis序列化器 // RedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer(); // RedisSerializer stringRedisSerializer = new StringRedisSerializer(); // //定義RedisTemplate,並設置連接工程[修改為:工廠] // RedisTemplate redisTemplate = new RedisTemplate(); // redisTemplate.setConnectionFactory(connectionFactory); // //設置序列化器 // redisTemplate.setDefaultSerializer(stringRedisSerializer); // redisTemplate.setKeySerializer(stringRedisSerializer); // redisTemplate.setValueSerializer(stringRedisSerializer); // redisTemplate.setHashKeySerializer(stringRedisSerializer); // redisTemplate.setHashValueSerializer(stringRedisSerializer); // return redisTemplate; // } }
RootConfig類