1. 程式人生 > >【2018版】Spring4.3入門視頻課程——筆記(一)

【2018版】Spring4.3入門視頻課程——筆記(一)

周期 輔助 short 簡介 enc long utils pre float

視頻課程鏈接:http://edu.51cto.com/course/13056.html

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入門視頻課程——筆記(一)