天天看點

Spring 學習—day01Spring 學習一、Spring體系架構

Spring 學習

一、Spring體系架構

​ 1、底層核心容器

​ Bean

​ Core

​ Context

​ SpringEL表達式

​ 2、中間層技術

​ AOP

​ Aspects

​ 3、應用層技術

​ 資料通路與資料內建

​ Web內建

​ Web實作

​ 4、基于Test測試

二、IOC

Spring 學習—day01Spring 學習一、Spring體系架構

1、Spring發展史

Spring 學習—day01Spring 學習一、Spring體系架構

2、IOC簡介

​ 1、IOC(Inversion Of Control)控制反轉,Spring反向控制應用程式所需要使用的外部資源。

​ 2、Spring 控制的資源全部放在Spring容器中,該容器稱為IOC容器

​ 3.由主動變被動

3、入門案例

​ 1.加載Spring

Spring 學習—day01Spring 學習一、Spring體系架構

​ 2.建立資源

Spring 學習—day01Spring 學習一、Spring體系架構
Spring 學習—day01Spring 學習一、Spring體系架構

​ 3.配置資源

Spring 學習—day01Spring 學習一、Spring體系架構

​ 4.使用資源

Spring 學習—day01Spring 學習一、Spring體系架構

4、IOC配置

1.name屬性

​ 可以使用 【name】 屬性進行對資源定義多個别名,中間用 【,】 号隔開

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--注入Bean-->
    <!--可以使用 name 進行對資源定義多個别名,中間用 , 号隔開-->
    <bean id="userService" name="userService2,userService3" class="com.yaoyao.service.impl.UserServiceImpl"></bean>
</beans>
           

2.sope屬性

Spring 學習—day01Spring 學習一、Spring體系架構

​ 不設定值的時候,預設為【singleton】,在加載Spring IOC容器的時候就建立了 對象

​ 當 設定為【prototype】的時候,使用(或者擷取Bean)的時候才會建立對象,而且用一次建立一次。

3.bean的生命周期

Spring 學習—day01Spring 學習一、Spring體系架構

3.Bean對象的建立方式

Spring 學習—day01Spring 學習一、Spring體系架構

4、DL

​ DL:依賴,應用程式運作依賴的資源由Spring為其提供,資源進入應用程式的方式稱為注入。

​ DL和IOC的關系:同一件事站在不同的角度

5、依賴注入

​ 1.set方法注入

​ java代碼

​ ``

public class UserServiceImpl implements UserService {
        private UserDao userDao;
        private String name;
        private int num;


        public void setName(String name) {
        	this.name = name;
    	}

        public void setNum(int num) {
            this.num = num;
        }

        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }

         public void save() {
            userDao.save();
            System.out.println("userService......running....." + name + "  " + num);
        }

	}
           

applicationContext.xml

<!--将要注入的資源為Bean--> 	
	<bean id="userDao" class="com.yaoyao.dao.impl.UserDaoImpl"></bean>	


	 <!--将要注入的引用類型的變量通過property屬性進行注入,對應的name是要注入的變量名,使用ref屬性聲明要注入的的bean-->
	<bean id="userService" class="com.yaoyao.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"></property>
        <property name="name" value="lisi"></property>
        <property name="num" value="1235"></property>
    </bean>
           

​ 2.構造方法注入

Spring 學習—day01Spring 學習一、Spring體系架構
Spring 學習—day01Spring 學習一、Spring體系架構

​ Java代碼:

public class UserServiceImpl implements UserService {
        private UserDao userDao;
        private String name;
        private int num;


        public UserServiceImpl(UserDao userDao, String name, int num) {
            this.userDao = userDao;
            this.name = name;
            this.num = num;
        }
     }
           

​ applicationContext.xml

<bean id="userService" class="com.yaoyao.service.impl.UserServiceImpl">
        <!--使用構造方法進行set注入,需要保障注入的屬性和bean中定義的屬性一緻,
            一緻指的的是 順序一緻,類型一緻或使用index來解決
        -->
        <constructor-arg name="userDao" ref="userDao"/>
        <constructor-arg name="name" value="zhangsan"/>
        <constructor-arg name="num" value="456494"/>
    </bean>
           

報錯:

​ 說明 注入的屬性類型不正确,或者不一緻

Spring 學習—day01Spring 學習一、Spring體系架構

6、外部preperties檔案的導入

​ 1.設定context的命名空間

<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:contesxt="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
	">
           

​ 2.編寫properties配置檔案

username=yaoyao
	password=123456
           

​ 3.加載配置檔案

​ 4.設定值

<!--配置bean-->
    <bean id="userDao" class="com.yaoyao.dao.impl.UserDaoImpl">
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
    <bean id="bookDao" class="com.yaoyao.dao.impl.BookDaoImpl"></bean>

    <bean id="userService" class="com.yaoyao.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
        <property name="bookDao" ref="bookDao"/>
    </bean>
           

​ 5.完整的applicationContext配置

<beans
        xmlns="http://www.springframework.org/schema/beans"
        xmlns:contesxt="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
       http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
	">

    <!--加載外部的配置檔案-->
    <contesxt:property-placeholder location="classpath:*.properties"/>


    <!--配置bean-->
    <bean id="userDao" class="com.yaoyao.dao.impl.UserDaoImpl">
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
    </bean>
    <bean id="bookDao" class="com.yaoyao.dao.impl.BookDaoImpl"></bean>

    <bean id="userService" class="com.yaoyao.service.impl.UserServiceImpl">
        <property name="userDao" ref="userDao"/>
        <property name="bookDao" ref="bookDao"/>
    </bean>


	</beans>
           

7、Import的配置

Spring 學習—day01Spring 學習一、Spring體系架構
Spring 學習—day01Spring 學習一、Spring體系架構

代碼

<!--引入其他配置檔案-->
    <import resource="applicationContext-Book.xml"/>
    <import resource="applicationContext-User.xml"/>
           

8、ApplicationContext的源碼解析

Spring 學習—day01Spring 學習一、Spring體系架構

​**BeanFactory:**getBean的時候才會建立

**​ApplicationContext:**采用立即加載的形式,随用随給

9、Spring引入第三方資源–Durid

Spring 學習—day01Spring 學習一、Spring體系架構

10、綜合案例整合MyBatis

```

8、ApplicationContext的源碼解析

​ [外鍊圖檔轉存中…(img-qVdo24iY-1606985516709)]

​ **BeanFactory:**getBean的時候才會建立

​ **ApplicationContext:**采用立即加載的形式,随用随給

9、Spring引入第三方資源–Durid

Spring 學習—day01Spring 學習一、Spring體系架構

10、綜合案例整合MyBatis

​ 代碼:https://gitee.com/xue_zhongyao/spring_study.git