當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringMVC学习日记 1.Spring框架
生活随笔
收集整理的這篇文章主要介紹了
SpringMVC学习日记 1.Spring框架
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SpringMVC學習日記 1.Spring框架
Spring簡介
Spring框架是一個開源框架,由Rod Johnson組織和開發,生產目的在于簡化企業級應用的開發。主要特性
- 非侵入(no-invasive)框架。
- 提供一種一致的,在任何環境下都可以使用的編程模型。
- 提高代碼的重用性。
- 使系統架構更容易選擇。
- 不重復造輪子。
核心技術
- 反向控制(IOC)和依賴注入
????控制反轉和依賴注入在Spring環境下是等同的概念,控制反轉是通過依賴注入實現的。所謂的依賴注入是容器負責創建和維護對象間的依賴關系,而不是通過對象本身負責自己創建和解決自己的依賴。
依賴注入是為了解耦,體現“組合”的思想。即假如你希望你的一個類具有某項功能的時候,你是選擇讓它繼承具有此功能的一個類好呢,還是組合一個具有此功能的類?繼承一個類,子類與父類耦合,而組合另一個類其耦合度將大大降低。 - 面向切面編程(AOP)
????AOP面向切面編程,相對于OOP面向對象編程。
????Spring的AOP的存在目的是為了解耦,擺脫類與類之間的依賴關系,AOP可以讓一組類共享相同的行為,OOP中只能通過繼承父類或實現接口,并且繼承是單繼承,阻礙了更多的行為添加到一組類上,AOP彌補了OOP的不足。
Spring支持AspectJ的注解式的切面式編程
- 使用@Aspect聲明是一個切面
- 使用@After、@Before、@Around定義建言(advice),可以直接將攔截規則(切點)作為參數
- 其中@After、@Before、@Around參數的攔截規則為切點(PointCut),為了使切點復用,可以使用@PointCut專門定義攔截規則,然后在@After、@Before、@Around的參數中調用
- 其中符合條件的每一個攔截處作為連接點(JoinPoint)
- 一致抽象性
????Spring所使用的大多數框架并不是自己提供的,而是使用了現成的框架。并且對同類的框架提供接口,如基于MVC的Web框架、ORM框架等。 - 異常處理
????在Spring中提供了統一的異常類,如數據訪問層的org.springFramework.dao.DataAccessException。而且這些類實際上是RuntimeException的子類,并不需要try….catch進行捕獲,因此可以使處理異常的代碼最小化。 - 資源管理
????Spring可以管理很多其他的資源,如:JDBC、JNDI、JTA等,這使得管理這些資源變得十分容易。
基于Spring的Hello World
新建maven工程
單擊File -> New -> Project -> Maven
輸入Maven的坐標值
選擇存儲路徑
修改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注解申明當前FunctionService是Spring管理下的一個Bean。 //使用@Component、@Service、@Repository、@Controller是等效的,根據具體需要使用 @Service public class FunctionService {public String sayHello(String message){return "Hello " + message + "!";} }使用@Service注解申明當前FunctionService是Spring管理下的一個Bean。使用@Component、@Service、@Repository、@Controller是等效的,根據具體需要使用
使用功能類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注解申明當前UseFunctionService類是Spring管理的一個Bean
- 使用@Autowired將FunctionService的實體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聲明當前類是一個配置類 @Configuration //@ComponentScan,自動掃描包名下所有只用@Service、@Component、@Repository和使用@Controller的類,并且注冊為Bean @ComponentScan("com.chen.service") public class TestConfig {}運行
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容器,接受一個配置類作為參數
- 獲得申明配置的UseFunctionService
運行結果
總結
以上是生活随笔為你收集整理的SpringMVC学习日记 1.Spring框架的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1032. 挖掘机技术哪家强(20)
- 下一篇: MyBatis配置错误