日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java spring框架怎么学_JAVA学习之路~spring框架(一)

發布時間:2024/9/30 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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框架(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 黄色精品一区二区 | 五月婷婷激情综合 | www.亚洲综合 | 国内精品免费 | 一区二区三区免费播放 | 不卡的免费av | 国产一线二线在线观看 | 国产午夜精品一区二区理论影院 | 99人妻少妇精品视频一区 | 日产久久视频 | 国产福利网 | 亚洲精品三级 | 国产日本欧美一区二区 | 午夜一区二区三区免费观看 | 四虎网址大全 | 郑艳丽三级 | 日本少妇毛茸茸 | 精品人妻无码一区二区三区蜜桃一 | 99草视频 | 99成人| 免费成人在线视频观看 | 麻豆影视免费观看 | av黄色网 | 九九久久视频 | 久久国产精品影院 | 日韩久久久久久 | 婷婷色亚洲 | 久久亚洲AV成人无码一二三 | 香港一级纯黄大片 | 国产麻豆一区 | 91传媒理伦片在线观看 | 黄色一级视频网站 | 亚洲高清视频在线播放 | 亚洲卡一卡二卡三 | 日本黄色xxxx | 一区二区三区高清 | 91黄视频在线观看 | 国产精品一亚洲av日韩av欧 | 午夜激情婷婷 | 国产精品爽爽久久 | 黄页在线播放 | 亚洲国产精品国自产拍久久 | 婷婷丁香激情五月 | 亚洲另类春色 | 国产91成人 | 免费小视频在线观看 | 国产一区二区影院 | 精品无码人妻一区二区三区 | 亚洲视频福利 | 制服丝袜av一区二区三区下载 | 国产偷自拍视频 | 久久最新 | 亚洲国产aⅴ精品一区二区的游戏 | 曰韩一级片 | 91视频啊啊啊 | 国内精品999| 懂色av| 久久久www成人免费精品 | 黄色福利 | 狠狠操影视 | 婷婷色在线播放 | 久久狠狠婷婷 | 97视频一区二区三区 | 午夜你懂的 | 污污视频在线观看免费 | 粗大的内捧猛烈进出在线视频 | av一区二区三区免费观看 | 97超碰在线播放 | 欧美成网 | 国内露脸中年夫妇交换 | 亚洲videos| 午夜黄色小视频 | 婷婷色激情 | 蜜臀av性久久久久蜜臀aⅴ | 4438x全国最大成人 | 亚洲欧美一区二区精品久久久 | 久一在线视频 | 亚洲在线| 大乳巨大乳j奶hd | 国产精品久久久久久久久久东京 | 久久精品国产免费 | 国产处女 | 污视频在线免费观看 | xx在线视频 | 老司机精品视频在线 | 色爽爽一区二区三区 | 欧美三级视频在线观看 | 国产美女流白浆 | 69色综合 | 欧美日本国产 | 国产精品视频无码 | 2023国产精品 | 九九在线观看免费高清版 | 久久精品美女视频 | 亚洲+小说+欧美+激情+另类 | 免费激情小视频 | 免费精品无码AV片在线观看黄 | 亚洲深夜福利 | 熟妇一区二区三区 |