名詞解釋
| 名詞 | 解析 | 描述 |
|---|---|---|
| 框架 | 就是組件的集合 | 比如:Struts、Spring、Hibernate就是組件的集合,公共代碼的抽象。 |
| 組件 | 就是常用的功能包封裝成工具類(lèi). | 常用組件: Dom4j/Xpath、DBUtils、C3p0、BeanUtils、log4j |
| 泛型 | 進(jìn)行類(lèi)型檢查,較少類(lèi)型轉(zhuǎn)化,自己定義一個(gè)可以為任意類(lèi)型的類(lèi),jdk1.5之后產(chǎn)生 |
spring引入
在spring之前的web開(kāi)發(fā)方式是MVC模式,就是jsp+servlet+javabean,這樣會(huì)產(chǎn)生一個(gè)問(wèn)題,如果需求特別多的話,就需要,多次復(fù)寫(xiě)servlet,這樣會(huì)造成代碼的冗余,同時(shí),也對(duì)開(kāi)發(fā)人員造成了工作量增加的情況.
這樣每次都需要new很多的dao和service,我們已知每次new 對(duì)象,就會(huì)耗費(fèi)內(nèi)存,從而使項(xiàng)目整體的速度變得遲緩.同時(shí),類(lèi)和類(lèi)之間的依賴(lài)性增強(qiáng)了很多,service必須有dao,action必須有service
-
上邊的話術(shù)語(yǔ)就是:
- (1)對(duì)象數(shù)量action個(gè)必須多個(gè),service和DAO一個(gè),創(chuàng)建時(shí)間變
- (2)對(duì)象的依賴(lài)關(guān)系緊密:action依賴(lài)service,service依賴(lài)dao,而spring就是解決了上述兩個(gè)問(wèn)題
根據(jù)此模型的寫(xiě)法就是
dao
1 public class UserDAO {
2
3 public void saveUser() {
4 System.out.println("保存成功**********************");
5 }
6
7 }
service
1 public class UserService {
2 private UserDAO dao = new UserDAO ;
3
4 public void save() {
5 dao.saveUser();
6 }
7
8 }
action
public class UserAction {
private UserService us = new UserService ;
public String execute() {
us.save();
return null;
}
}
Spring 功能
| 名程 | 描述 |
|---|---|
| 侵入式設(shè)計(jì) | 使用了框架,對(duì)本地有的類(lèi)有影響,對(duì)本身有的類(lèi)實(shí)現(xiàn)或繼承操作了 例如:struts框架,必須繼承ActionSupport才能實(shí)現(xiàn)功能 |
| 非侵入式設(shè)計(jì)(優(yōu)于侵入式) | 使用了框架,對(duì)本身的類(lèi)結(jié)構(gòu)無(wú)影響. 例如:Hibernate框架,只是映射,不影響其他 Spring框架,Spring提倡最少的侵入 |
| 控制反轉(zhuǎn) | 用setter方法代替原來(lái)的new一個(gè)到對(duì)象處理對(duì)象創(chuàng)建的問(wèn)題,依賴(lài)注入,處理對(duì)象關(guān)系的問(wèn)題 現(xiàn)有控制反轉(zhuǎn),才有依賴(lài)注入 依賴(lài)注入實(shí)現(xiàn)(加個(gè)set方法,this一下): 通過(guò)set方法依賴(lài)注入 |
| AOp面向切面編程 | 由很多重復(fù)代碼形成的類(lèi) 舉例:事物/日志/權(quán)限 |
- Spring主要功能和開(kāi)發(fā)步驟可以解決對(duì)象創(chuàng)建和依賴(lài)關(guān)系的一種框架且可以和其他框架一起使用.整合(粘合)作用的一個(gè)框架
Spring與Struts Spring和hibernate
- Spring提供了一站式解決方案
| (1)SpringCore spring的核心功能(其他功能需要依賴(lài)它):IOC容器:解決對(duì)象創(chuàng)建及依賴(lài)關(guān)系 | |
| 注意:控制反轉(zhuǎn)屬于IOC | |
| (2)SpringWeb spring對(duì)web模塊的支持 a、可以與Struts整合,讓struts的action創(chuàng)建交給spring b、springMVC模式,可以省略Struts,用SpringMVC代替Struts |
|
| (3)SpringDAO Spring對(duì)jdbc操作的支持 [jdbcTemplate模板工具類(lèi)] | |
| (4)SpringORM Spring對(duì)orm的支持 a、既可以與hibernate整合,[session] b、也可以使用spring的對(duì)hibernate操作的封裝 |
|
| (5)SpringAOP 切面編程 | |
| (6)SpringEE spring對(duì)javaee其他模塊的支持 |
- 控制反轉(zhuǎn): 原來(lái)action內(nèi)要new一個(gè)service
public class action{
DAOservice s = new DAOserviceImp();
}
控制反轉(zhuǎn)時(shí),調(diào)用外部的service
public class action extends ActionSupport{
private DAOservice s ;
private DAOservice setDAOservice(DAOservice daos){
this.s=daos;
}
}
- 控制反轉(zhuǎn)的作用:對(duì)象的創(chuàng)建交給外部容器處理 容器是useraction userservice。依賴(lài)注入:處理對(duì)象的關(guān)聯(lián)關(guān)系
public class action extends ActionSupport{
private DAOservice s ;
private DAOservice setDAOservice(DAOservice daos){
this.s=daos;
}
}