SpringBoot實(shí)現(xiàn)自定義啟動(dòng)器的示例詳解
開(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
這篇文章主要給大家介紹了關(guān)于Java?Stream如何將List分組成Map或LinkedHashMap的相關(guān)資料,stream流是Java8的新特性,極大簡(jiǎn)化了集合的處理操作,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12Sleuth(Micrometer)+ZipKin分布式鏈路問(wèn)題小結(jié)
在微服務(wù)架構(gòu)中,分布式鏈路追蹤技術(shù)成為了解決系統(tǒng)復(fù)雜調(diào)用問(wèn)題的關(guān)鍵,本文介紹了其他鏈路追蹤方案,如Cat、Pinpoint和Skywalking,展示了分布式鏈路追蹤技術(shù)的多樣化,感興趣的朋友一起看看吧2024-10-10java中springMVC獲取請(qǐng)求參數(shù)的方法
這篇文章主要介紹了java中springMVC獲取請(qǐng)求參數(shù)的方法,springmvc是spring框架的一個(gè)模塊,springmvc和spring無(wú)需通過(guò)中間整合層進(jìn)行整合,需要的朋友可以參考下2023-05-05IntelliJ IDEA 2020最新激活碼(親測(cè)有效,可激活至 2089 年
這篇文章主要介紹了IntelliJ IDEA 2021最新激活碼(親測(cè)有效,可激活至 2089 年),非常不錯(cuò),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Java中的強(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-02Spring整合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-01Java 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