Spring boot 基于注解方式配置datasource
Spring boot 基于注解方式配置datasource
Xml配置
我们先来回顾下,使用xml配置数据源。
步骤:
先加载数据库相关配置文件;
配置数据源;
配置sqlSessionFactory,注入数据源
具体如下:
一:设置数据配置信息文件
先在spring的配置文件中,加载数据库配置文件
<!-- 读取参数配置 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:dbconfig.properties</value>
<value>classpath:redis.properties</value>
</list>
</property>
</bean>
二:配置datasorce相关信息
2.1:数据库信息配置
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 数据库基本信息配置 -->
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<property name="driverClassName" value="${driverClassName}" />
<property name="filters" value="${filters}" />
<!-- 最大并发连接数 -->
<property name="maxActive" value="${maxActive}" />
<!-- 初始化连接数量 -->
<property name="initialSize" value="${initialSize}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${maxWait}" />
<!-- 最小空闲连接数 -->
<property name="minIdle" value="${minIdle}" />
</bean>
2.2:sqlsessionFactroy配置:
有了大致的思路后,我们再来看看spring boot基于注解方式怎么配置数据源。
注解配置
先要知道几个注解:
@Configuration:此注解看用理解为spring的一个xml文件
@PropertySource:对应原xml中设置配置文件的
@MapperScan:就是xml中扫描的基包;
sqlSessionFactoryRef:就是注入sqlSessionFactory的
@Bean:这个注解就是原xml中bean标签的。
先了解这几个注解之后,我们就可以开始写代码了(在文章最后,凯哥会把xml和注解的对应关系列出来,方便大家理解)。
一:加载数据库配置文件
二:配置datasorce相关信息
2.1:数据库信息配置
我们先来看看数据库配置文件怎么配置的:
在看看代码中怎么获取到这些值的:
说明:
通过上面注解之后,启动服务后,属性:jdbcUrl这个属性的值就会在classpath下的mysql-core-jdbc.properties文件中查找前缀为mysql.core的后面为:jdbc-url这个可以。从而就可以获取到数据库连接的url了。
数据库连接信息获取到了,接下来,我们来配置datasource信息:
说明:
通过这个bean注解之后,就可以获取到dataSource对象了。
2.2:sqlsessionFactroy配置:
这样就可以获取到sqlSessionFactory对象了。
XML配置和注解配置比较:
1:Spring配置文件:
xml配置:一个xml文件
注解配置:@Configuration
xml配置示例:springApplication.xml
注解配置示例:
@Configuration
public class MysqlCoreConfig {}
2:一个bean:
xml配置:<bean></bean>
注解配置:@Bean
xml配置示例:
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> </bean>
注解配置示例:
@Bean
public DataSource mysqlCoreDataSource() {}
3:加载配置文件
Xml配置:<property name="locations"> </property>
注解配置:@PropertySource
Xml配置示例:
<property name="locations">
<list>
<value>classpath:dbconfig.properties</value>
</list>
</property>
注解配置示例:@PropertySource("classpath:mysql-core-jdbc.properties")
完整代码:
import lombok.Data;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import javax.sql.DataSource;
/**
* 通过注解方式配置数据库连接配置
*/
@Data
@Configuration
@ConfigurationProperties(prefix = "mysql.core")
@PropertySource("classpath:mysql-core-jdbc.properties")
@MapperScan(basePackages ="com.kaigejava.model.mappers" ,sqlSessionFactoryRef = "kaigeMysqlDataSource")
public class KaigeMySqlCoreConfig {
private String jdbcUrl;
private String jdbcUserName;
private String jdbcPassword;
private String jdbcDriver;
private String rootMapper; //mapper文件在classpath下存放的根路径
private String aliasesPackage; //别名包
/**
* 配置连接池信息
* @return
*/
@Bean
public DataSource kaigeMysqlCreateDataSource(){
HikariDataSource dataSource = new HikariDataSource();
//添加数据库访问url
dataSource.setJdbcUrl(getJdbcUrl());
dataSource.setUsername(getJdbcUserName());
dataSource.setPassword(getJdbcPassword());
dataSource.setDriverClassName(getJdbcDriver());
//配置最大 最小连接数量
dataSource.setMinimumIdle(50);
dataSource.setMinimumIdle(10);
return dataSource;
}
/**
* 获取sqlSessionFactory
* @return
*/
public SqlSessionFactoryBean kaigeMysqlCoreSqlSessionFactory(@Qualifier("kaigeMysqlDataSource") DataSource kaigeMysqlDataSource)
throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(kaigeMysqlDataSource);
//处理mapper位置的
PathMatchingResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resourcePatternResolver.getResources(getMapperFileRealPath()));
sqlSessionFactoryBean.setTypeAliasesPackage(getAliasesPackage());
org.apache.ibatis.session.Configuration mybatisConfig = new org.apache.ibatis.session.Configuration();
mybatisConfig.setMapUnderscoreToCamelCase(true);
sqlSessionFactoryBean.setConfiguration(mybatisConfig);
return sqlSessionFactoryBean;
}
/**
* 拼接mapper文件地址的
* @return
*/
public String getMapperFileRealPath(){
return new StringBuffer().append("classpath:").append(getRootMapper()).append("/**/*.xml").toString();
}
}
Spring boot 基于注解方式配置datasource的更多相关文章
- 跟着刚哥学习Spring框架--通过注解方式配置Bean(四)
组件扫描:Spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件. 特定组件包括: 1.@Component:基本注解,识别一个受Spring管理的组件 2.@Resposit ...
- Spring IoC — 基于注解的配置
基于XML的配置,Bean定义信息和Bean实现类本身是分离的,而采用基于注解的配置方式时,Bean定义信息即通过在Bean实现类上标注注解实现. @Component:对类进行标注,Spring容器 ...
- spring之通过注解方式配置Bean(一)
(1)组件扫描:spring能够从classpath下自动扫描.侦测和实例化具有特定注解的组件. (2)特定组件包括: @Component:基本注解,标识一个受spring管理的组件: @Respo ...
- Spring中基于注解方式管理bean
操作步骤 第一步:导入相关jar包 spring IoC的基本包 Spring支持注解的Jar包 第二步:创建Spring配置文件,ApplicationContext.xml 引入约束和开启注解扫描 ...
- Hibernate基于注解方式配置来实现实体和数据库之间存在某种映射关系
实体和数据库之间存在某种映射关系,hibernate根据这种映射关系完成数据的存取.在程序中这种映射关系由映射文件(*.hbm.xml)或者java注解(@)定义. 本文以java注解的形式总结映射关 ...
- Spring使用ioc注解方式配置bean
context层 : 上下文环境/容器环境 applicationContext.xml 具体示例: 现在ioc容器中添加context层支持: 包括添加xmlns:context.xsi:schem ...
- Spring初学之注解方式配置bean
直接看代码: UserController.java package spring.beans.annotation.controller; import org.springframework.be ...
- Spring boot 基于Spring MVC的Web应用和REST服务开发
Spring Boot利用JavaConfig配置模式以及"约定优于配置"理念,极大简化了基于Spring MVC的Web应用和REST服务开发. Servlet: package ...
- 跟着刚哥学习Spring框架--通过XML方式配置Bean(三)
Spring配置Bean有两种形式(XML和注解) 今天我们学习通过XML方式配置Bean 1. Bean的配置方式 通过全类名(反射)的方式 √ id:标识容器中的bean.id唯一. √ cl ...
随机推荐
- BGP联邦配置
BGP联盟建立: ①:启用BGP进程. ②:关闭同步与自动汇总. ③:router-id ④:公布自己所属联盟.——confederation identifier ID ⑤:表达自己的与其他对等(p ...
- 查看 vps 进程网络流量
弄好了 vps 以后,感觉网络流量走的有点多,决定查查看到底什么情况. 首先安装 sar 来看看各个设备消耗的流量 apt-get install sysstat sar 的参数 DEV 表示网口, ...
- centos 7.4 磁盘空间不足,扩容根分区 --lvm模式
背景:根分区磁盘空间不足,需要扩容root磁盘空间 1.查看现有磁盘信息,可以看出根分区有26G [root@localhost ~]# df -h 2.查看新增加的磁盘信息(改虚拟机已经添加好了,不 ...
- MySQL-复制技术演进过程
复制技术的演进可以分为:基于数据安全的复制,基于效率的复制 基于数据安全的复制 异步复制 参考: https://baijiahao.baidu.com/s?id=163939455634386120 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring基于XML装配Bean
Bean 的装配可以理解为依赖关系注入,Bean 的装配方式也就是 Bean 的依赖注入方式.Spring 容器支持多种形式的 Bean 的装配方式,如基于 XML 的 Bean 装配.基于 Anno ...
- PAT Advanced 1155 Heap Paths (30) [DFS, 深搜回溯,堆]
题目 In computer science, a heap is a specialized tree-based data structure that satisfies the heap pr ...
- great vision|be quite honest with you
won a national championship拿到全国冠军 come play for you参加你的队伍 Really not true事实并非如此 Being the Socratic p ...
- 面向对象变成(OOP)-创建类和使用类
1.1.1对象的抽象:抽象是一种归纳或总结,对象是现实世界物体特征的实例. (1)一切皆是对象. (2)类是对象的抽象. 1.1.2 对象的使用: 当对象被抽象为类以后,就可以创建具体的实例来操作了. ...
- composer命令卡慢,使用国内源
执行composer install.update 和require的时候,遇到卡住不动的情况,可以切换到国内阿里云的源 composer config -g repo.packagist compo ...
- 吴裕雄--天生自然 JAVASCRIPT开发学习: DOM
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...