2020-09-01
今日計(jì)劃:看完代碼規(guī)劃走诞,糾結(jié)一下要不要買國行健身環(huán)副女!不買國行,買日版哈哈哈哈哈哈哈哈哈哈哈哈我買好了
2020-09-02
今日計(jì)劃:
- 去營業(yè)廳問社彼俟#卡的事情 下午去問
- 注冊任天堂賬號肮塞,倆。 等游戲機(jī)到了再注冊
- 再了解一下aop ioc
IOC容器
控制反轉(zhuǎn)姻锁,減低耦合
ioc底層就是對象工廠
- spring提供ioc容器實(shí)現(xiàn)的兩種方式
- BeanFactory(一般不提供開發(fā)人員使用):加載配置文件時(shí)位隶,不創(chuàng)建對象。在獲取/使用對象時(shí),才創(chuàng)建對象忱屑。
- ApplcationContext(BeanFactory的子接口母债,更強(qiáng)大,一般由開發(fā)人員使用):在加載配置文件時(shí)笋妥,就會在配置文件中就創(chuàng)建對象懊昨。
- ApplicationContext接口有實(shí)現(xiàn)類
IOC操作bean管理
bean管理指:1)創(chuàng)建對象 2)注入屬性
-
bean管理操作2種:
1)基于xml配置文件方式實(shí)現(xiàn)
image.png- image.png
-
DI:注入屬性
1)set方法注入
在spring配置文件配置對象創(chuàng)建,配置屬性注入
image.png
2)有參構(gòu)造注入
2020-09-03
繼續(xù)學(xué)習(xí)spring 打好基礎(chǔ) 沖按盒=桶洹!
- 字面量(就是屬性的賦值)
-
null值 image.png
-
屬性值中包含特殊符號 (eg.value里面有<<>>)image.png
2月帝、注入屬性-外部bean
service調(diào)用dao躏惋,就是引用外部bean
在配置文件中操作: 在service中注入dao
3、注入屬性-內(nèi)部bean和級聯(lián)賦值
(與數(shù)據(jù)庫一對多嚷辅,多對多有關(guān)系)
-
一對多關(guān)系簿姨,部門和員工
先創(chuàng)建兩個(gè)類
在實(shí)體類中表示一對多的關(guān)系:
image.png
用對象的屬性類型進(jìn)行表示
再在spring配置文件中進(jìn)行配置:內(nèi)部beanimage.png
4、注入屬性-級聯(lián)賦值
修改配置文件
外部bean:ref是引入根據(jù)bean的id引入property'
1簸搞、注入數(shù)組扁位、list集合、map集合類型屬性
- 寫配置文件 bean的配置
-
集合類型:1趁俊、對象創(chuàng)建2贤牛、屬性注入
數(shù)組
list
map
set-
如果注入的list,里面值是對象
先創(chuàng)建多個(gè)對象
5则酝、把集合注入部分提取出來
-
-
引入名稱空間utilimage.png
-
使用util標(biāo)簽完成list集合注入提取image.png
-
IOC操作Bean管理(FactoryBean)
- bean有2種:普通bean(在配置文件中的定義類型和調(diào)用時(shí)的返回類型是一樣的)和工廠bean(定義類型和返回類型可以不一樣)
-
工廠bean:創(chuàng)建類殉簸,實(shí)現(xiàn)接口factorybean,實(shí)現(xiàn)接口的方法沽讹,可以用泛型般卑,在實(shí)現(xiàn)的方法中定義返回的bean類型image.png配置和調(diào)用
-
工廠bean:創(chuàng)建類殉簸,實(shí)現(xiàn)接口factorybean,實(shí)現(xiàn)接口的方法沽讹,可以用泛型般卑,在實(shí)現(xiàn)的方法中定義返回的bean類型
IOC操作Bean管理(bean的作用域)
- 在spring中,設(shè)置bean是單實(shí)例還是多實(shí)例爽雄。默認(rèn)是單實(shí)例蝠检。
-
單實(shí)例對象,地址相同image.pngimage.png
-
設(shè)置單實(shí)例還是多實(shí)例:bean標(biāo)簽中有設(shè)置的屬性scope挚瘟,單實(shí)例(singleton)叹谁,多實(shí)例(Protype)饲梭。image.png
- 設(shè)置singleton的時(shí)候,spring配置文件的時(shí)候就會創(chuàng)建單實(shí)例對象焰檩;設(shè)置protype憔涉,不是在spring加載配置文件的時(shí)候創(chuàng)建的,是在調(diào)用getbean方法的時(shí)候創(chuàng)建的多實(shí)例對象析苫。
-
單實(shí)例對象,地址相同
IOC操作Bean管理(bean生命周期)
生命周期:對象從創(chuàng)建到銷毀的過程兜叨。
-
1通過構(gòu)造器創(chuàng)建對象(無參構(gòu)造)image.png
2為bean的屬性設(shè)置值和其他bean的引用(調(diào)用set方法)
3把bean的實(shí)例傳給bean后置處理器的方法
-
4調(diào)用bean的初始化方法(要配置)寫了一個(gè)方法配置
-
5把bean的實(shí)例傳給bean后置處理器的方法
先寫個(gè)類會給所有bean添加這個(gè)后置處理器
-
6bean可以使用了(對象獲取到了)image.png
-
7當(dāng)容器關(guān)閉時(shí),調(diào)用bean的銷毀方法(要配置衩侥,要手動銷毀)image.pngimage.png手動銷毀国旷,close方法
4、bean的后置處理器茫死,bean的生命周期有7步
IOC操作Bean管理(xml自動裝配)用的很少跪但,一般用注解
-
根據(jù)指定裝配規(guī)則(屬性名稱或者屬性類型),spring自動將匹配的屬性進(jìn)行注入
自動裝配 bean的屬性autowire 常用值:byname屬性名稱峦萎,bytype屬性類型
根據(jù)屬性名稱自動裝配
根據(jù)類型
IOC操作Bean管理(外部屬性文件)
先引入jar包
-
直接配置連接池寫死的
-
引入外部屬性文件配置數(shù)據(jù)庫連接池
image.png
引入配置文件中特漩,名稱空間
context
在spring配置文件中引入
用表達(dá)式
IOC操作Bean管理(基于注解方式)
- 結(jié)構(gòu):@注解名稱(屬性名稱=屬性值,屬性名稱=屬性值)
- 目的:簡化xml配置
- Spring提供的注解:
- @Component
- @Service
- @Controller
- @Repository
-
創(chuàng)建對象
2涂身、開啟組件掃描
1骨杂、引入aop依賴jar包
image.png
3、在類上面4個(gè)注解都可以搓蚪,value可以省略蛤售,類的名稱首字母小寫
掃描包,找到注解妒潭,創(chuàng)建對象
4悴能、細(xì)節(jié)配置,只掃描controller
不掃描controller
基于注解雳灾,屬性的注入
-
@AutoWired:根據(jù)屬性類型進(jìn)行自動裝配
-
1漠酿、service和dao對象創(chuàng)建image.png
、serviec類上加@service
-
2谎亩、service里注入dao用@AutoWired
-
1漠酿、service和dao對象創(chuàng)建
-
@Qualifier:根據(jù)屬性名稱進(jìn)行注入image.png
- image.png
-
@Resource:根據(jù)類型或?qū)傩悦Q注入炒嘲,resource是javax擴(kuò)展包里的,不是spring里的
根據(jù)類型
名字
根據(jù)名稱注入
-
@Value:普通類型屬性注入(比如string)
image.png
純注解開發(fā)
-
創(chuàng)建配置類匈庭,在類上加上@Configuration,@ComponentSca
n(basepackage={包的路徑})
image.png -
編寫測試類用annotationconfigapplicationcotext
AOP
- aop底層使用動態(tài)代理夫凸。
-
有接口情況 用 jdk動態(tài)代理實(shí)現(xiàn):創(chuàng)建接口實(shí)現(xiàn)類的代理對象,實(shí)現(xiàn)增強(qiáng)方法阱持。
image.png -
沒有接口情況 CGLIB動態(tài)代理
創(chuàng)建當(dāng)前類的子類的代理對象 來增強(qiáng)方法
image.png
-
AOP(JDK代理)底層原理: 使用proxy類:返回指定接口的代理類的實(shí)例 調(diào)用newProxyInstance方法
步驟:
2、
3、
4鸽扁、
5蒜绽、
6桶现、
7躲雅、
AOP術(shù)語
-
連接點(diǎn)
image.png -
切入點(diǎn)
image.png -
通知(增強(qiáng))
image.pngimage.png -
切面
image.png
AOP操作(準(zhǔn)備)
- 基于AspectJ(一個(gè)獨(dú)立的框架)實(shí)現(xiàn)AOP操作:使用基于注解方式實(shí)現(xiàn)
-
引入aop、aspectj相關(guān)依賴
image.png - 切入點(diǎn)(實(shí)際要增強(qiáng)的方法)表達(dá)式:知道要對哪個(gè)類的哪個(gè)方法進(jìn)行增強(qiáng)
-
image.png
image.png
-
AOP操作(AspectJ注解方式)
1巩那、創(chuàng)建類2吏夯、創(chuàng)建增強(qiáng)類此蜈,編寫增強(qiáng)邏輯(用不同方法實(shí)現(xiàn)5種通知)
3即横、進(jìn)行通知的配置:
-
在spring配置文件中,開啟注解掃描裆赵。image.png
-
使用注解創(chuàng)建User和UserProxy對象东囚。
在兩個(gè)類上加注解@Component
image.png -
在增強(qiáng)類上添加注解@Aspect.image.png
-
在spring配置文件中開啟生成代理對象。
image.png
4战授、 配置不同類型的通知:在增強(qiáng)類中页藻,在作為通知方法上面添加通知類型注解,使用切入點(diǎn)表達(dá)式配置
before注解植兰,前置通知
5份帐、相同切入點(diǎn)抽取
image.png
6、多個(gè)增強(qiáng)類楣导,設(shè)置優(yōu)先級
在增強(qiáng)類的上面添加注解@Order(1)//(數(shù)字越小废境,優(yōu)先級越高)
AOP操作(AspectJ配置文件)
建一個(gè)book類
完全注解開發(fā)
-
配置類加@Configuration和@ComponentScan(basePackages={"xxx.xx"})和@EnableAspectAutoProxy(proxyTargetClass=true)
image.png
JdbcTemplate:方便對數(shù)據(jù)庫的增刪改查
- 引入相關(guān)jar包
-
在spring配置文件中配置數(shù)據(jù)庫連接池image.png
- 創(chuàng)建jdbctem對象,注入datasource
-
image.png
image.png
image.png