當(dāng)前位置:
首頁(yè) >
前端技术
> javascript
>内容正文
javascript
SpringMVC学习日记 1.Spring框架
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC学习日记 1.Spring框架
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
SpringMVC學(xué)習(xí)日記 1.Spring框架
Spring簡(jiǎn)介
Spring框架是一個(gè)開源框架,由Rod Johnson組織和開發(fā),生產(chǎn)目的在于簡(jiǎn)化企業(yè)級(jí)應(yīng)用的開發(fā)。主要特性
- 非侵入(no-invasive)框架。
- 提供一種一致的,在任何環(huán)境下都可以使用的編程模型。
- 提高代碼的重用性。
- 使系統(tǒng)架構(gòu)更容易選擇。
- 不重復(fù)造輪子。
核心技術(shù)
- 反向控制(IOC)和依賴注入
????控制反轉(zhuǎn)和依賴注入在Spring環(huán)境下是等同的概念,控制反轉(zhuǎn)是通過依賴注入實(shí)現(xiàn)的。所謂的依賴注入是容器負(fù)責(zé)創(chuàng)建和維護(hù)對(duì)象間的依賴關(guān)系,而不是通過對(duì)象本身負(fù)責(zé)自己創(chuàng)建和解決自己的依賴。
依賴注入是為了解耦,體現(xiàn)“組合”的思想。即假如你希望你的一個(gè)類具有某項(xiàng)功能的時(shí)候,你是選擇讓它繼承具有此功能的一個(gè)類好呢,還是組合一個(gè)具有此功能的類?繼承一個(gè)類,子類與父類耦合,而組合另一個(gè)類其耦合度將大大降低。 - 面向切面編程(AOP)
????AOP面向切面編程,相對(duì)于OOP面向?qū)ο缶幊獭?
????Spring的AOP的存在目的是為了解耦,擺脫類與類之間的依賴關(guān)系,AOP可以讓一組類共享相同的行為,OOP中只能通過繼承父類或?qū)崿F(xiàn)接口,并且繼承是單繼承,阻礙了更多的行為添加到一組類上,AOP彌補(bǔ)了OOP的不足。
Spring支持AspectJ的注解式的切面式編程
- 使用@Aspect聲明是一個(gè)切面
- 使用@After、@Before、@Around定義建言(advice),可以直接將攔截規(guī)則(切點(diǎn))作為參數(shù)
- 其中@After、@Before、@Around參數(shù)的攔截規(guī)則為切點(diǎn)(PointCut),為了使切點(diǎn)復(fù)用,可以使用@PointCut專門定義攔截規(guī)則,然后在@After、@Before、@Around的參數(shù)中調(diào)用
- 其中符合條件的每一個(gè)攔截處作為連接點(diǎn)(JoinPoint)
- 一致抽象性
????Spring所使用的大多數(shù)框架并不是自己提供的,而是使用了現(xiàn)成的框架。并且對(duì)同類的框架提供接口,如基于MVC的Web框架、ORM框架等。 - 異常處理
????在Spring中提供了統(tǒng)一的異常類,如數(shù)據(jù)訪問層的org.springFramework.dao.DataAccessException。而且這些類實(shí)際上是RuntimeException的子類,并不需要try….catch進(jìn)行捕獲,因此可以使處理異常的代碼最小化。 - 資源管理
????Spring可以管理很多其他的資源,如:JDBC、JNDI、JTA等,這使得管理這些資源變得十分容易。
基于Spring的Hello World
新建maven工程
單擊File -> New -> Project -> Maven
輸入Maven的坐標(biāo)值
選擇存儲(chǔ)路徑
修改pom.xml文件
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.chen</groupId><artifactId>highlig_spring4</artifactId><version>1.0-SNAPSHOT</version><properties><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.3.11.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>${java.version}</source><target>${java.version}</target></configuration></plugin></plugins></build></project>編寫功能類的Bean
package com.chen.service;import org.springframework.stereotype.Service;/*** created by chen* on 2017/9/23 17:37*///使用@Service注解申明當(dāng)前FunctionService是Spring管理下的一個(gè)Bean。 //使用@Component、@Service、@Repository、@Controller是等效的,根據(jù)具體需要使用 @Service public class FunctionService {public String sayHello(String message){return "Hello " + message + "!";} }使用@Service注解申明當(dāng)前FunctionService是Spring管理下的一個(gè)Bean。使用@Component、@Service、@Repository、@Controller是等效的,根據(jù)具體需要使用
使用功能類Bean
package com.chen.service;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;/*** created by chen* on 2017/9/23 17:41*/@Service public class UseFunctionService {@Autowiredprivate FunctionService functionService;public String sayString(String str){return functionService.sayHello(str);} }- 使用@Service注解申明當(dāng)前UseFunctionService類是Spring管理的一個(gè)Bean
- 使用@Autowired將FunctionService的實(shí)體Bean注入到UseFunctionService中,讓UseFunctionService具備FunctionService的功能,此處使用JSR-330的@JSR-250的@Resource注解是等效的。
配置類
package com.chen.config;import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration;/*** created by chen* on 2017/9/23 17:43*/ //@Configuration聲明當(dāng)前類是一個(gè)配置類 @Configuration //@ComponentScan,自動(dòng)掃描包名下所有只用@Service、@Component、@Repository和使用@Controller的類,并且注冊(cè)為Bean @ComponentScan("com.chen.service") public class TestConfig {}運(yùn)行
package com.chen.test;import com.chen.config.TestConfig; import com.chen.service.UseFunctionService; import org.springframework.context.annotation.AnnotationConfigApplicationContext;/*** created by chen* on 2017/9/23 17:47*/ public class MainTest {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(TestConfig.class);//①UseFunctionService useFunctionService = context.getBean(UseFunctionService.class);//②System.out.println(useFunctionService.sayString("hahahahhahh"));context.close();} }- 使用AnnotationConfigApplicationContext作為Spring容器,接受一個(gè)配置類作為參數(shù)
- 獲得申明配置的UseFunctionService
運(yùn)行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的SpringMVC学习日记 1.Spring框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1032. 挖掘机技术哪家强(20)
- 下一篇: Spring在web中的使用