java spring框架怎么学_JAVA学习之路~spring框架(一)
一.MVC思想M:Model 數據模型(javaBean實體類)
V:View 視圖(前端jsp,html等等)
C:Controller 控制層(處理業務邏輯)
二.高級框架介紹Dao層: MyBatis,Hibernate,Spring Data jpa
Bean管理: Spring
Controller層: SpringMVC
微服務:Dubbo,SpringCloud
三.spring的核心
IOC:控制反轉
DI:依賴注入
AOP:面向切面
四.環境搭建1.創建maven項目
2.添加項目依賴
3.添加配置文件
4.編寫測試代碼
5.運行單元測試
五.IOC容器---控制反轉
5.1.手寫IOC容器知識點:
xml解析(dom4j+xPath)
反射
集合(list,map)
步驟:
1.在pom.xml中添加dom4j和xPath的依賴
dom4j
dom4j
1.6.1
jaxen
jaxen
1.1.6
2.創建資源文件resoures
新建xxxx.xml文件
新建bean,里面只有id,class
public class SxtBean {
private String id;
private String clazz;
public SxtBean(String id, String clazz) {
this.id = id;
this.clazz = clazz;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
@Override
public String toString() {
return "SxtBean{" +
"id='" + id + '\'' +
", clazz='" + clazz + '\'' +
'}';
}
}
3.在java中新建ApplicationContext接口
package com.shsxt.ioc;
/** 接口*** 手寫IOC容器*/
public interface ApplicationContext {
//抽象方法 public Object getBean(String id);
}
4.在java中新建xxApplicationContext普通類實現接口
public class ShsxtApplicationContext implements ApplicationContext {
//xml配置文件路徑 private String xmlPath;
// 存儲解析結果 private List sxtBeans = new ArrayList<>();
//容器來存放反射生成的實例 private Map beanMap=new HashMap<>();
/** 4.1.解析xml* 4.2.存放bean* 4.3.通過Map映射key與實例的關系** @param id* @return*/
//構造器快捷鍵 alt+insert //帶參構造,用來傳遞xml文件路徑 public ShsxtApplicationContext(String xmlPath) {
this.xmlPath = xmlPath;
//1.解析xml parseXml(xmlPath);
// 3.反射生成bean initBeans();
}
//重寫方法 @Override
public Object getBean(String id) {
return beanMap.get(id);
}
}
4.1解析xml文件
4.2將解析出來的結果添加到集合
/*** 解析xml* @param xmlPath*/
private void parseXml(String xmlPath) {
if(null==xmlPath || "".equals(xmlPath)){
System.err.println("文件不存在");
}else {
// 讀取xml文件 SAXReader reader = new SAXReader();
URL url = this.getClass().getClassLoader().getResource(xmlPath);
try {
Document document = reader.read(url);
//獲取節點 List list = document.selectNodes("/beans/bean");
for(Element e : list){
String id = e.attributeValue("id");
String clazz = e.attributeValue("class");
//System.out.println(id + ": "+clazz); // 添加到集合 sxtBeans.add(new SxtBean(id, clazz));
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
4.3反射生成bean并添加到map容器中
/*** 反射生成bean*/
private void initBeans() throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if(sxtBeans.size()>0){
for(SxtBean s : sxtBeans){
String id = s.getId();
String clazz = s.getClazz();
beans.put(id,Class.forName(clazz).newInstance());
}
}
}
5.新建單元測試類,測試代碼(快捷鍵 alt+enter)
public class SxtApplicationContextTest {
@Test
public void test01() throws IllegalAccessException, ClassNotFoundException, InstantiationException {
ApplicationContext context = new SxtApplicationContext("spring.xml");
HelloService helloService = (HelloService) context.getBean("helloService");
helloService.hello();
}
}
六.IOC實例化bean的三種方式
1.通過空構造(默認)
一般使用這種形式,只需配置bean標間,必須保證空構造
2.通過靜態工廠
bean初始化
3.通過實例化工廠
使用場景:框架整合
七.DI 依賴注入
所注入的屬性,必須存在setter方法
1.注入的方式:set注入(默認):必須存在setter方法----掌握
構造器注入:必須存在構造器------掌握
靜態工廠注入(了解)
實例化工廠注入(了解)
2.p標簽和c標簽
用來簡化注入的配置
八.Bean自動掃描
1.@controller-----control層,servlet層
2.@Service-----service層
3.@Repository-----dao層
4.@Component-----不明確的層(不屬于上面三種)
九.依賴注入注解
1.Autowired----通過類型來匹配(跟id無關)
由spring提供,默認通過類型匹配
2.@Resource(name="id")
由jdk提供,默認通過name(id)匹配,如果name為空,則通過類型匹配
后面不帶屬性,默認name為空
十.bean作用域
1.單例和prototype(原型)
默認單例,每次返回的對象是同一個對象;自帶單例驗證方法
非單例設置:xml中配置scope="prototype"每次返回新對象
2.懶加載(lazy-init)
默認非懶加載
十一.bean 的生命周期
1.bean的定義:定義bean標簽
2.bean的初始化:通過init-method="init"來監聽bean的初始化操作
3.bean的使用
4.bean 的銷毀(需要通過抽象容器的destroy方法銷毀)
總結
以上是生活随笔為你收集整理的java spring框架怎么学_JAVA学习之路~spring框架(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word转换成pdf java代码_ja
- 下一篇: java中如何改变状态栏_如何创建状态栏