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层的组件的 ...
随机推荐
- http请求的基本介绍
响应码 1xx:接收到请求并且继续处理 ,这个是一瞬间的状态,一般不关注 2xx:请求已被接收,理解,处理,表示正确 3xx:请求重定向 4xx:客户请求语法错误或者请求资源不存在,这个是客户端错误 ...
- 主动触发input框的失去焦点事件,阻止输入法跳出
今天遇到个问题,我在手机做一个选择生日的功能,但是当我点击input框时,事件选择插件和输入法都弹出来了,很丑,然后就想阻止输入法弹出来, 网上一个方法是:在input框的获取焦点事件里,主动触发失去 ...
- SpringBoot 使用RedisTemplate操作Redis
新版: import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.T ...
- HD200703
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #inc ...
- g++编译多个文件
注意:头文件不用去指定,其是由#include命令进行管理的,只需要编译cpp文件就可以了: 举例: 有以下三个文件: a.h a.cpp main.cpp 那么编译可以有以下两种方式: 1.分开编译 ...
- Linux下Zookeeper的安装
Linux下Zookeeper的安装 安装环境: Linux:centos6.4 Jdk:1.7以上版本 Zookeeper是java开发的可以运行在windows.linux环境.需要先安装jdk. ...
- Java与openssl的RSA算法
1.java生成的公私钥格式为 pkcs8(PKCS8EncodedKeySpec), 而openssl默认生成的公私钥格式为 pkcs1 2.java采用的rsa默认补齐方式是pkcs1 (RSA/ ...
- 1-AO3402MOS管使用
1.做电源设计,或者做驱动方面的电路,难免要用到MOS管.MOS管有很多种类,也有很多作用.做电源或者驱动的使用,当然就是用它的开关作用. 2.MOS管的三个极,G.S.D分别代表是什么? (1).判 ...
- bat实现获取文件每行内容,for循环中运行多条命令
关键词:bat,bat获取文件内容 1.获取每行内容 @echo offfor /f "delims=" %%i in (config.txt) do (echo "%% ...
- what's the python之模块
正则表达式 首先,我们引入了正则表达式的知识.所谓正则表达式,就是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对 ...