一、Spring配置優(yōu)先級(jí)
不同配置文件,配置同一個(gè)屬性誰(shuí)有效
properties>yml>yaml
命令行參數(shù)>Java系統(tǒng)屬性
項(xiàng)目打包后要改變屬性:
紅色是Java系統(tǒng)屬性,綠色是命令行參數(shù)
‘
二、Bean管理
1.獲取bean
獲取IOC容器:applicationContext就是IOC容器對(duì)象
IOC容器中bean是默認(rèn)單例的只有一個(gè),這樣三個(gè)獲取的bean是同一個(gè)
2.bean作用域
單例還是多例取決于作用域
關(guān)注于Spring支持前兩種作用域
默認(rèn)單例的bean在容器啟動(dòng)的時(shí)候就會(huì)實(shí)例化,加lazy注解就會(huì)在第一次使用的時(shí)候才會(huì)實(shí)例
3.第三方bean
想要對(duì)Java自帶的包中的類交給IOC管理,但是是只讀的,所以得在使用第三方bean
可以放在config包中,設(shè)置一個(gè)專門的類來(lái)集中分類配置
沒(méi)有設(shè)置bean的名字就是默認(rèn)方法名
三、SpringBoot原理
Spring Framework依賴配置很麻煩,Spring Boot 簡(jiǎn)化了操作
1.起步依賴
在web開發(fā)中引入一個(gè)依賴就可以,是因?yàn)閙aven的依賴傳遞
2.自動(dòng)配置
bean和配置類如何加入到IOC容器內(nèi)的?
配置類就是家里@Configration的類
①自動(dòng)配置原理
SpringBoot只能掃描啟動(dòng)包及其子包
這樣來(lái)表示要掃描的包有哪些,com.example是引入的包,com.itheima是本項(xiàng)目包所在
這樣很繁瑣,大面積的掃描
但是這種方法還是需要知道要導(dǎo)入第三方依賴中的哪些類,所以應(yīng)該在第三方依賴中有塊地方告訴導(dǎo)入者你要導(dǎo)入哪些?
第三方依賴中有個(gè)Enable開頭的注解,里面包含了Import注解,表示了要導(dǎo)入哪些類,在Spring中只需要加上這個(gè)Enable開頭的注解就可以了。
②源碼跟蹤
可以從這個(gè)注解入手,先從宏觀上看結(jié)構(gòu)
AutoConfiguration中Import了一個(gè)ImportSelector的實(shí)現(xiàn)類,其中的一個(gè)selectImports方法中封裝了哪些類需要導(dǎo)入到SpringBoot的IOC容器中。
這兩個(gè)文件中包含了要加載配置類的全類名,在這個(gè)配置類中表明了哪些類對(duì)象要被加載進(jìn)IOC容器中,SpringBoot啟動(dòng)后就可以在程序中直接自動(dòng)注入這個(gè)Bean對(duì)象。
而這些Bean不會(huì)全部都注冊(cè)到IOC容器中,因?yàn)镃onditionalOnMissingBean注解的存在。按條件裝配,當(dāng)條件滿足才會(huì)裝配。
③@Conditional
關(guān)注這三個(gè)子注解
OnClass
代表環(huán)境中是否存在Jwts這個(gè)類才會(huì)注冊(cè)
OnMissingBean
代表環(huán)境中不存在這個(gè)類型的bean,意思就是有沒(méi)有HeaderParser這個(gè)Bean,一般應(yīng)用在用戶想要自定義bean的時(shí)候,不想就是默認(rèn)的
OnProperty
代表配置文件中是否存在指定屬性與值,存在才會(huì)配置
3.自動(dòng)配置案例-starter
有一些第三方技術(shù)沒(méi)有提供與SpringBoot整合的起步依賴,但是又是很通用的,例如之前的阿里云的OSS
黃色部分定義了該程序所需要的全部依賴,并且引入了上面紅色部分的包
目的是在項(xiàng)目中導(dǎo)入starter就可以在項(xiàng)目中直接使用AliyunOSSUtils這個(gè)工具類的bean,所以需要在autoconfigure中存在一個(gè)配置類,使用第三方bean的技術(shù),新建一個(gè)方法加了注解bean,并返回一個(gè)AliyunOSSUtils對(duì)象。
對(duì)于starter中只在poml文件中引入了autoconfigure的依賴,來(lái)進(jìn)行依賴管理
對(duì)于autoconfigure,首先在pom文件中引入了oss所需的依賴
而在autoconfigure中有一個(gè)專門的配置類,來(lái)集中分類配置,表示哪些需要交給IOC容器管理,所以有@Configuration的注解代表是配置類
@EnableConfigurationProperties這個(gè)注解代表是將AliOSSProperties交給IOC容器管理,下面需要這個(gè)bean只需要指定這個(gè)參數(shù)就行了。
對(duì)于工具類aliOSSUtils是我們最終需要直接自動(dòng)配置的bean,由于里面需要AliOSSProperties對(duì)象中的值,所以在autoConfigure中需要通過(guò)那個(gè)注解將AliOSSProperties交給IOC管理,就可以注入spring中yml中的相應(yīng)的值
最后需要在這個(gè)路徑下定義這個(gè)文件,表示要導(dǎo)入哪些配置類或者類,spring啟動(dòng)后就會(huì)加載這個(gè)文件,將要導(dǎo)入的配置類交給IOC容器。
四、總結(jié)
Mybatis是操作數(shù)據(jù)庫(kù)的,Spring Boot來(lái)簡(jiǎn)化Spring開發(fā)的
SpringMVC是Spring framework web開發(fā)的一部分,是來(lái)簡(jiǎn)化原始servlet程序的
基于傳統(tǒng)SSM開發(fā)是比較繁瑣的,效率比較低
五、Maven高級(jí)
1.分模塊設(shè)計(jì)與開發(fā)
2.繼承
①繼承關(guān)系
就是子工程中很多都會(huì)用到的依賴可以放到父工程中。
實(shí)現(xiàn)就是在子工程pom中定義parent標(biāo)簽
打包方式:
由于springboot項(xiàng)目默認(rèn)父工程為spring-boot-stater-parent,而繼承只能單繼承所以需要我們繼承parent,parent再繼承這個(gè)spring的工程
parent pom文件中:
子工程中:
②版本鎖定
就是對(duì)依賴在父工程中進(jìn)行統(tǒng)一管理
對(duì)版本號(hào)還可以統(tǒng)一查看修改:
3.聚合
六、私服
1.介紹
2.資源上傳與下載
你上傳的pom中的<version>指定了版本,會(huì)上傳到不同倉(cāng)庫(kù)
1,3得在maven文件中的settings.xml修改文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-856440.html
上傳是maven生命周期中的deploy。
下載直接在另外工程中pom中引入需要的依賴文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-856440.html
到了這里,關(guān)于JavaWeb開發(fā)06-原理-Spring配置優(yōu)先級(jí)-Bean管理-SpringBoot原理-Maven繼承和聚合-私服的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!