日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > javascript >内容正文

javascript

SpringMVC学习日记 1.Spring框架

發(fā)布時(shí)間:2024/4/11 javascript 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。