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 ...
随机推荐
- 创建maven项目时pom.xml报错的解决方法
创建maven项目时pom.xml时: 出现如下报错信息: Failure to transfer commons-lang:commons-lang:jar:2.1 from https://rep ...
- oracle数据库语言(1)--数据定义语言
1.数据定义语言 (DDL)DATE DEFINITION LANGUAGE 作用是用于增删改 数据库对象 (1) 创建表格 CREATE TABLE EMP ( -------创建 名为 EMP ...
- java String字符串判断
判断空字符串:StringUtils.isBlank StringUtils.isBlank(null) = true StringUtils.isBlank("") = true ...
- python阴阳鱼绘制(使用turtle)
from turtle import * def draw(radius ,color1 , color2): #设置画笔的大小 width(3) #设置画笔颜色和填充颜色 color("b ...
- springboot整合mybatis与thymeleaf
1.创建springboot项目 (1)选择Spring Initializr (2)填写自己的Group 与 Artifact (3)选择依赖框架 等待maven下载好依赖和插件即可 2.主配置文件 ...
- c语言寒假大作战
一.表格 问题 回答 这个作业属于那个课程 2019级计科一班 这个作业要求在哪里 寒假大作战01 这个作业的目标是 gitee注册.登录.上传文件.克隆仓库与 git基础命令学习与使用 作业正文 作 ...
- 了解OOM
1)什么是OOM? OOM,全称“Out Of Memory”,翻译成中文就是“内存用完了”,来源于java.lang.OutOfMemoryError.看下关于的官方说明: Thrown when ...
- 从1到n整数中1的个数
[问题]求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.A ...
- Python调用OpenCV读显写
OpenCV提供了python的接口,而且很重要的一点是python下的很多接口名与C++的接口名是一样的,这一篇先记录python调用OpenCV去读取图像.显示图像和保存图像. 1.OpenCV读 ...
- codeforces 596 C. p-binary
题意:给你一个n和一个p,让你用 (2k+p)进制来表示n,找出用最少的(2k+p)来表示n. 分析:首先我们看到2k,首先下想到二进制,我们可以我们列出式子,也就是 (2x1 + p)+(2x2 + ...