spring_01
1、框架
1、框架是解決什么問題的?
1、框架是用來解決代碼冗余的問題
2、有利于團隊的協(xié)作開發(fā)
3、框架是用來解決低耦合和高內(nèi)聚的問題
4、解決健壯性和安全性
2、STRUTS2和hibernate分別解決框架什么問題的?
struts2是一個mvc框架
hibernate是解決數(shù)據(jù)庫的操作:ORMAPPING
3、如何選擇一種更好的框架?
1、應(yīng)該選擇一個大眾化的產(chǎn)品
2、健壯性和安全性都比較好的產(chǎn)品
3、有利于團隊開發(fā)
4、還在維護(hù)階段的
2、spring
1、說明
是一個架構(gòu)性的框架
1、spring的安排
day01 spring Core IOC和DI容器
day02和day03的上午 spring AOP
day03的下午和day04 重新回顧struts2
day05 struts2,hibernate,spring的整合:源代碼級別的講解
2、springCore
1、知識點有兩個IOC,DI
2、IOC:
1、概念
把一個對象的創(chuàng)建、初始化、銷毀等工作交給spring容器來管理
2、好處
程序員只要從spring容器里把對象提取出來就OK了,至于對象是怎么樣在spring容器中創(chuàng)建出來的,不是
程序員關(guān)注的問題
3、例子
1、創(chuàng)建一個類
2、把一個類放入到spring容器中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!--
把一個類放入到spring容器中,專有名詞叫bean,beans意味著可以放很個bean
-->
<!--
bean表示一個類
id是bean的唯一標(biāo)識
class類的全名
-->
<bean id="helloWorld" class="com.tedu.big.spring1507.ioc.createobject.HelloWorld"></bean>
</beans>
3、啟動spring容器,讓spring容器創(chuàng)建該類的對象
4、從spring容器中 把該對象提取出來
5、對象調(diào)用方法
3、IOC的說明
1、啟動spring容器
創(chuàng)建一個spring容器的對象
2、spring容器為bean創(chuàng)建對象
1、默認(rèn)的構(gòu)造函數(shù)
在spring容器內(nèi)部調(diào)用了該bean的構(gòu)造函數(shù)
2、簡單工廠模式
構(gòu)造函數(shù)的代碼是由程序員完成的,spring容器調(diào)用的是工廠類的靜態(tài)方法
3、實例工廠模式
spring容器先創(chuàng)建出一個工廠實例,利 工廠方法從而創(chuàng)建出對象
4、如果一個bean的scope為"prototype",該bean是多實例,那么在第4步的時候創(chuàng)建對象
3、執(zhí)行spring容器中的bean的init方法
4、把一個對象從spring容器中提取出來
如果一個bean的scope為"prototype",這個時候才要創(chuàng)建對象
如果一個bean的scope為"singleton",那么不論取多少次都是同一個對象
5、對象調(diào)用方法
6、在關(guān)閉掉spring容器之前,執(zhí)行該bean的detroy方法
只有執(zhí)行applicationContext.close/desotry方法的時候才能調(diào)用destroy方法
該bean必須是單實例的
7、關(guān)閉spring容器
4、DI:
1、概念
依賴注入:給一個類中的屬性賦值的過程
2、一個類中屬性類型
public class Person{
private String id;
private Long length;
private Student student;
private List list;
private Set set;
private Map map;
private Properties properties;
}
3、給屬性注入的方式
1、xml
1、setter方法
2、構(gòu)造器
2、注解
1、注意事項
1、注解是一個標(biāo)識是針對程序員說的
2、有注解,就應(yīng)該有注解解析器
3、注解不能單獨存在
4、注解的應(yīng)用是為了簡化開發(fā),減少冗余
2、依賴注入的注解
@Resource 一般情況下標(biāo)注在屬性上
3、類掃描的注解
@Compontent
@Controller 標(biāo)注在action層的
@Service 標(biāo)注在service層
@Repository 標(biāo)注在dao層
5、IOC和DI的意義
1、例子
文檔管理系統(tǒng)
Document:是一個抽象的文檔
read
write
WordDocument:是一個具體的文檔
PDFDocument:是一個具體的文檔
ExcelDocument:是一個具體的文檔
DocumentManager:文檔的管理類
Document document;
read
write
2、MVC例子
3、意義:
在代碼端的完全的面向接口編程
6、當(dāng)IOC和DI結(jié)合在一起的時候,執(zhí)行順序(默認(rèn)的配置)
1、啟動spring容器
2、實例化所有的beans
3、給所有的bean裝配屬性
4、執(zhí)行bean的init方法
5、從spring容器中把該bean的對象提取出來
6、對象調(diào)用方法
說明:
spring容器創(chuàng)建對象的靜態(tài)工廠利用了簡單工廠模式
spring容器創(chuàng)建對象的實例工廠利用了抽象工廠模式
?
如果一個類是單實例的那么在整個類中加一屬性,該屬性如果要存放數(shù)據(jù),一定要考慮數(shù)據(jù)的安全性和并發(fā)性的問題。
把配置文件中的scope的屬性由“singleton”改變成“prototype”就編程了多實例。
lazy-init="true" 延遲加載
?
?
?
身份證照片
個人征信報告,
學(xué)信網(wǎng),
try{
加內(nèi)存鎖;
當(dāng)前操作在執(zhí)行,不允許別的操作執(zhí)行;
for(Lend l : lends){
try{
操作 l 邏輯;
}catch{
l.set();
mgr.save(l);
記錄日志(包括記錄l信息);
}
}
去除內(nèi)存鎖;
}catch{
}finally{
解鎖;
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/lixiaochao/p/5645080.html
總結(jié)
- 上一篇: Yii2 主从 数据库
- 下一篇: String与string的区别