​在springboot相比于springmvc提供了一个极为重要的功能,就是自定义start(自定义jar包),同时spring也提供了一大波start。如spring-boot-starter-data-redis,spring-boot-starter-amqp。本文将教你如何自定义start。例子为从start中获取数据源。

1.自定义start能干什么

在架构考虑时,或许有一些通用方法抽取成start,在项目中使用时,直接引入即可。

2.创建自定义start

1.创建一个新的maven项目

创建一个普通的maven项目,作为start的开发环境

2.新建application.properties

在maven中创建application.properties文件。同时添加以下代码,作为常量配置。

login.className = com.mysql.jdbc.Driver
login.url=jdbc:mysql://localhost:3306/humanresource?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
login.user=root
login.password=root

3.创建LoginCheckProperties

创建类LoginCheckProperties,其中需要@ConfigurationProperties注解,prefix = “login” 的意思是调用项目中 ,application.properties中配置的参数。

@ConfigurationProperties(prefix = "login")
public class LoginCheckProperties {private String className;private String url;private String user;private String password;public String getClassName() {return className;}public void setClassName(String className) {this.className = className;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUser() {return user;}public void setUser(String user) {this.user = user;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}

4.Config类

其中@EnableConfigurationProperties(LoginCheckProperties.class) 注解为固定写法,意义是实现自动配置上文中的Properties类。

@Configuration
@EnableConfigurationProperties(LoginCheckProperties.class)
@MapperScan(basePackages = MasterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "masterSqlSessionFactory")
public class MasterDataSourceConfig {// 精确到 master 目录,以便跟其他数据源隔离static final String PACKAGE = "com.airboot.bootdemo.dao.master";static final String MAPPER_LOCATION = "classpath*:mapper/master/*.xml";private String className;private String url;private String user;private String password;public MasterDataSourceConfig(LoginCheckProperties loginCheckProperties) {this.className = loginCheckProperties.getClassName();this.url = loginCheckProperties.getUrl();this.user = loginCheckProperties.getUser();this.password = loginCheckProperties.getPassword();}@Bean(name = "masterDataSource")public DataSource masterDataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setDriverClassName(className);dataSource.setUrl(url);dataSource.setUsername(user);dataSource.setPassword(password);return dataSource;}@Bean(name = "masterTransactionManager")public DataSourceTransactionManager masterTransactionManager() {return new DataSourceTransactionManager(masterDataSource());}@Bean(name = "masterSqlSessionFactory")public SqlSessionFactory masterSqlSessionFactory(@Qualifier("masterDataSource") DataSource masterDataSource)throws Exception {final SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();sessionFactory.setDataSource(masterDataSource);sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(MasterDataSourceConfig.MAPPER_LOCATION));return sessionFactory.getObject();}
}

5.添加META-INF/spring.factories

最后在resources中新建文件夹META-INF,在其中建立文件spring.factories路径为上文Config中的路径。(需要向被引用者暴露)

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.*.*.*.*A,\
com.*.*.*.*B,\
com.*.*.*.*C,\
com.*.*.*.*D,\
com.*.*.*.*Util

6.显示start注释(选读)

如果想要在jar中加入注释 则需要在pom文件中修改以下代码 这样会生成一个 .jar 和一个:source.jar 需要将这两个jar包都加入项目中。

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.4</version><configuration><aggregate>true</aggregate></configuration><executions><execution><id>attach-javadocs</id><goals><goal>jar</goal></goals><configuration><additionalparam>-Xdoclint:none</additionalparam></configuration></execution></executions></plugin></plugins></build>

7.打包

使用命令mvn install。即可生成jar包。

8.引入jar包

       <dependency><groupId>cn.baocl</groupId><artifactId>check-spring-boot-starter</artifactId><version>1.1-SNAPSHOT</version></dependency>

在引用项目中的pom文件配置groupId,artifactId,version即可。下文为start中的pom。与上文配置需要对应。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.baocl</groupId><artifactId>check-spring-boot-starter</artifactId><version>1.1-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.1.RELEASE</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><!-- Druid 数据连接池依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><version>2.2.1.RELEASE</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope><version>8.0.16</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional><version>2.2.1.RELEASE</version></dependency></dependencies></project>

9.使用

然后就可以使用了,本文实现的为主项目定义一个从数据源。所以在主项目中就可以使用上文定义的数据源啦。

10.项目结构

springboot自定义start解析(start中配置从数据源)相关推荐

  1. 视图解析器中配置前缀和后缀---SpringMVC学习笔记(五)

