起源:spring框架_百度百科
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站與策劃設(shè)計(jì),襄汾網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:襄汾等地區(qū)。襄汾做網(wǎng)站價格咨詢:18982081108目錄
1? Spring概述
1.1什么是Spring?
1.2 Spring框架的優(yōu)點(diǎn)
1.3 Spring的體系結(jié)構(gòu)
1.4 Spring的下載及目錄結(jié)構(gòu)
2? Spring的核心容器
2.1? BeanFactory
1.Spring容器負(fù)責(zé)控制程序之間的關(guān)系,而不是由程序代碼直接控制。
2.提供了兩種核心容器:BeanFactory和ApplicationContext。
2.2? ApplicationContext
1.BeanFactory的子接口,另一種常用的Spring核心容器。
2.不僅包含了BeanFactory的所有功能,還添加了對國際化、資源訪問、事件傳播等方面的持。
3.由org.springframework.context.ApplicationContext接口定義。
1.通過ClassPathXmlApplicationContext創(chuàng)建
創(chuàng)建該接口實(shí)例,通常采用兩種方法,具體如下:
2.通過FileSystemXmlApplicationContext創(chuàng)建?????
3? Spring的入門程序
4? 依賴注入
4.1? 依賴注入的概念
4.2? 依賴注入的實(shí)現(xiàn)方式
Spring是分層的JavaSE/EE full-stack 輕量級開源框架,以IoC(Inverse of Control 控制反轉(zhuǎn))和AOP(Aspect Oriented Programming 面向切面編程)為內(nèi)核,使用基本的JavaBean來完成以前只可能由EJB完成的工作,取代了EJB的臃腫、低效的開發(fā)模式。
Spring框架是由于軟件開發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用的是基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅僅限于服務(wù)器端的開發(fā)。從簡單性、可測試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。
EJB是Enterprise Java Beans技術(shù)的簡稱, 又被稱為企業(yè)Java Beans。這種技術(shù)最早是由美國計(jì)算公司研發(fā)出來的。EJB技術(shù)的誕生標(biāo)志著Java Beans的運(yùn)行正式從客戶端領(lǐng)域擴(kuò)展到服務(wù)器領(lǐng)域。在電子商務(wù)領(lǐng)域運(yùn)用EJB技術(shù)可以簡化應(yīng)用系統(tǒng)的開發(fā), 這是由該技術(shù)的結(jié)構(gòu)和特點(diǎn)所決定的
在實(shí)際開發(fā)中,通常服務(wù)器端在采用三層體系架構(gòu),分別為表示層(Web)、業(yè)務(wù)邏輯層(Service)、持久層(Dao), Spring對每一層都提供了技術(shù)支持。
1.2 Spring框架的優(yōu)點(diǎn)Spring具有簡單、可測試和松耦合等特點(diǎn)。不僅可以用于服務(wù)器端開發(fā),也可以應(yīng)用于任何Java應(yīng)用的開發(fā)中。
1.3 Spring的體系結(jié)構(gòu)Spring框架采用分層架構(gòu),它的功能要素被分成20個模塊
注意:上圖中灰色背景模塊為所涉及的主要模塊
1.Core Container(核心容器)
2.Data Access/Integration(數(shù)據(jù)訪問/集成)
3.Web
4.其他模塊
1.4 Spring的下載及目錄結(jié)構(gòu)所需的jar包分為兩個部分:Spring框架包和第三方依賴包。
1.Spring框架包
下載地址:https://repo.spring.io/release/org/springframework/spring/5.2.3.RELEASE/
使用xml配置方式
1、在IDEA中創(chuàng)建maven項(xiàng)目或模塊
2、在pom.xml中加入spring-webmvc依賴。會把core、beans、context、expression、aop、web等的依賴都自動加載進(jìn)來。
2.第三方依賴包
在使用Spring開發(fā)時,除了要使用自帶的JAR包外,Spring的核心容器還需要依賴commons.logging的JAR包。
下載地址:http://commons.apache.org/proper/commons-logging/download_logging.cgi
2? Spring的核心容器 2.1? BeanFactory 1.Spring容器負(fù)責(zé)控制程序之間的關(guān)系,而不是由程序代碼直接控制。 2.提供了兩種核心容器:BeanFactory和ApplicationContext。BeanFactory容器
創(chuàng)建BeanFactory實(shí)例時,需提供Spring所管理容器的詳細(xì)配置信息。通常采用XML文件形式來管理,其加載配置信息:
BeanFactory beanFactory=new XmlBeanFactory(new FileSystemResource("F: /applicationContext.xml"));
這種加載方式在實(shí)際開發(fā)中并不多用,了解即可。
2.2? ApplicationContext 1.BeanFactory的子接口,另一種常用的Spring核心容器。 2.不僅包含了BeanFactory的所有功能,還添加了對國際化、資源訪問、事件傳播等方面的特點(diǎn)。 3.由org.springframework.context.ApplicationContext接口定義。 1.通過ClassPathXmlApplicationContext創(chuàng)建 ?創(chuàng)建該接口實(shí)例,通常采用兩種方法,具體如下:ApplicationContext applicationContext = new
ClassPathXmlApplicationContext(String configLocation);
從類路徑classPath中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。
2.通過FileSystemXmlApplicationContext創(chuàng)建?????ApplicationContext applicationContext =new FileSystemXmlApplicationContext(String configLocation);
從指定的文件系統(tǒng)路徑(絕對路徑)中尋找指定的XML配置文件,找到并裝載完成ApplicationContext的實(shí)例化工作。這個需要具體的路徑
在Java項(xiàng)目中,通過ClassPathXmlApplicationContext類來實(shí)例化ApplicationContext容器。
而在Web項(xiàng)目中,ApplicationContext容器的實(shí)例化工作會交由Web服務(wù)器來完成。
Web服務(wù)器實(shí)例化ApplicationContext容器時,通常會使用ContextLoaderListener來實(shí)現(xiàn),需web.xml中添加代碼:
contextConfigLocation classpath:spring/applicationContext.xml org.springframework.web.context.ContextLoaderListener
1.創(chuàng)建Spring容器后,就可以獲取Spring容器中的Bean。
2.Spring獲取Bean的實(shí)例通常采用以下兩種方法:
1.Object getBean(String name);
根據(jù)容器中Bean的id或name來獲取指定的Bean,獲取之后需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
2.
根據(jù)類的類型來獲取Bean的實(shí)例。由于此方法為泛型方法,因此在獲取Bean之后不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。
3? Spring的入門程序? 1.在Eclipse中,創(chuàng)建一個名為chapter04的Web項(xiàng)目,將Spring的4個基礎(chǔ)包以及commons-logging的JAR包復(fù)制到lib目錄中,并發(fā)布到類路徑下。
XML文檔,內(nèi)容可從參考手冊上復(fù)制最新版本(1. The IoC container)spring-framework-5.2.3.RELEASE/docs/spring-framework-reference/core.html#beans-factory-metadata
2.在src目錄下,創(chuàng)建一個com.itheima.ioc包,并在包中創(chuàng)建接口UserDao,代碼如下:
package com.itheima.ioc;
public interface UserDao {public void say();}
? 3.在com.itheima.ioc包下,創(chuàng)建UserDao接口的實(shí)現(xiàn)類UserDaoImpl,代碼如下:
package com.itheima.ioc;
public class UserDaoImpl implements UserDao {
public void say() {
System.out.println("userDaosay hello World !");
}}
4.在src目錄下,創(chuàng)建Spring的applicationContext.xml配置文件,并在配置文件中創(chuàng)建一個id為userDao的Bean。
5.在com.itheima.ioc包下,創(chuàng)建測試類TestIoC,其代碼:
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestIoC {
public static void main(String[] args) {
//初始化Spring容器,并加載配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//通過Spring容器獲取userDao實(shí)例(即Java對象),
UserDao userDao = (UserDao)
applicationContext.getBean("userDao");
//調(diào)用實(shí)例中的say()方法
userDao.say();
}
}
4? 依賴注入
4.1? 依賴注入的概念DI(Dependency Injection,依賴注入)。它與控制反轉(zhuǎn)(IoC)的含義相同,只是它們是從兩個角度描述的同一個概念。
IoC(控制反轉(zhuǎn)):在Spring框架中,對象的實(shí)例不再由調(diào)用者來創(chuàng)建,而是由Spring容器來創(chuàng)建,程序之間的關(guān)系由Spring容器控制,而不是調(diào)用者的程序代碼。這樣,控制權(quán)由應(yīng)用代碼轉(zhuǎn)移到了Spring容器,控制權(quán)發(fā)生了反轉(zhuǎn)。
DI(依賴注入):從Spring容器的角度來看,Spring容器負(fù)責(zé)將被依賴對象賦值給調(diào)用者的成員變量,這相當(dāng)于為調(diào)用者注入了它依賴的實(shí)例,這就是Spring的依賴注入。
4.2? 依賴注入的實(shí)現(xiàn)方式1.使用setter方法實(shí)現(xiàn)依賴注入
1.在com.itheima.ioc包中,創(chuàng)建接口UserService,在接口中編寫一個say()方法。
package com.itheima.ioc;
public interface UserService {
public void say();
}
2.在com.itheima.ioc包中,創(chuàng)建UserService接口的實(shí)現(xiàn)類UserServiceImpl,在類中聲明userDao屬性及setter方法。
package com.itheima.ioc;
public class UserServiceImpl implements UserService {
private UserDao userDao;
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
public void say() {
this.userDao.say();
System.out.println("userService say hello World !");
}
}
3.在配置文件applicationContext.xml中,創(chuàng)建一個id為userService的Bean,該Bean用于實(shí)例化UserServiceImpl類的信息,并將userDao的實(shí)例注入到userService中。
4.在com.itheima.ioc包中,創(chuàng)建測試類TestDI,來對程序進(jìn)行測試。
package com.itheima.ioc;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestDI {
public static void main(String[] args){
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService=(UserService)
applicationContext.getBean("userService");
userService.say();
}
}
5.執(zhí)行程序后,控制臺的輸出結(jié)果如圖所示。
小結(jié):
本講主要介紹了Spring框架入門的一些基礎(chǔ)知識,包括Spring的概念、優(yōu)點(diǎn)、體系結(jié)構(gòu)、核心容器、依賴注入等,同時通過一個入門程序講解了Spring的基本使用。
通過本講的學(xué)習(xí),同學(xué)們可以對Spring框架及其體系結(jié)構(gòu)有一個初步的了解,能夠初步的掌握Spring框架的使用,并能夠理Spring框架中IoC和DI的思想,掌握屬性setter方法注入的實(shí)現(xiàn)。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