中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站做301跳轉(zhuǎn)的作用百度關(guān)鍵詞收錄

網(wǎng)站做301跳轉(zhuǎn)的作用,百度關(guān)鍵詞收錄,做物流網(wǎng)站費(fèi)用,山西做網(wǎng)站怎么做Spring 的基本概述 Spring學(xué)習(xí)的核心內(nèi)容—一圖勝千言 IOC:控制反轉(zhuǎn),可以管理 Java 對象AOP:切面編程JDBCTemplate:是Spring提供一套訪問數(shù)據(jù)庫的技術(shù),應(yīng)用性強(qiáng),相對好理解聲明式事務(wù):基于IOC …

Spring 的基本概述

Spring學(xué)習(xí)的核心內(nèi)容—一圖勝千言

在這里插入圖片描述

  • IOC:控制反轉(zhuǎn),可以管理 Java 對象
  • AOP:切面編程
  • JDBCTemplate:是Spring提供一套訪問數(shù)據(jù)庫的技術(shù),應(yīng)用性強(qiáng),相對好理解
  • 聲明式事務(wù):基于IOC / AOP實現(xiàn)事務(wù)管理

Spring的幾個重要概念

1、Spring可以整合其他的框架(Spring是管理框架的框架)

2、Spring有兩個核心的概念:IOC和AOP

3、IOC(Inversion Of Control 控制反轉(zhuǎn))

  • 傳統(tǒng)的開發(fā)模式(JdbcUtils / 反射)

程序 —> 環(huán)境(程序讀取環(huán)境配置,然后自己創(chuàng)建對象)

在這里插入圖片描述

1、程序員編寫程序,在程序中讀取到配置信息

2、創(chuàng)建對象,new Object() // 反射方式

3、使用對象完成任務(wù)

  • IOC的開發(fā)模式

程序 <— 容器(容器創(chuàng)建好對象,程序直接使用)

在這里插入圖片描述

1、Spring 根據(jù)配置文件XML / 注解來創(chuàng)建對象,并放入到容器(ConcurrentHashMap)中,并且可以完成對象之間的依賴

2、當(dāng)需要使用某個對象實例的時候,就直接從容器中獲取即可

3、程序員可以更加關(guān)心如果使用對象完成相應(yīng)的業(yè)務(wù)(以前是new => 注解 / 配置方式)

4、DI—Dependency Injection 依賴注入(是實現(xiàn)IOC的一種方法)

5、Spring最大的價值,通過配置給程序提供需要使用的web層[ Servlet(Action / Controller) ]/Service/Dao/[ JavaBean/Entity ]對象

  • 這個是核心價值所在,也是IOC的具體體現(xiàn),實現(xiàn)解耦

在這里插入圖片描述

Spring的快速入門

需求說明

  • 通過 Spring 的方式(配置文件),獲取 JavaBean:Monster的對象,并給該對象屬性賦值,輸出該對象信息

在這里插入圖片描述

完成步驟

  • 下載Spring的開發(fā)包:https://spring.io/projects/spring-framework#learn

在這里插入圖片描述

