欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的示例詳解

 更新時(shí)間:2023年01月12日 14:17:50   作者:不會(huì)壓彎的小飛俠  
雖然Spring官方給我們提供了很多的啟動(dòng)器供我們使用,但有時(shí)候我們也會(huì)遇到某些特殊場(chǎng)景,這些啟動(dòng)器滿足不了。這個(gè)時(shí)候就需要自定義一個(gè)啟動(dòng)器供我們使用,本文為大家介紹了SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的方法,希望對(duì)大家有所幫助

開(kāi)發(fā)步驟

1.創(chuàng)建啟動(dòng)器項(xiàng)目

  • 添加啟動(dòng)器相關(guān)依賴
  • 創(chuàng)建屬性配置類
  • 創(chuàng)建自動(dòng)配置類
  • 編寫(xiě)自動(dòng)配置文件(spring.factories)
  • 使用自定義的啟動(dòng)器

測(cè)試

創(chuàng)建個(gè)SpringBoot項(xiàng)目,導(dǎo)入依賴

<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>

    <!--自動(dòng)配置連接池-->
    <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>

創(chuàng)建屬性配置類

@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 + '\'' +
                '}';
    }
}

創(chuàng)建自動(dòng)配置類

@SpringBootConfiguration  //當(dāng)前類是個(gè)配置類
@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;
    }

}

編寫(xiě)自動(dòng)配置屬性文件

在 resource 文件夾下面新建 META-INF/spring.factories

org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.study.config.DataSourceAutoConfiguration

執(zhí)行install , 安裝項(xiàng)目

自定義啟動(dòng)器

重新創(chuàng)建個(gè)項(xiàng)目,引用SpringBoot_datasource的依賴

<!--依賴自定義啟動(dòng)器-->
		<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

編寫(xiě)Controller類

@RestController
public class HelloAutoController {
    @Autowired
    private DataSource dataSource;

    @RequestMapping("/dataSource")
    public String dataSource() {
        System.out.println(dataSource.getClass());//打印DruidDataSource數(shù)據(jù)源
        return "Hello dataSource! ! ! " ;
    }

}

使用自定義啟動(dòng)類進(jìn)行測(cè)試

啟動(dòng)器支持多Druid和C3P0

添加創(chuàng)建druid和c3p0方法

@SpringBootConfiguration  //當(dāng)前類是個(gè)配置類
@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數(shù)據(jù)源

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

重新安裝,再次測(cè)試

配置了spring.jdbc.datasource.type=c3p0使用c3p0數(shù)據(jù)源

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

重新安裝,再次測(cè)試

到此這篇關(guān)于SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的示例詳解的文章就介紹到這了,更多相關(guān)SpringBoot自定義啟動(dòng)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java?Stream如何將List分組成Map或LinkedHashMap

    Java?Stream如何將List分組成Map或LinkedHashMap

    這篇文章主要給大家介紹了關(guān)于Java?Stream如何將List分組成Map或LinkedHashMap的相關(guān)資料,stream流是Java8的新特性,極大簡(jiǎn)化了集合的處理操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • Sleuth(Micrometer)+ZipKin分布式鏈路問(wèn)題小結(jié)

    Sleuth(Micrometer)+ZipKin分布式鏈路問(wèn)題小結(jié)

    在微服務(wù)架構(gòu)中,分布式鏈路追蹤技術(shù)成為了解決系統(tǒng)復(fù)雜調(diào)用問(wèn)題的關(guān)鍵,本文介紹了其他鏈路追蹤方案,如Cat、Pinpoint和Skywalking,展示了分布式鏈路追蹤技術(shù)的多樣化,感興趣的朋友一起看看吧
    2024-10-10
  • java中springMVC獲取請(qǐng)求參數(shù)的方法

    java中springMVC獲取請(qǐng)求參數(shù)的方法

    這篇文章主要介紹了java中springMVC獲取請(qǐng)求參數(shù)的方法,springmvc是spring框架的一個(gè)模塊,springmvc和spring無(wú)需通過(guò)中間整合層進(jìn)行整合,需要的朋友可以參考下
    2023-05-05
  • IntelliJ IDEA 2020最新激活碼(親測(cè)有效,可激活至 2089 年)

    IntelliJ IDEA 2020最新激活碼(親測(cè)有效,可激活至 2089 年

    這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測(cè)有效,可激活至 2089 年),非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Java中的強(qiáng)制類型轉(zhuǎn)換 大數(shù)轉(zhuǎn)小數(shù)

    Java中的強(qiáng)制類型轉(zhuǎn)換 大數(shù)轉(zhuǎn)小數(shù)

    這里主要討論一下大數(shù)轉(zhuǎn)小數(shù),比如int類型轉(zhuǎn)short類型。小數(shù)轉(zhuǎn)大數(shù),如short 轉(zhuǎn) int不做討論,需要的朋友可以參考下
    2020-02-02
  • 2024最新版JDK安裝保姆級(jí)教程

    2024最新版JDK安裝保姆級(jí)教程

    這篇文章主要介紹了2024最新版JDK安裝保姆級(jí)教程,JDK是Java開(kāi)發(fā)的核心工具包,包含編譯器、運(yùn)行時(shí)環(huán)境和標(biāo)準(zhǔn)庫(kù)等,安裝JDK首先要從官網(wǎng)下載合適版本,如JDK17,然后進(jìn)行安裝,安裝完成后需配置環(huán)境變量JAVA_HOME和Path,確保系統(tǒng)可以正確找到Java命令,需要的朋友可以參考下
    2024-09-09
  • Spring整合quartz做定時(shí)任務(wù)的示例代碼

    Spring整合quartz做定時(shí)任務(wù)的示例代碼

    這篇文章主要介紹了在spring項(xiàng)目使用quartz做定時(shí)任務(wù),首先我這里的項(xiàng)目已經(jīng)是一個(gè)可以跑起來(lái)的完整項(xiàng)目,web.xml里面的配置我就不貼出來(lái)了,具體實(shí)例代碼跟隨小編一起看看吧
    2022-01-01
  • springboot?接收LocalDateTime方式

    springboot?接收LocalDateTime方式

    這篇文章主要介紹了springboot?接收LocalDateTime方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java BigDecimal和double示例及相關(guān)問(wèn)題解析

    Java BigDecimal和double示例及相關(guān)問(wèn)題解析

    這篇文章主要介紹了Java BigDecimal和double示例及相關(guān)問(wèn)題解析,簡(jiǎn)單介紹了BigDecimal類的相關(guān)內(nèi)容,分享了兩則相關(guān)實(shí)例,對(duì)問(wèn)題進(jìn)行了分析,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • JAVA中 終止線程的方法介紹

    JAVA中 終止線程的方法介紹

    JAVA中 終止線程的方法介紹,需要的朋友可以參考一下
    2013-03-03

最新評(píng)論