栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 自定义启动器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 自定义启动器

这里以 数据库连接池的启动器为例,当用户引入连接池的启动器之后,项目中就已经自动配置了连接池

1.具体实现步骤
  1. 创建一个启动器项目(我们需要将这个打包成一个依赖,供其他项目使用)
  2. 给启动器添加需要的依赖
  3. 创建属性配置类()
  4. 创建自动配置类()
  5. 编写自动配置文件(spring.factories)
  6. 使用自定义的启动器
2.具体实现 1.创建项目,添加依赖

创建一个项目 spring-boot-jdbc-starter



    4.0.0

    com.atguigu
    spring-boot-jdbc-starter
    1.0-SNAPSHOT

    
        org.springframework.boot
        spring-boot-starter-parent
        2.2.2.RELEASE
    

    
        UTF-8
        UTF-8
        1.8
    

    
        
        
            org.springframework.boot
            spring-boot-starter
        

        
        
            com.alibaba
            druid
            1.1.16
        

        
            c3p0
            c3p0
            0.9.1.1
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        
    


2.创建属性配置类
@Component
@ConfigurationProperties(prefix = "spring.jdbc.datasource")
public class DataSourceProperties {
    private String driverClassName;
    private String url;
    private String username;
    private String password;
    //getters, setters and toString...
}

3.创建自动配置类
// 这里我们没有添加条件注解,其实我们可以添加条件注解使这个配置类在一定条件下生效
@SpringBootConfiguration
@EnableConfigurationProperties(DataSourceProperties.class)
public class DataSourceAutoConfiguration {
    @Autowired
    private DataSourceProperties dataSourceProperties;

    @Bean
    // 只有当 spring.jdbc.datasource.type=druid 的时候这个函数才生效
    @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
    // 只有当 spring.jdbc.datasource.type=c3p0 的时候这个函数才生效
    @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;
    }
}


4.编写 spring.factories 文件

文件必须建在resources/MATE-INF/spring.factories

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.atguigu.autoconfig.DataSourceAutoConfiguration

做完了之后注意要执行 install , 安装项目,这样我们只要在其他项目中引入这个启动器就可以帮我们自动配置数据库连接池了


5.使用自定义启动器

我们只要在其他项目中正常引入这个自动器,并配置默认属性就可以了

引入依赖


    com.atguigu
    spring-boot-jdbc-starter
    1.0-SNAPSHOT

配置默认属性

spring:
  jdbc:
    datasource:
      driverClassName: com.mysql.jdbc.Driver
      url: jdbc:mysql///business
      username: root
      password: root
      type: c3p0

使用数据库链接池

@RestController
public class HelloController {

    @Autowired
    private DataSource dataSource;

    @RequestMapping("/hello")
    public String hello(String name){
        System.out.println(dataSource.getClass());
        return "Hello SpringBoot!!!" + name;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434556.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号