RootConfig类
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;
// } }
无行号版本:
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类的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- 零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...
- 基于java代码的Spring-mvc框架配置
Spring 版本 4.3.2 maven项目 1.首先上项目目录图,主要用到的配置文件,略去css和js的文件 引包: 2.主要代码: (1)NetpageWebAppInitializer类 ...
- Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)
在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...
- MyBatis 3 与 Spring 4 整合关键
MyBatis 3 与 Spring 4 整合关键 MyBatis与Spring整合,首先需要一个Spring数据源.其次有两个关键,配置sqlSessionFactory时需要配置扫描sql映射xm ...
- Spring学习笔记1——IOC: 尽量使用注解以及java代码
在实战中学习Spring,本系列的最终目的是完成一个实现用户注册登录功能的项目. 预想的基本流程如下: 1.用户网站注册,填写用户名.密码.email.手机号信息,后台存入数据库后返回ok.(学习IO ...
- Spring MVC 零配置 / Spring MVC JavaConfig
1. Spring MVC的核心就是DispatcherServlet类,Spring MVC处理请求的流程如下图所示: 2. Spring MVC中典型的上下文层次 当我们初始化一个Dispatch ...
- spring、springmvc和mybatis整合(java config方式)
之前项目中使用ssm框架大多是基于xml的方式,spring3.0以后就提供java config的模式来构建项目,并且也推荐使用这种方式,自从接触过springboot后,深深感受到这种纯java配 ...
- spring in action学习笔记十五:配置DispatcherServlet和ContextLoaderListener的几种方式。
在spring in action中论述了:DispatcherServlet和ContextLoaderListener的关系,简言之就是DispatcherServlet是用于加载web层的组件的 ...
随机推荐
- 查找->动态查找表->B+树(无代码)
文字描述 B+树定义 B+树是应文件系统所需而出的一种B-树的变型树.一棵m阶的B+树和m阶的B-树的差异在于: (1)有n棵子树的结点中含有n个关键字 (2)所有的叶子结点中包含了全部关键字的信息, ...
- AT3611 Tree MST 点分治+最小生成树
正解:点分治+最小生成树 解题报告: 传送门! 然后这题麻油翻译,,,所以这边的建议是先说下题意呢亲 所以题意大概就是说,给一棵n个节点的树,树上每个点都有个权值,然后构造一个完全图,(u,v)之间连 ...
- 【PyQt5-Qt Designer】制作炫酷的启动界面+进度条
QProgressBar 进度条+QSplashScreen 启动界面 知识点: 1.进度条 #将进度条的最大值.最小值设置为相同时,产生跑马灯效果 self.progressBar.setMinim ...
- 27-5-LTDC控制LCD显示屏
1.显示原理 (1).液晶显示是分2层显示的,配置层级结构体参数再将数据输出到混合器合成,显示再液晶上. (2).LTDC初始化结构体 控制 LTDC 涉及到非常多的寄存器,利用 LTDC 初始化结构 ...
- IDEA与Elicpse
IDEA的项目 = Elicpse的工作区 Elicpse的项目 = IDEA的模块 修改信息提示 Alt+/ 关闭当前窗口 Ctrl+W
- CentOS7下Docker的安装与使用
前言 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...
- axios封装异步获取数据的函数以及全局拦截
https://www.cnblogs.com/momozjm/p/7273272.html https://www.jianshu.com/p/9a1b99cd2ba6
- [硬件]Robot运动控制
思考问题:机器人运动控制如何与图形界面交互? 不得不说,先锋机器人的软件做的真不怎么样.图形界面交互用户体验很差. 现在我遇到一个很现实的问题:SLAM需要采集激光数据和机器人的位姿,同时我还要再这个 ...
- 为python.exe或者ipython.exe添加环境变量
在pycharm下可以把Module包添加到interpreter paths,从而实现import Module. 而若直接使用ipython,或者python.exe时,它们的环境变量并没有包含M ...
- 教你写Makefile(很全,含有工作经验的)
Makefile 值得一提的是,在Makefile中的命令,必须要以[Tab]键开始. 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了 ...