    springmvc.xml中配置的视图解析器中增加jsp路径的前缀和后缀配置: <!-- 配置视图解析器 --><bean class="org.springframewo ...

  2. Spring中配置DataSource数据源的几种选择

    Spring中配置DataSource数据源的几种选择 在Spring框架中有如下3种获得DataSource对象的方法: 从JNDI获得DataSource. 从第三方的连接池获得DataSourc ...

  3. websphere配置oracle数据源,websphere70中配置oracle数据源及部署.doc

    websphere70中配置oracle数据源及部署.doc 人体检测应用发布过程1.准备A复制应用包.数据库连接文件OJDBC6JAR(不同WAS版本需要文件不同这里以WAS7为例)到应用服务器B开 ...

  4. tomcat中配置jndi数据源以便spring获取

    [0]README 0)intro to jndi, plase visit intro to jndi: 1)本文译自 Configuring Spring MVC JdbcTemplate wit ...

  5. tomcat配置mysql数据源_Tomcat中配置mysql数据源

    上面的就是老师给我们的关于数据库配置的文档,看起来好像不长,但是有几点需要特别注意,下面我就自己的理解来谈谈能关系到成败的几点,同时,将我出错的原因说明一下. 1.先看这段配置: type=" ...

  6. springboot中配置多数据源mybatisPlus

    文章目录 1 背景 2 版本 3 配置 3.1 pom配置 3.1.1 父类pom 3.1.2 pom依赖 3.1.3 插件 3.2 application.yml配置 3.3 启动类配置 4 使用 ...

  7. springboot中配置mybatis数据源,使用阿里的 Druid 数据库连接池

    参考了很多文章,记录下自己的学习过程! 参考:https://blog.csdn.net/weixin_40776321/article/details/99633110 1. 在pom.xml中添加 ...

  8. Jboss 中配置 Oracle数据源

    C:\jbdevstudio\jboss-eap\jboss-as\server\default\deploy\MBDB.XML 前提: JBOSS_HOME=jboss的home目录(安装目录) 有 ...

  9. 32位数据源中没有mysql_[SpringBoot实战]快速配置多数据源(整合MyBatis)

    前言 由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据 ...

  10. db2 springboot 整合_[SpringBoot]快速配置多数据源(整合MyBatis)

    前言 由于业务需求,需要同时在SpringBoot中配置两套数据源(连接两个数据库),要求能做到service层在调用各数据库表的mapper时能够自动切换数据源,也就是mapper自动访问正确的数据 ...

最新文章

  1. 当数据库结构改变时,需要将数据库删除再创建
  2. python dict批量选择_Python 中有 3 个不可思议的返回功能
  3. 科大讯飞智慧医疗再出重磅,“智医助理”机器人顺利通过临床执业医师综合笔试...
  4. c++中的enum类型
  5. 打开My Lead detail page会发生timeout的错误的解决方案
  6. VueThink配置
  7. Android基础学习第二篇—Activity
  8. mysql推荐内存_MySQL大内存配置方案 如my-medium.ini、my-huge.ini等
  9. 物联网卡有哪几种类型
  10. 编码顺序、frame_num和POC
  11. cad相对坐标快捷键_CAD入门必记的15个命令,只要熟悉这15个命令几乎就可以走遍天下...
  12. flash player 离线版下载地址
  13. 化验室计算机分级管理,[欧盟法规] 欧盟受控实验室之《计算机化系统验证》摒弃了GAMP5的分类? (1之3)...
  14. 微信公众号推广分享二维码,关联扫码关注的客户
  15. 使用AutoJS实现2019天猫双11喵币自动领取
  16. 苹果状态栏HTML,webview内嵌的html页面,在ios系统上12以上版本和12以下版本状态栏效果不一样...
  17. 结合Java和机器学习技术,如何驾驭大数据提升业务效率和竞争力?
  18. [数学建模(四)]MATLAB神经网络工具箱的简单应用
  19. Visual Basic 6.0编写简单网页浏览器
  20. 国内生产总值核算相关公式

热门文章

  1. 简述计算机病毒的传播4种途径,4计算机病毒的传播途径.ppt
  2. 带有Lowe’s算法的SIFT特征提取和匹配
  3. CVPR 2020 论文大盘点-去雨去雾去模糊篇
  4. Android仿人人客户端(v5.7.1)——项目框架新做的调整描述(项目中基类java源码)
  5. of引导的后置定语的总结
  6. 软考-嵌入式系统设计师-笔记:历年专业英语题
  7. 关于防火墙以及其作用
  8. 边缘检测-Canny
  9. Function eregi is deprecated (解决方法)
  10. 【机器学习】特征工程的最佳实践