<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] # 簡介 ![](https://box.kancloud.cn/d74d20d54f32194ee03effdee9bc468b_750x454.png) 1. core container a) beans與core 它們提供spring框架最基本功能,包含ioc與di b) context 上下文對象,基于beans與cores c) spel它是sprng提供的一個表達式語言 2. Data access/integration a) 數據訪問 b) 集成 3. Web a) Spring本身提供spring mvc b) 也可以與其它的web層進行集成 4. AOP AOP大部分情況下是使用動態代理來實現的。 5. Test 使用spring可以方便的進行測試 # IOC Inverse of control反轉控制 將我們創建對象的方式反轉了 以前對象的創建是由我們開發人員自己維護.包括依賴關系也是自己注入 使用了spring之后,對象的創建以及依賴關系可以由spring完成創建以及注入 反轉控制就是反轉了對象的創建方式,從我們創建反轉給了程序(spring) # DI Dependency Injection依賴注入 實現IOC思想需要DI做支持 注入方式: * set方式注入 * 構造方法注入 * 字段注入 注入類型: * 值類型注入(8大基本數據類型) * 引用類型注入(將依賴對象注入) # ApplicationContext和BeanFactory 在spring IOC容器讀取Bean配置創建Bean實例之前,必須對它進行實例化,只有在容器實例化后,才可以從IOC容器里獲取Bean實例并使用 spring提供了兩種類型的IOC容器實現 * BeanFactory:IOC容器的基本實現 * ApplicationContext:提供了更多的高級特性,是BeanFactory的子接口 * BeanFactory是Spring框架的基礎設施,面向spring本身 ApplicationContext:提供了更多的高級特性,是BeanFactory的子接口 * BeanFactory是spring框架的基礎設施,面向spring本身 ApplicationContext面向使用spring框架的開發者,幾乎所有的應用場合都直接使用ApplicationContext而非底層的BeanFactory * 無論使用哪種,配置文件都是相同的 # ApplicationContext的主要實現類 ApplicationContext的主要實現類: - classPathXmlApplicationContext:從類路徑下加載配置文件 - FileSystemXmlApplicationContext:從文件系統中加載配置文件,全路徑 - AnnotationConfigApplicationContext: 它是用于讀取注解創建容器的 ConfigurableApplicationContext擴展于ApplicationContext,新增加兩個主要方法refresh()和close(),讓ApplicationContext具有啟動,刷新和關閉上下文的能力 ApplicationContext在初始化上下文時就實例化所有單例的Bean WebApplicationContext是專門為web應用準備的,他允許從相對應web根目錄的路徑中完成初始化工作 # 例子 ## 創建對象 ~~~ package studySpring; public class User { public User() { System.out.println("User對象空參構造方法!!!!"); } private String name; private Integer age; private Car car; public User(String name, Car car) { System.out.println("User(String name, Car car)!!"); this.name = name; this.car = car; } public User(Car car, String name) { System.out.println("User(Car car,String name)!!"); this.name = name; this.car = car; } public User(Integer name, Car car) { System.out.println("User(Integer name, Car car)!!"); this.name = name + ""; this.car = car; } public Car getCar() { return car; } //setter/getter public void init() { System.out.println("我是初始化方法!"); } public void destory() { System.out.println("我是銷毀方法!"); } @Override public String toString() { return "User [name=" + name + ", age=" + age + ", car=" + car + "]"; } } ~~~ ~~~ package studySpring; public class Car { private String name; private String color; //getter/setter @Override public String toString() { return "Car [name=" + name + ", color=" + color + "]"; } } ~~~ ## 測試 在applicationContext.xml中寫 ~~~ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd "> <!-- 將User對象交給spring容器管理 --> <!-- Bean元素:使用該元素描述需要spring容器管理的對象 class屬性:被管理對象的完整類名. name屬性:給被管理的對象起個名字.獲得對象時根據該名稱獲得對象. 可以重復.可以使用特殊字符. id屬性: 與name屬性一模一樣. 可以指定多個名字,名字之間用逗號,分號,或空格分割 名稱不可重復.不能使用特殊字符. 結論: 盡量使用name屬性. --> <bean name="user" class="studySpring.User" ></bean> <!-- 導入其他spring配置文件 --> <import resource="studySpring/applicationContext.xml"/> </beans> ~~~ 然后寫個類測試下 ~~~ package hello; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import bean.User; public class Demo { @Test public void fun1() { // 1.創建容器對象,因為直接在src下,就寫applicationContext.xml ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); // 2.向容器要User對象 User u = (User) ac.getBean("user"); // 打印User對象 System.out.println(u); } } ~~~ ApplicationContext它是BeanFactory的一個子接口,我們在使用時使用的是AppliCationContext的實現類ClassPathXmlApplicationContext # 配置文件 ## 配置文件約束 ~~~ <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" //上面兩個是基礎IOC的約束,必備 xmlns:context="http://www.springframework.org/schema/context" //上面一個是開啟注解管理Bean對象的約束 xmlns:aop="http://www.springframework.org/schema/aop" //aop的注解約束 xmlns:tx="http://www.springframework.org/schema/tx" //事務的約束 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd //上面兩個是基礎IOC的約束,必備 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd //上面一個是開啟注解管理Bean對象的約束 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd //aop的注解約束 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> //事務的約束 </beans> ~~~ ![](https://img.kancloud.cn/8c/91/8c9168624d96b7a432ad4b3cdeab679b_961x309.png) # maven ~~~ <dependencies> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>2.10.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <!-- JUNIT DEPENDENCY FOR TESTING --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-expression --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-expression</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <!-- Spring 面向切面的編程 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aop --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.18</version> </dependency> <!-- 文件上傳依賴的jar --> <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3</version> </dependency> <!-- Sring前臺傳入的json和參數綁定 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.1</version> </dependency> <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.2.2</version> </dependency> </dependencies> ~~~ ~~~ <properties> <spring.version>5.1.2.RELEASE</spring.version> <maven.compiler.source>9</maven.compiler.source> <maven.compiler.target>9</maven.compiler.target> </properties> ~~~
                  <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>

                              哎呀哎呀视频在线观看