【SSH框架】之Spring系列(一)
微信公眾號:compassblog
歡迎關註、轉發,互相學習,共同進步!
有任何問題,請後臺留言聯系!
1、前言
前面更新過幾篇關於 Struts2 框架和 Hibernate 框架的文章,但鑒於這兩種框架在今天的主流開發中已經很少用了,所以關於這兩種框架的更新權當興趣,有時間也還會更新的。現在主流開發中代替這兩個框架的是 SpringMVC 和 MyBatis 等等,接下來主要精力集中於 Spring、SpringMVC、Spring Boot 等等,特別是 Spring Boot 框架,當然肯定也會有其他方面的內容,知無不寫,寫無不盡。
2、Spring 框架概述
(1)、Spring 框架在三層架構中的位置
Spring 框架在三層架構中的位置在【【SSH框架】之Hibernate系列(一)】這篇文章中已經提到過,主要描述與下圖:
(2)、Spring 是什麽
Spring 是一個輕量級的 Java 開源框架,興起於2003年,它分層架構的特點為 J2EE 應用程序開發提供集成的框架。Spring 的核心是控制反轉(IOC)和面向切面(AOP),是一個一站式的框架。
(3)、Spring 框架的優勢與功能(一站式)
-
Spring 相當於一個容器,可以將所有對象創建和依賴關系維護,交給 Spring 管理
AOP 編程的支持,容器中裝什麽對象就有什麽功能。 -
Spring 提供面向切面編程,可以方便的實現對程序進行權限攔截、運行監控等功能聲明式事務的支持只需要通過配置就可以完成對事務的管理,而無需手動編程,使得程序的測試更為方便。
-
Spring 不僅不排斥各種優秀的開源框架,如:Struts、Hibernate、MyBatis等,還能幫其他框架管理對象,降低 JavaEE API 的使用難度。
-
Spring 對 JavaEE 中的 API 如 JDBC、JavaMail等提供了封裝,使這些 API 應用難度大大降低。
-
Spring 支持 JUnit 測試支持,可以通過註解方便的測試 Spring 程序方便集成各種優秀框架。
3、搭建 Spring 開發環境並完成第一個測試實例
(1)、新建一個 web 項目,導入 Spring 所需要的基本包,如下圖所示:
(2)、創建一個 Bean 對象,代碼如下:
package com.spring.bean;
public class Student {
//基本屬性
private String name; //姓名
private int age; //年齡
private String grade; //年級
private String course; //科目
private int rank; //排名
//setter和getter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
public String getCourse() {
return course;
}
public void setCourse(String course) {
this.course = course;
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
}
(3)、在 src 下新建配置文件 applicationContext.xml,將註冊對象寫入容器,代碼如下:
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!-- 將User對象交給spring容器管理 -->
<bean name="stu" class="com.spring.bean.Student" ></bean>
</beans>
(4)、書寫測試類 TestDemo.java,代碼如下:
package com.spring.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.spring.bean.Student;
public class TestDemo {
@Test
public void test(){
// 創建容器對象
ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
// 向容器獲取user對象
Student student = (Student) ac.getBean("stu");
//3打印stu對象
System.out.println(student);
}
}
(5)、使用 JUnit4 進行測試,結果如下圖:
本項目運行環境:jdk1.7
4、Spring 配置詳解
<!-- Bean元素:使用該元素描述需要spring容器管理的對象
class屬性:被管理對象的完整類名.
name屬性:給被管理的對象起個名字.獲得對象時根據該名稱獲得對象.
可以重復.可以使用特殊字符.
id屬性: 與name屬性一模一樣.
名稱不可重復.不能使用特殊字符.
結論: 盡量使用name屬性.
-->
<bean name="stu" class="com.spring.bean.Student" ></bean>
<!--
可以通過import屬性導入其他spring配置文件
<import resource="路徑/*.xml"/>
-->
5、Spring 框架的思想
(1)、IOC:Inverse Of Control,即控制反轉,將對象創建的方式交給了 Spring 容器;
(2)、DI:Dependency Injection,即依賴註入,IOC 的實現需要 DI 支持。
6、Spring 屬性註入
(1)、set方法註入:
<bean name="stu" class="com.spring.bean.Student" >
<!--值類型註入: 為stu對象中名為name的屬性註入"孔乙己"作為值 -->
<property name="name" value="孔乙己" ></property>
<property name="age" value="22" ></property>
<property name="grade" value="大三" ></property>
<property name="rang" value="1" ></property>
<!-- 引用類型註入: 為course屬性註入下方配置的course對象 -->
<property name="course" ref="course" ></property>
</bean>
<!-- 將course對象配置到容器中 -->
<bean name="course" class="com.spring.bean.Course" >
<property name="name" value="Java開發" ></property>
<property name="page" value="889" ></property>
</bean>
(2)、構造函數註入:
<bean name="stu1" class="com.spring.bean.Student" >
<!-- name屬性: 構造函數的參數名 -->
<!-- index屬性: 構造函數的參數索引 -->
<!-- type屬性: 構造函數的參數類型-->
<constructor-arg name="name" index="0" type="java.lang.Integer" value="compasser" ></constructor-arg>
<constructor-arg name="course" ref="course" index="1" ></constructor-arg>
</bean>
關註微信公眾號compassblog,後臺回復 “Spring系列一” 獲取本項目源碼
您可能還喜歡:
-
【SSH框架】之Hibernate系列(一)
-
【SSH框架】之Struts2系列(二)
-
【SSH框架】之Struts2系列(一)
-
前端系列之JavaScript基礎知識概述
-
前端系列之CSS基礎知識概述
本系列後期仍會持續更新,歡迎關註!
如果你認為這篇文章有用,歡迎轉發分享給你的好友!
本號文章可以任意轉載,轉載請註明出處!
掃碼關註微信公眾號,了解更多
【SSH框架】之Spring系列(一)