【2018版】Spring4.3入門視頻課程——筆記(一)
Spring,主講:湯小洋
一、Spring簡介
1. Spring是什麽?
? Spring是一個開源的控制反轉(IoC)和面向切面(AOP)的容器框架, 用來簡化企業開發
? 版本:3.x 4.x 5.x
2. 為什麽使用Spring
-
降低組件之間的耦合度,實現軟件各層之間解耦合
Controller——>Service——>DAO
-
讓代碼結構更良好
面向接口編程
高低原則:高內聚、低耦合
開閉原則:對擴展開放、對修改關閉
-
提供了許多技術支持
提供了輔助類,如:JdbcTemplate、HibernateTemplate、StringUtils、CollectionUtils、StreamUtils等
提供了各種服務,如:事務管理服務、消息服務等
提供單例模式
提供了AOP技術
-
對主流框架提供了集成支持
集成MyBatis、Hibernate、JPA、Struts等
3. Spring體系結構
? IoC、AOP、Data Access、Web
二、核心概念
1. IoC
? Inversion of Control 控制反轉
public class UserServiceImpl{ //UserDao由Service創建及維護 private UserDao userDao=new UserDaoImpl(); public void regist(User user){ userDao.save(user); } }
? 控制反轉就是指本身不負責依賴對象的創建及維護,依賴對象的創建及維護交由外部容器來負責,這樣控制權發生轉移,控制權轉移就是控制反轉。
? 外部容器/IoC容器:存儲對象(bean)的容器
2. DI
? dependency injection 依賴註入
public class UserServiceImpl{ //UserDao由外部容器創建及維護 private UserDao userDao; //讓容器將創建好的對象註入到Service中 public void setUserDao(UserDao userDao){ this.userDao=userDao } public void regist(User user){ userDao.save(user); } }
? 依賴註入就是指在運行期,由外部容器動態的將依賴對象註入到組件
三、第一個Spring程序
1. 添加jar包
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
2. 核心配置文件
? 用來進行bean的配置,文件名可自定義,一般默認為applicationContext.xml
<!--
定義一個bean
-->
<bean id="helloSpring" class="ioc01.HelloSpring">
<!-- 為bean中的屬性註入值-->
<property name="name" value="tom"/>
<!--<property name="name">-->
<!--<value>alice</value>-->
<!--</property>-->
</bean>
3. 測試
//獲取IoC容器,讀取配置文件,初始化Spring上下文
ApplicationContext ac=new ClassPathXmlApplicationContext("ioc01/applicationContext.xml");
//根據id獲取容器中的bean
HelloSpring helloSpring = (HelloSpring) ac.getBean("helloSpring");
helloSpring.show();
四、依賴註入再體驗
五、IoC容器的類型
1. 兩種類型
-
ApplicatoinContext
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
-
BeanFactory
XmlBeanFactory 已過時
2. 操作
//ApplicationContext
//ApplicationContext ac=new ClassPathXmlApplicationContext("ioc03/spring.xml");
ApplicationContext ac=new FileSystemXmlApplicationContext("e:/spring.xml");
SpringBean springBean= (SpringBean) ac.getBean("springBean");
System.out.println(springBean);
//BeanFactory
//Resource resource=new ClassPathResource("ioc03/spring.xml");
Resource resource=new FileSystemResource("e:/spring.xml");
BeanFactory bf=new XmlBeanFactory(resource);
SpringBean springBean2 = (SpringBean) bf.getBean("springBean");
System.out.println(springBean2);
六、數據裝配
1.簡介
? 為bean中的屬性註入值,稱為數據的裝配,可裝配不同類型的值
-
簡單類型(共19種)————>使用value
八種基本類型及包裝類
? byte short int long float double char boolean
? Byte Short Integer Long Float Double Character Boolean
String Class Resource
-
其他bean的引用 ————>使用ref
-
集合類型
數組、List、Set、Map、Properties
- null類型
2. 基本用法
七、bean生命周期
1. 生命周期各階段
? 代碼塊——>實例化——>數據裝配——>初始化方法——>就緒——>使用——>銷毀方法——>從容器銷毀
2. 初始化方法/銷毀方法
<!-- 生命周期的擴展 init destroy-->
<bean id="springBean" class="ioc07.SpringBean" init-method="init" destroy-method="destroy">
<property name="name" value="alice"/>
<property name="sex" value="female"/>
</bean>
3. 練習
? 讀取properties文件並進行數據裝配
【2018版】Spring4.3入門視頻課程——筆記(一)