RootConfig类
发布日期:2021-08-17 06:32:55 浏览次数:4 分类:技术文章

本文共 11769 字,大约阅读时间需要 39 分钟。

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 import org.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     @Override104     @Bean(name="annotationDrivenTransactionManager")105     //P334106     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;//    }    }

 

转载于:https://www.cnblogs.com/YUJIE666/p/10336545.html

转载地址:https://blog.csdn.net/weixin_30838921/article/details/98949359 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Windows 7 设置允许多用户同时远程桌面连接
下一篇:实验二

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月30日 17时01分54秒