代碼實現(xiàn)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xmlns:util="http://www.springframework.org/schema/util"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/utilhttps://www.springframework.org/schema/util/spring-util.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!--1. 配置monster對象2. 在beans中可以配置多個bean3. bean表示就是一個java對象4. class屬性是用于指定類的全路徑 -> Spring底層使用反射創(chuàng)建5. id屬性表示該Java對象在Spring容器中的id,通過id可以獲取到該對象6. <property name="monsterId" value="100"/> 用于給該對象的屬性賦值--><bean class="com.zan.spring.bean.Monster" id="monster01"><!--    <bean class="com.zan.spring.bean.Monster">--><property name="monsterId" value="100"/><property name="name" value="牛魔王"/><property name="skill" value="芭蕉扇"/></bean></beans>
public class SpringBeanTest {@Testpublic void getMonster() {// 1. 創(chuàng)建容器 ApplicationContext// 2. 該容器和容器配置文件是相關(guān)聯(lián)的 - 讀取到的是out文件夾下的beans.xml文件ApplicationContext iocContext = new ClassPathXmlApplicationContext("beans.xml");// 3. 通過getBean獲取對應(yīng)的對象(傳入ID)//    默認(rèn)返回的是Object,但是運(yùn)行類型是Monster
//        Object monster01 = iocContext.getBean("monster01");Monster monster01 = (Monster) iocContext.getBean("monster01");// 4. 輸出System.out.println("monster01=" + monster01 + " 運(yùn)行類型=" + monster01.getClass());System.out.println("monster01=" + monster01 + " 獲取對應(yīng)的屬性name=" + monster01.getName());// 5. 也可以在獲取的時候,直接指定Class類型,可以再次獲取Monster monster011 = iocContext.getBean("monster01", Monster.class);System.out.println("monster011=" + monster011);System.out.println("monster011.name=" + monster011.getName());// 6. 查看容器注入了哪些bean對象,獲取所有的beanNameString[] beanDefinitionNames = iocContext.getBeanDefinitionNames();for (String beanDefinitionName : beanDefinitionNames) {System.out.println(beanDefinitionName);}System.out.println("ok~~~");}// 驗證類加載路徑@Testpublic void classPath() {File file = new File(this.getClass().getResource("/").getPath());// 看到類的加載路徑System.out.println("file = " + file);// file = D:\Code\Java\Learn\Spring\spring-review\out\production\spring-review}
}

Debug查看Spring容器結(jié)構(gòu)/機(jī)制

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

手動開發(fā) - 簡單的Spring基于XML配置的程序

需求說明

  • 自己寫一個簡單的Spring容器, 通過讀取beans.xml,獲取第1個JavaBean:Monster的 對象,并給該的對象屬性賦值,放入到容器中, 輸出該對象信息

在這里插入圖片描述
在這里插入圖片描述

  • 也就是不使用 Spring 的原生框架,我們自己簡單模擬實現(xiàn)

需求分析

在這里插入圖片描述

代碼實現(xiàn)

1、導(dǎo)入 Dom4j.jar 包

2、編寫ZanApplicationContext

public class ZanApplicationContext {private ConcurrentHashMap<String, Object> singletonObjects = new ConcurrentHashMap<>();// 構(gòu)造器// 接受一個容器的配置文件,比如 beans.xmlpublic ZanApplicationContext(String iocBeanXmlPath) throws Exception {// 1. 得到類加載路徑String path = this.getClass().getResource("/").getPath();// 2. 創(chuàng)建SAXReaderSAXReader saxReader = new SAXReader();// 3. 獲取文檔Document對象Document document = saxReader.read(new File(path + iocBeanXmlPath));// 4. 得到rootDocumentElement rootElement = document.getRootElement();// 5. 得到第一個bean對象 monster01Element bean = (Element) rootElement.elements("bean").get(0);// 6. 獲取到第一個 bean-monster01 的相關(guān)屬性String id = bean.attributeValue("id");String classFullPath = bean.attributeValue("class");List<Element> property = bean.elements("property");// 遍歷
//        for (Element element : property) {
//            String value = element.attributeValue("value");
//            System.out.println(value);
//        }// 這里簡便獲取Integer monsterId = Integer.parseInt(property.get(0).attributeValue("value"));String name = property.get(1).attributeValue("value");String skill = property.get(2).attributeValue("value");// 7. 使用反射創(chuàng)建對象 ==> 回顧反射機(jī)制Class<?> aClass = Class.forName(classFullPath); // 獲取對應(yīng)的class對象// 這是的o對象就是一個Monster對象Monster o = (Monster) aClass.newInstance();// 給o對象賦值// 使用反射賦值
//        Method[] declaredMethods = aClass.getDeclaredMethods();
//        for (Method declaredMethod : declaredMethods) {
//            Object invoke = declaredMethod.invoke(o);
//
//        }o.setMonsterId(monsterId);o.setName(name);o.setSkill(skill);// 8. 將創(chuàng)建好的對象放入到singleObjects中singletonObjects.put(id, o);}public Object getBean(String id) {// 還可以嚴(yán)謹(jǐn)一下return singletonObjects.get(id);}
}
  • Test類
public class ZanApplicationContextTest {public static void main(String[] args) throws Exception {ZanApplicationContext zanApplicationContext = new ZanApplicationContext("beans.xml");Monster monster01 = (Monster) zanApplicationContext.getBean("monster01");System.out.println(monster01);}
}

在這里插入圖片描述

Spring原生容器底層結(jié)構(gòu)

在這里插入圖片描述

補(bǔ)充:可以不進(jìn)行分配ID,系統(tǒng)會默認(rèn)分配ID,分配ID的規(guī)則為全類名#1,全類名#1 …

http://www.risenshineclean.com/news/52077.html

相關(guān)文章:

