SpringBoot中的配置類(lèi)(@Configuration)
SpringBoot基于java類(lèi)的配置
java配置主要靠java類(lèi)和一些注解來(lái)達(dá)到和xml配置一樣的效果,比較常用的注解有:
@Configuration
:聲明一個(gè)類(lèi)作為配置類(lèi),代替xml文件@Bean
:聲明在方法上,將方法的返回值加入Bean容器,代替標(biāo)簽@Value
:屬性注入@PropertySource
:指定外部屬性文件(properties)。@ConfigurationProperties(prefix = “xx”)
(指定配置屬性的前綴)
提示: @Configuration也附帶了@Component的功能。所以理論上內(nèi)部也可以使用@Autowared功能的
我們接下來(lái)用Java類(lèi)配置來(lái)嘗試實(shí)現(xiàn)連接池配置
第一步
在pom.xml導(dǎo)入
<!--druid 數(shù)據(jù)連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency>
第二步
添加druid.properties文件到resources包里
driverClassName=com.mysql.jdbc.Driver url=jdbc:mysql://127.0.0.1:3306/order?characterEncoding=utf-8 name=root pass=root initialSize=1 minIdle=1 maxActive=20 maxWait=3
第三步
創(chuàng)建配置文件 JdbcConfig
package cn.boke.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import javax.sql.DataSource; @Configuration //聲明配置類(lèi) @PropertySource("classpath:druid.properties") //導(dǎo)入配置文件 public class JdbcConfig { //將配置文件內(nèi)的 信息 放入變量中 @Value("${driverClassName}") private String driverClassName; //JDBC驅(qū)動(dòng) @Value("${url}") private String url; //連接地址 @Value("${name}") private String name; //數(shù)據(jù)庫(kù)用戶 @Value("${pass}") private String pass; //數(shù)據(jù)庫(kù)密碼 @Value("${initialSize}") private int initialSize; //初始化連接數(shù)量 @Value("${minIdle}") private int minIdle; //最小連接數(shù)量 @Value("${maxActive}") private int maxActive; //最大連接數(shù)量 @Value("${maxWait}") private int maxWait; //最大等待時(shí)間 @Bean("dataSource") //將配置信息 存入Spring 容器中 名稱(chēng)為 dataSource public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setDriverClassName(driverClassName); dataSource.setUsername( name); dataSource.setPassword(pass); dataSource.setInitialSize(initialSize); dataSource.setMaxActive(maxActive); dataSource.setMaxWait(maxWait); return dataSource; } }
第四步測(cè)試
連接池內(nèi)的數(shù)據(jù)是否 添加成功
打個(gè)斷點(diǎn)
運(yùn)行TestAplliaction 這個(gè)類(lèi)的啟動(dòng)引導(dǎo)
然后在游覽器中輸入 http://localhost:8080/hello
回到IDEA控制臺(tái)中點(diǎn)擊
能在顯示的內(nèi)容中找到 對(duì)應(yīng)的信息 就ok了
A控制臺(tái)中點(diǎn)擊
能在顯示的內(nèi)容中找到 對(duì)應(yīng)的信息 就ok了
SpringBoot自定義配置類(lèi)
1.方式一
配置類(lèi)標(biāo)注:
@ConfigurationProperties
注解,可以設(shè)置前綴名@Component
將該類(lèi)放入spring容器中
必須設(shè)定get/set方法
配置類(lèi):
@Component //將該Bean放入spring容器中 @ConfigurationProperties(prefix = "com.example")//指定該類(lèi)為配置獲取類(lèi),并指定前綴 public class MyConfig { ? ? private String name; ? ? private Integer age; ? ? //必須設(shè)置get set方法 ? ? public String getName() { ? ? ? ? return name; ? ? } ? ? public void setName(String name) { ? ? ? ? this.name = name; ? ? } ? ? public Integer getAge() { ? ? ? ? return age; ? ? } ? ? public void setAge(Integer age) { ? ? ? ? this.age = age; ? ? } }
application.properties中配置
com.example.age=20 com.example.name=xxx
使用:
在其他Bean中可以直接注入該Bean
@RestController public class DemoController { ? ? @Autowired ? ? private MyConfig config; ? ? @GetMapping("/demo2") ? ? public String m2(){ ? ? ? ? return config.getName(); ? ? } }
2.方式二
配置類(lèi):
不使用 @Component 將該類(lèi)放入spring容器中,而是使用@EnableConfigurationProperties(MyConfig.class)在根配置類(lèi)中引入
@ConfigurationProperties(prefix = "com.example")//指定該類(lèi)為配置獲取類(lèi),并指定前綴 public class MyConfig { ? ? private String name; ? ? private Integer age; ? ? //必須設(shè)置get set方法 ? ? public String getName() { ? ? ? ? return name; ? ? } ? ? public void setName(String name) { ? ? ? ? this.name = name; ? ? } ? ? public Integer getAge() { ? ? ? ? return age; ? ? } ? ? public void setAge(Integer age) { ? ? ? ? this.age = age; ? ? } }
@SpringBootApplication @EnableConfigurationProperties(MyConfig.class) //引入自定義配置類(lèi) public class DemoApplication { ? ? public static void main(String[] args) { ? ? ? ? SpringApplication.run(DemoApplication.class,args); ? ? } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- springboot項(xiàng)目數(shù)據(jù)庫(kù)配置類(lèi)DatabaseConfig示例詳解
- SpringBoot控制配置類(lèi)加載順序方式
- SpringBoot通過(guò)自定義注解實(shí)現(xiàn)配置類(lèi)的自動(dòng)注入的實(shí)現(xiàn)
- SpringBoot整合Web之CORS支持與配置類(lèi)和 XML配置及注冊(cè)攔截器
- Springboot自動(dòng)配置與@Configuration配置類(lèi)詳解
- SpringBoot2底層注解@Configuration配置類(lèi)詳解
- springboot 跨域配置類(lèi)及跨域請(qǐng)求配置
- springboot如何實(shí)現(xiàn)導(dǎo)入其他配置類(lèi)
相關(guān)文章
解決Druid動(dòng)態(tài)數(shù)據(jù)源配置重復(fù)刷錯(cuò)誤日志的問(wèn)題
使用druid數(shù)據(jù)庫(kù)連接池實(shí)現(xiàn)動(dòng)態(tài)的配置數(shù)據(jù)源功能,在配置過(guò)程中出現(xiàn)一個(gè)問(wèn)題既然是用戶自己配置的數(shù)據(jù)源,就無(wú)法避免輸入錯(cuò)誤,連接失敗等情況,關(guān)于這個(gè)問(wèn)題怎么處理呢,今天小編通過(guò)本文給大家詳細(xì)說(shuō)明下,感興趣的朋友一起看看吧2021-05-05基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法(分享)
下面小編就為大家分享一篇基于紅黑樹(shù)插入操作原理及java實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12SpringBoot實(shí)現(xiàn)HTTP服務(wù)監(jiān)聽(tīng)的代碼示例
前后端分離項(xiàng)目中,在調(diào)用接口調(diào)試時(shí)候,我們可以通過(guò)cpolar內(nèi)網(wǎng)穿透將本地服務(wù)端接口模擬公共網(wǎng)絡(luò)環(huán)境遠(yuǎn)程調(diào)用調(diào)試,本次教程我們以Java服務(wù)端接口為例,需要的朋友可以參考下2023-05-05