当前位置: 首页 > news >正文

自定义启动器

🍁博客主页:👉不会压弯的小飞侠
✨欢迎关注:👉点赞👍收藏⭐留言✒
✨系列专栏:👉SpringBoot专栏
🔥欢迎大佬指正,一起学习!一起加油!

在这里插入图片描述

目录

  • 🍁开发步骤
  • 🍁测试
  • 🍁自定义启动器
  • 🍁启动器支持多Druid和C3P0


🍁开发步骤

1.创建启动器项目

  • 添加启动器相关依赖
  • 创建属性配置类
  • 创建自动配置类
  • 编写自动配置文件(spring.factories)
  • 使用自定义的启动器

🍁测试

  • 创建个SpringBoot项目,导入依赖
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.2.RELEASE</version>
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <!--引入spring‐boot‐starter;所有starter的基本配置-->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
</dependency>

    <!--自动配置连接池-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
</dependency>

    <dependency>
            <groupId>c3p0</groupId>
            <artifactId>c3p0</artifactId>
            <version>0.9.1.2</version>
</dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

  • 创建属性配置类
@Component
@ConfigurationProperties(prefix = "spring.jdbc.datasource")
public class DataSourceProperties {
    private String driverClassName ;
    private String url;
    private String username;
    private String password;

    public String getDriverClassName() {
        return driverClassName;
    }

    public void setDriverClassName(String driverClassName) {
        this.driverClassName = driverClassName;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "DataSourceProperties{" +
                "driverClassName='" + driverClassName + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}

  • 创建自动配置类
@SpringBootConfiguration  //当前类是个配置类
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
    @Autowired
    private DataSourceProperties dataSourceProperties;

   @Bean
    public DataSource createDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
        dataSource.setUrl(dataSourceProperties.getUrl());
        dataSource.setUsername(dataSourceProperties.getUsername());
        dataSource.setPassword(dataSourceProperties.getPassword());
        return dataSource;
    }

}

  • 编写自动配置属性文件
  • 在 resource 文件夹下面新建 META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.study.config.DataSourceAutoConfiguration
  • 执行install , 安装项目

在这里插入图片描述

🍁自定义启动器

  • 重新创建个项目,引用SpringBoot_datasource的依赖
<!--依赖自定义启动器-->
		<dependency>
			<groupId>com.study</groupId>
			<artifactId>SpringBoot_datasource</artifactId>
			<version>1.0-SNAPSHOT</version>
		</dependency>
  • 配置连接池信息
server.port=8081
spring.jdbc.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jdbc.datasource.url=jdbc:mysql:///springboot_datasource
spring.jdbc.datasource.username=root
spring.jdbc.datasource.password=root
spring.profiles.active=datasource

  • 编写Controller类
@RestController
public class HelloAutoController {
    @Autowired
    private DataSource dataSource;

    @RequestMapping("/dataSource")
    public String dataSource() {
        System.out.println(dataSource.getClass());//打印DruidDataSource数据源
        return "Hello dataSource! ! ! " ;
    }

}
  • 使用自定义启动类进行测试

在这里插入图片描述

🍁启动器支持多Druid和C3P0

  • 添加创建druid和c3p0方法
@SpringBootConfiguration  //当前类是个配置类
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
    @Autowired
    private DataSourceProperties dataSourceProperties;
    @Bean
    @ConditionalOnProperty(value = "spring.jdbc.datasource.type",havingValue = "druid")
    public DataSource createDataSource(){
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
        dataSource.setUrl(dataSourceProperties.getUrl());
        dataSource.setUsername(dataSourceProperties.getUsername());
        dataSource.setPassword(dataSourceProperties.getPassword());
        return dataSource;
    }

    @Bean
    @ConditionalOnProperty(value = "spring.jdbc.datasource.type",havingValue = "c3p0")
    public DataSource createC3P0DataSource() throws Exception {
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
        dataSource.setDriverClass(dataSourceProperties.getDriverClassName());
        dataSource.setJdbcUrl(dataSourceProperties.getUrl());
        dataSource.setUser(dataSourceProperties.getUsername());
        dataSource.setPassword(dataSourceProperties.getPassword());
        return dataSource;
    }

}

  • 配置文件中配置了spring.jdbc.datasource.type=druid使用druid数据源
server.port=8081
spring.jdbc.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jdbc.datasource.url=jdbc:mysql:///springboot_datasource
spring.jdbc.datasource.username=root
spring.jdbc.datasource.password=root
spring.jdbc.datasource.type=druid
  • 重新安装,再次测试

在这里插入图片描述

  • 配置了spring.jdbc.datasource.type=c3p0使用c3p0数据源
server.port=8081
spring.jdbc.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jdbc.datasource.url=jdbc:mysql:///springboot_datasource
spring.jdbc.datasource.username=root
spring.jdbc.datasource.password=root
spring.jdbc.datasource.type=c3p0
  • 重新安装,再次测试

在这里插入图片描述

相关文章:

  • QT 学习笔记(十七)
  • 光敏二极管血氧仪方案设计研发
  • 【Kotlin】标准库函数 ③ ( with 标准库函数 | also 标准库函数 )
  • elementui el-table表格实现翻页和搜索均保持勾选状态(后端分页)
  • 内含JAVA简单概括和JAVA所需安装的软件和详细教程,想学习JAVA无从下手,这篇文章带你迈出第一步
  • C++——类和对象1
  • 转到结构化写作后的几点变化
  • 数据分析师:星图Stagraph 2.1 Crack
  • 【前端修炼场】— table 表格的构建
  • 计算机网络(二)Linux网络编程
  • FPGA基础之modelsim常见问题
  • java蛋糕店蛋糕商城蛋糕系统网站源码
  • C++的集合和映射
  • 机器学习笔记之深度信念网络(二)模型构建思想(RBM叠加结构)
  • JavaScript面试题
  • 前端项目-小米商城
  • 零基础如何入门网络安全?2023年最新,建议收藏!
  • 剑指offer----C语言版----第十四天
  • C库函数:stdio.h
  • vim光速开发,你值得拥有
  • 新干式二尖瓣瓣膜国内上市,专家:重视瓣膜病全生命周期管理
  • 上海质子重离子医院已收治8000例患者,基本覆盖国内常见恶性肿瘤
  • 俄军方:已完成库尔斯克地区全面控制行动
  • 年客流超2500万,九岁的上海国际旅游度假区有哪些文旅商体实践?
  • 苏迪曼杯即将在厦门打响,国羽向创纪录的14冠进军
  • 【社论】以“法治之盾”护航每一份创新