<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # IOC/DI Spring 是一個開源的控制反轉(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目得是簡化企業開發。 Spring是一個基于IOC和AOP的結構J2EE系統的框架 。 - IOC(Inversion Of Control):反轉控制,是Spring的基礎 。 簡單說就是創建對象由以前的程序員自己new 構造方法來調用,變成了交由Spring創建對象。 - DI(Dependency Inject):依賴注入。 簡單地說就是拿到的對象的屬性,已經被注入好相關值了,直接使用即可。 > 基于框架的程序要成功運行,對于JAR包的版本,配置文件的正確性有著苛刻的要求,任何一個地方出錯了,都會導致框架程序運行失敗。 > > 技巧: 學習框架,**務必嚴格按照教程的指導,完全模仿操作**,直到成功看到運行效果。 第一次成功之后,信心,思路都會有較好的鋪墊,然后再根據自己的疑惑,在“成功”的代碼上做原本想做的改動和調整,這樣可以大大節約學習的時間,提高效率,**切勿一來就擅自改動**,給自己的學習制造障礙。 ## 步驟 1 : 先運行,看到效果,再學習 先將完整的 spring 項目(向老師要相關資料),配置運行起來,確認可用之后,再學習做了哪些步驟以達到這樣的效果。 ## 步驟 2 : 模仿和排錯 在確保可運行項目能夠正確無誤地運行之后,再嚴格照著教程的步驟,對代碼模仿一遍。 模仿過程難免代碼有出入,導致無法得到期望的運行結果,此時此刻通過比較**正確答案** ( 可運行項目 ) 和自己的代碼,來定位問題所在。 采用這種方式,**學習有效果,排錯有效率**,可以較為明顯地提升學習速度,跨過學習路上的各個檻。 ## 步驟 3 : 本知識點目的 本知識點通過運行TestSpring演示如何用Spring獲取一個對象,并打印其name ## 步驟 4 : 新建項目 新建d:\project\spring目錄,作為Eclipse的workspace,新建spring項目 (java project類型) ![](https://box.kancloud.cn/64cb239167c0be3a2079dcd118436d63_630x887.png) ## 步驟 5 : 將所需包添加到環境中 1. 在spring項目中,新建 folder,取名為lib; 2. 拿到lib.rar(向老師要相關資料),并解壓拷貝jar放到lib文件夾中; ![](https://box.kancloud.cn/cd83e3f402853d7f0d99994717d38883_475x112.png) 3. 把jar包導入到項目中,選擇所有jar包,右鍵 Build path->Add to Build path; ![](https://box.kancloud.cn/55a61ef101a8b6653e90688faacb835c_798x531.png) ## 步驟 6 : 準備 pojo > POJO(Plain Ordinary Java Object)簡單的Java對象,實際就是普通JavaBean,即實體類。 準備pojo Category,用來演示IOC和DI ~~~ package com.dodoke.pojo; public class Category { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } ~~~ ## 步驟 7 : applicationContext.xml 在src目錄下新建applicationContext.xml文件 applicationContext.xml是Spring的核心配置文件,通過關鍵字c即可獲取Category對象,該對象獲取的時候,即被注入了字符串“category 1“到name屬性中 ~~~ <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="c" class="com.dodoke.pojo.Category"> <property name="name" value="category 1" /> </bean> </beans> ~~~ ## 步驟 8 : 準備測試類 TestSpring ~~~ package com.dodoke.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dodoke.pojo.Category; public class TestSpring { public static void main(String[] args) { // 讀取applicationContext.xml配置文件 ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); // 在xml文件中,bean標簽的name是c,獲取到name為c的bean標簽里面的內容強轉為Category類型 Category c = (Category) context.getBean("c"); System.out.println(c.getName()); } } ~~~ 測試代碼,演示通過spring獲取Category對象,以及該對象被注入的name屬性。 如圖所示,可以打印出通過Spring拿到的Category對象的name屬性 ![](https://box.kancloud.cn/11af58513e66dcff4d5830b0471805ba_473x180.png) ## 步驟 10 : 原理圖 以獲取對象的方式來進行比較 **傳統的方式:** 通過new 關鍵字主動創建一個對象 **IOC方式:** 對象的生命周期由Spring來管理,直接從Spring那里去獲取一個對象。 IOC是**反轉控制** (Inversion Of Control)的縮寫,就像控制權從本來在自己手里,交給了Spring。 打個比喻: 傳統方式:相當于你自己去菜市場new 了一只雞,不過是生雞,要自己拔毛,去內臟,再上花椒,醬油,烤制,經過各種工序之后,才可以食用。 用 IOC:相當于去館子(Spring)點了一只雞,交到你手上的時候,已經五味俱全,你就只管吃就行了。 ![](https://box.kancloud.cn/e1de0ebe2ac3e4beae4f9a66f65b7690_503x233.png) ## 步驟 11 : 練習 如何使用IOC的方式,獲取一個Product對象? > 提示:新建 Product 類,然后在applicationContext.xml配置 1. 新建 Product 類 ~~~ package com.dodoke.pojo; public class Product { private int id; private String name; private int number; private double price; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } } ~~~ 2. 配置 applicationContext.xml ~~~ <?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean name="c" class="com.dodoke.pojo.Category"> <property name="name" value="category 1" /> </bean> <bean name="product" class="com.dodoke.pojo.Product"> <property name="name" value="Apple Watch" /> <property name="number" value="2" /> <property name="price" value="8800" /> </bean> </beans> ~~~ 3. 修改TestSpring測試類 ~~~ package com.dodoke.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.dodoke.pojo.Category; import com.dodoke.pojo.Product; public class TestSpring { public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" }); Category c = (Category) context.getBean("c"); System.out.println(c.getName()); Product product = (Product) context.getBean("product"); System.out.println(product.getName()); System.out.println(product.getNumber()); System.out.println(product.getPrice()); } } ~~~ 4. 運行結果 ![](https://box.kancloud.cn/bffad9cb64b38e6d1623410c3836fa19_417x193.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看