2020-09-01
今日計(jì)劃:看完代碼規(guī)劃,糾結(jié)一下要不要買國行健身環(huán)!不買國行,買日版哈哈哈哈哈哈哈哈哈哈哈哈我買好了
2020-09-02
今日計(jì)劃:
- 去營業(yè)廳問社??ǖ氖虑? 下午去問
- 注冊(cè)任天堂賬號(hào),倆。 等游戲機(jī)到了再注冊(cè)
- 再了解一下aop ioc
IOC容器
控制反轉(zhuǎn),減低耦合
ioc底層就是對(duì)象工廠


- spring提供ioc容器實(shí)現(xiàn)的兩種方式
- BeanFactory(一般不提供開發(fā)人員使用):加載配置文件時(shí),不創(chuàng)建對(duì)象。在獲取/使用對(duì)象時(shí),才創(chuàng)建對(duì)象。
- ApplcationContext(BeanFactory的子接口,更強(qiáng)大,一般由開發(fā)人員使用):在加載配置文件時(shí),就會(huì)在配置文件中就創(chuàng)建對(duì)象。
- ApplicationContext接口有實(shí)現(xiàn)類
IOC操作bean管理
bean管理指:1)創(chuàng)建對(duì)象 2)注入屬性
-
bean管理操作2種:
1)基于xml配置文件方式實(shí)現(xiàn)
image.png- image.png
-
DI:注入屬性
1)set方法注入
在spring配置文件配置對(duì)象創(chuàng)建,配置屬性注入
image.png
2)有參構(gòu)造注入


2020-09-03
繼續(xù)學(xué)習(xí)spring 打好基礎(chǔ) 沖?。?!
- 字面量(就是屬性的賦值)
-
null值 image.png
-
屬性值中包含特殊符號(hào) (eg.value里面有<<>>)image.png
2、注入屬性-外部bean
service調(diào)用dao,就是引用外部bean
在配置文件中操作: 在service中注入dao

3、注入屬性-內(nèi)部bean和級(jí)聯(lián)賦值
(與數(shù)據(jù)庫一對(duì)多,多對(duì)多有關(guān)系)
-
一對(duì)多關(guān)系,部門和員工
先創(chuàng)建兩個(gè)類
在實(shí)體類中表示一對(duì)多的關(guān)系:
image.png
用對(duì)象的屬性類型進(jìn)行表示
再在spring配置文件中進(jìn)行配置:內(nèi)部beanimage.png
4、注入屬性-級(jí)聯(lián)賦值
修改配置文件
外部bean:ref是引入根據(jù)bean的id引入property'


1、注入數(shù)組、list集合、map集合類型屬性

- 寫配置文件 bean的配置
-
集合類型:1、對(duì)象創(chuàng)建2、屬性注入
數(shù)組
list
map
set-
如果注入的list,里面值是對(duì)象
先創(chuàng)建多個(gè)對(duì)象
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í)例對(duì)象,地址相同image.pngimage.png
-
設(shè)置單實(shí)例還是多實(shí)例:bean標(biāo)簽中有設(shè)置的屬性scope,單實(shí)例(singleton),多實(shí)例(Protype)。image.png
- 設(shè)置singleton的時(shí)候,spring配置文件的時(shí)候就會(huì)創(chuàng)建單實(shí)例對(duì)象;設(shè)置protype,不是在spring加載配置文件的時(shí)候創(chuàng)建的,是在調(diào)用getbean方法的時(shí)候創(chuàng)建的多實(shí)例對(duì)象。
-
單實(shí)例對(duì)象,地址相同
IOC操作Bean管理(bean生命周期)
生命周期:對(duì)象從創(chuàng)建到銷毀的過程。
-
1通過構(gòu)造器創(chuàng)建對(duì)象(無參構(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è)類會(huì)給所有bean添加這個(gè)后置處理器
-
6bean可以使用了(對(duì)象獲取到了)image.png
-
7當(dāng)容器關(guān)閉時(shí),調(diào)用bean的銷毀方法(要配置,要手動(dòng)銷毀)image.pngimage.png手動(dòng)銷毀,close方法
4、bean的后置處理器,bean的生命周期有7步
IOC操作Bean管理(xml自動(dòng)裝配)用的很少,一般用注解
-
根據(jù)指定裝配規(guī)則(屬性名稱或者屬性類型),spring自動(dòng)將匹配的屬性進(jìn)行注入
自動(dòng)裝配 bean的屬性autowire 常用值:byname屬性名稱,bytype屬性類型
根據(jù)屬性名稱自動(dòng)裝配
根據(jù)類型
IOC操作Bean管理(外部屬性文件)
先引入jar包
-
直接配置連接池寫死的
-
引入外部屬性文件配置數(shù)據(jù)庫連接池
image.png
引入配置文件中,名稱空間
context
在spring配置文件中引入
用表達(dá)式
IOC操作Bean管理(基于注解方式)
- 結(jié)構(gòu):@注解名稱(屬性名稱=屬性值,屬性名稱=屬性值)
- 目的:簡化xml配置
- Spring提供的注解:
- @Component
- @Service
- @Controller
- @Repository
-
創(chuàng)建對(duì)象
2、開啟組件掃描
1、引入aop依賴jar包
image.png
3、在類上面4個(gè)注解都可以,value可以省略,類的名稱首字母小寫
掃描包,找到注解,創(chuàng)建對(duì)象
4、細(xì)節(jié)配置,只掃描controller
不掃描controller
基于注解,屬性的注入
-
@AutoWired:根據(jù)屬性類型進(jìn)行自動(dòng)裝配
-
1、service和dao對(duì)象創(chuàng)建image.png
、serviec類上加@service
-
2、service里注入dao用@AutoWired
-
1、service和dao對(duì)象創(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 -
編寫測(cè)試類用annotationconfigapplicationcotext
AOP
- aop底層使用動(dòng)態(tài)代理。
-
有接口情況 用 jdk動(dòng)態(tài)代理實(shí)現(xiàn):創(chuàng)建接口實(shí)現(xiàn)類的代理對(duì)象,實(shí)現(xiàn)增強(qiáng)方法。
image.png -
沒有接口情況 CGLIB動(dòng)態(tài)代理
創(chuàng)建當(dāng)前類的子類的代理對(duì)象 來增強(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á)式:知道要對(duì)哪個(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對(duì)象。
在兩個(gè)類上加注解@Component
image.png -
在增強(qiáng)類上添加注解@Aspect.image.png
-
在spring配置文件中開啟生成代理對(duì)象。
image.png
4、 配置不同類型的通知:在增強(qiáng)類中,在作為通知方法上面添加通知類型注解,使用切入點(diǎn)表達(dá)式配置
before注解,前置通知
5、相同切入點(diǎn)抽取
image.png
6、多個(gè)增強(qiáng)類,設(shè)置優(yōu)先級(jí)
在增強(qiáng)類的上面添加注解@Order(1)//(數(shù)字越小,優(yōu)先級(jí)越高)
AOP操作(AspectJ配置文件)
建一個(gè)book類



完全注解開發(fā)
-
配置類加@Configuration和@ComponentScan(basePackages={"xxx.xx"})和@EnableAspectAutoProxy(proxyTargetClass=true)
image.png
JdbcTemplate:方便對(duì)數(shù)據(jù)庫的增刪改查
- 引入相關(guān)jar包
-
在spring配置文件中配置數(shù)據(jù)庫連接池image.png
- 創(chuàng)建jdbctem對(duì)象,注入datasource
-
image.png
image.png
image.png







































































