Spring 學習
一、Spring體系架構
1、底層核心容器
Bean
Core
Context
SpringEL表達式
2、中間層技術
AOP
Aspects
3、應用層技術
資料通路與資料內建
Web內建
Web實作
4、基于Test測試
二、IOC
1、Spring發展史
2、IOC簡介
1、IOC(Inversion Of Control)控制反轉,Spring反向控制應用程式所需要使用的外部資源。
2、Spring 控制的資源全部放在Spring容器中,該容器稱為IOC容器
3.由主動變被動
3、入門案例
1.加載Spring
2.建立資源
3.配置資源
4.使用資源
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屬性
不設定值的時候,預設為【singleton】,在加載Spring IOC容器的時候就建立了 對象
當 設定為【prototype】的時候,使用(或者擷取Bean)的時候才會建立對象,而且用一次建立一次。
3.bean的生命周期
3.Bean對象的建立方式
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.構造方法注入
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>
報錯:
說明 注入的屬性類型不正确,或者不一緻
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的配置
代碼
<!--引入其他配置檔案-->
<import resource="applicationContext-Book.xml"/>
<import resource="applicationContext-User.xml"/>
8、ApplicationContext的源碼解析
**BeanFactory:**getBean的時候才會建立
**ApplicationContext:**采用立即加載的形式,随用随給
9、Spring引入第三方資源–Durid
10、綜合案例整合MyBatis
```
8、ApplicationContext的源碼解析
[外鍊圖檔轉存中…(img-qVdo24iY-1606985516709)]
**BeanFactory:**getBean的時候才會建立
**ApplicationContext:**采用立即加載的形式,随用随給
9、Spring引入第三方資源–Durid
10、綜合案例整合MyBatis
代碼:https://gitee.com/xue_zhongyao/spring_study.git