1.Spring入門

一、Spring入門
1.Spring 入門
Spring 整體框架
在這裏插入圖片描述

什麼是IOC?
IOC:Inversion of Control(控制反轉),即將對象的創建權反轉給(交給)spring。

spring包含的文件
docs:Spring的開發規範和API;
libs:Spring開發的jar和源碼;
schema:Spring的配置文件的約束。
在這裏插入圖片描述

Spring環境搭建:以創建Web項目爲例
step1:
在這裏插入圖片描述
在這裏插入圖片描述
step2:在WebContent\WEB-INF\lib包下添加幾個jar包:
在這裏插入圖片描述
step3:創建如下幾個類和接口,
在這裏插入圖片描述
UserDAO接口:

package com;

public interface UserDAO {
    public void save();
}

UserDAOImpl實現類:

package com;

public class UserDAOImpl implements UserDAO{
    public void save() {
    	System.out.println("UserDAOImpl...實現了");
    }
}

UserDAOImplHello實現類:

package com;

public class UserDAOImplHello implements UserDAO{
    public void save() {
    	System.out.println("UserDAOImplHello...實現了");
    }
}

springDemo1測試類:

package com;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class springDemo1 {
	@Test
	public void demo1() {    //用於普通測試
	    UserDAO userdao = new UserDAOImpl();
	    userdao.save();
	}
	
	
	@Test
	public void demo2() {    //用於Spring測試
		//創建spring工廠
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_first.xml");
		UserDAO userdao = (UserDAO) applicationContext.getBean("userdao");
		userdao.save();
	}
}

step4:在src目錄下創建配置文件,
在這裏插入圖片描述
在這裏插入圖片描述

<?xml version="1.0" encoding="UTF-8"?>
<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 http://www.springframework.org/schema/beans/spring-beans.xsd">
     
     <!--  spring的入門配置 -->
     <bean id = "userdao" class = "com.UserDAOImplHello"></bean>
          
</beans>

step5:運行測試類springDemo1中的demo2,得到如下輸出:
在這裏插入圖片描述
此時修改配置文件中的代碼,將下列代碼中的com.UserDAOImpl修改成com.UserDAOImplHello,

     <!--  spring的入門配置 -->
     <bean id = "userdao" class = "com.UserDAOImpl"></bean>

再次運行測試類springDemo1中的demo2,得到如下輸出:
在這裏插入圖片描述

2.IOC和DI的區別
IOC:控制反轉,將對象的創建權反轉給Spring。
DI:依賴注入,前提必須要有IOC的環境,Spring管理這個類的時候,將類的依賴屬性注入(也可以說設置)進來。

面向對象的幾種特性
  依賴:類之間相互調用,則具有依賴的關係;
  繼承:類之間繼承;
  聚合:分爲“緊密聚合”和“鬆散聚合”之分。

舉例
在UserDAOImpl類中添加屬性name,並在該類中save()方法中使用,則name與save()函數之間建立起依賴關係,代碼如下:

public class UserDAOImpl implements UserDAO{
	private String name;
    public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public void save() {
    	System.out.println("UserDAOImpl...實現了"+name);
    }
}

由於接口中沒有屬性name,所以如果以常規的方式只能通過創建UserDAOImpl類對象來對name進行設置,比較繁瑣,代碼如下:

	@Test
	public void demo1() {
		UserDAOImpl userdao = new UserDAOImpl();   //創建userdaoImpl類對象
	    userdao.setName("張三");
	    userdao.save();
	}

但是,使用我們的Spring框架,則不需要如此麻煩,只需要在配置文件裏進行如下設置即可:

     <!--  spring的入門配置 -->
     <bean id = "userdao" class = "com.UserDAOImpl">
         <property name = "name" value = "張三"/>
     </bean>

再運行如下代碼:

	@Test
	public void demo2() {
		//創建spring工廠
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_first.xml");
		UserDAO userdao = (UserDAO) applicationContext.getBean("userdao");
		userdao.save();
	}

輸出結果爲:
在這裏插入圖片描述

分析:這裏Spring可以將UserDAOImpl類所依賴的屬性自動設置進來,只需要在配置文件裏進行設置即可。設置屬性值的過程就叫做DI,Spring幫我們創建UserDAOImpl類的時候,發現該類裏邊有一個屬性name(也可稱之爲“依賴”),通過修改配置文件,則將屬性設置進來。

3.工廠類的概述
Spring的工廠類:
  BeanFactory:老版本的工廠類;
  ApplicationContext:新版本的工廠類,現在一般使用ApplicationContext工廠類

BeanFactory與ApplicationContext的區別:
在這裏插入圖片描述
如上圖所示,ApplicationContext接口間接地繼承了BeanFactory接口,之後ClassPathXmlApplicationContext實現類和FileSystemXmlApplicationContext實現類又間接地實現了ApplicationContext接口。

ClassPathXmlApplicationContext類與FileSystemXmlApplicationContext類的使用區別:
ClassPathXmlApplicationContext類創建工廠對象時,配置文件放(spring_first.xml)在該project目錄下的src文件下:

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring_first.xml");

FileSystemXmlApplicationContext類創建工廠對象時,配置文件(spring_first.xml)放在硬盤路徑下:

ApplicationContext applicationContext = new FileSystemXmlApplicationContext("C:\\spring_first.xml");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章