  • 發(fā)布asp.net網(wǎng)站到虛擬主機(jī)口碑營銷的案例及分析
  • 西安市十大it培訓(xùn)機(jī)構(gòu)北京網(wǎng)站優(yōu)化外包
  • 織夢b2b網(wǎng)站模板貴州seo推廣
  • rap做詞網(wǎng)站晉城seo
  • 泰州做網(wǎng)站哪家好站長工具whois查詢
  • 網(wǎng)站開發(fā)流程包括微信推廣朋友圈廣告
  • 鄭州企業(yè)網(wǎng)站優(yōu)化排名濟(jì)南seo的排名優(yōu)化
  • 下載深圳app長沙官網(wǎng)seo技巧
  • 長春網(wǎng)站建設(shè)SEO優(yōu)化營銷網(wǎng)址大全導(dǎo)航
  • 漢中建網(wǎng)站整合營銷策略
  • 社交網(wǎng)站備案廣告sem是什么意思
  • 做h5頁面的網(wǎng)站網(wǎng)絡(luò)推廣外包公司
  • 湖南省最新疫情最新政策神馬seo服務(wù)
  • 上海哪家公司可以做網(wǎng)站怎樣讓自己的網(wǎng)站排名靠前
  • 江蘇網(wǎng)站開發(fā)建設(shè)百度客服在線咨詢?nèi)斯し?wù)
  • 網(wǎng)站打不開了什么原因廣東短視頻seo搜索哪家好
  • 濱江網(wǎng)站建設(shè)公司東莞seo建站公司哪家好
  • 黑客網(wǎng)站網(wǎng)站鏈接查詢
  • 黃石做網(wǎng)站公司行業(yè)數(shù)據(jù)統(tǒng)計網(wǎng)站
  • 淘寶做的網(wǎng)站會不會過期十大最免費(fèi)軟件排行榜
  • 一般做哪些外貿(mào)網(wǎng)站寧德市政府
  • 上海找做網(wǎng)站公司友情鏈接官網(wǎng)
  • wordpress 整站移植天津優(yōu)化代理
  • 景觀設(shè)計方案網(wǎng)站網(wǎng)絡(luò)營銷專業(yè)是學(xué)什么的
  • 七牛云做網(wǎng)站今日國內(nèi)新聞大事
  • 怎么做網(wǎng)站優(yōu)化排名識別關(guān)鍵詞軟件
  • 通州 網(wǎng)站建設(shè)自己怎樣在百度上做推廣
  • 網(wǎng)上購物商城網(wǎng)站建設(shè)畢業(yè)設(shè)計全球十大搜索引擎排名
  • 做網(wǎng)站不給源碼程序免費(fèi)建站網(wǎng)站大全
  • 西安網(wǎng)站seo優(yōu)化江東seo做關(guān)鍵詞優(yōu)化