Spring Boot實戰之基礎回顧

本文做者: 吳偉祥java

本文連接: https://wuweixiang.cn/2018/08/21/Spring-Boot實戰之基礎回顧/spring

版權聲明: 本博客全部文章除特別聲明外均爲原創,採用CC BY-NC-SA 4.0 許可協議。轉載請在文章開頭明顯位置註明原文連接和做者等相關信息,明確指出修改(若有),並經過 E-mail 等方式告知,謝謝合做!數據庫

認識Java EE中王者

Java EE,Java平臺企業版(Java Platform Enterprise Edition),以前稱爲Java 2 Platform, Enterprise Edition (J2EE),2018年3月改名爲Jakarta EE。是Sun公司爲企業級應用推出的標準平臺。Java平臺共分爲三個主要版本Java EE、Java SE和Java ME。編程

Java EE是一系列技術標準所組成的平臺,包括:緩存

Servlet - Java Servlet API安全

JDBC - Java數據庫聯接(Java Database Connectivity)服務器

JSP - Java服務器頁面(Java Server Pages)架構

JSTL - Java服務器頁面標準標籤庫(Java Server Pages Standard Tag Library)mvc

JMS - Java消息服務(Java Message Service)app

Applet - Java Applet

EJB - 企業級JavaBean(Enterprise Java Beans)

JAAS - Java Authentication and Authorization Service

JACC - J2EE Authorization Contract for Containers

JAF - Java Beans Activation Framework

JAX-RPC - Java API for XML-Based Remote Procedure Calls

JAX-WS - Java API for XML Web Services

JAXM - Java API for XML Messaging

JAXP - Java XML解析API(Java API for XML Processing)

JAXR - Java API for XML Registries

JCA - J2EE鏈接器架構(J2EE Connector Architecture)

JMX - Java Management

JNDI - Java名稱與目錄接口(Java Naming and Directory Interface)

JSF - Java Server Faces

JTA - Java事務API(Java Transaction API)

JavaMail

StAX - Streaming APIs for XML Parsers

WS - Web Services

回顧Spring

Spring的簡史

Spring每一個新版本的推出都以減小配置做爲本身的主要目標

第一階段:xml配置

在Spring 1.x時代,使用Spring 開發滿眼都是xml配置的Bean,隨着項目的擴大,咱們須要把xml配置文件放到不一樣的配置文件裏,那時候須要頻繁地在開發的類和配置文件之間切換。

第二階段:註解配置

在Spring 2.x 時代,隨着JDK1.5帶來的註解支持,Spring提供了聲明Bean的註解(例如@Component、@Service),大大減小了配置量。主要使用的方式是應用的基本配置(如數據庫配置)用xml,業務配置用註解。

第三階段:Java配置

Spring 3.0 引入了基於 Java 的配置能力,這是一種類型安全的可重構配置方式,能夠代替 XML。咱們目前恰好處於這個時代,Spring4.x開始都推薦使用Java配置。

Spring概述

在當前Java EE 開發中,Spring框架是當之無愧的王者。Spring框架是一個輕量級的企業級開發的一站式解決方案。所謂解決方案就是能夠基於spring解決Java EE開發的全部問題。Spring框架提供了IoC容器,AOP、數據訪問、Web開發、消息、測試等相關技術的支持

Spring 使用簡單的POJO(Plain Old Java Object,即無任何限制的普通Java對象)來進行企業級開發。每個被Spring管理的Java對象都稱之爲Bean;而Spring提供了一個IoC容器來初始化對象,解決對象間的依賴管理和對象的使用。

 

簡單地說,這六個模塊實現的功能分別爲:

Ø 核心容器:核心模塊,提供了IoC/DI容器

Ø AOP:AOP的實現和AspectJ的支持

Ø 消息:提供對基於消息應用的支持,提供與Spring Integration的集成

Ø 數據訪問與集成:JDBC訪問的簡化、事務的支持,ORM(Object Relation Mapping)框架(如JPA、Hibernate和Mybatis等)與OXM(Object XML Mapping)框架的集成

Ø Web:Spring MVC的實現,能集成衆多模板引擎技術(如Thymeleaf、JSP與Velocity等)

Ø 測試:提供大量Mock對象,支持單元測試;提供Spring Context的測試支持,支持集成測試

Spring的四大原則

1)使用POJO進行輕量級和最小侵入式開發。

2)經過依賴注入和基於接口編程實現鬆耦合。

3)經過AOP和默認習慣進行聲明式編程。

4)使用AOP 和模板減小模式化代碼。

Spring全部功能的設計和實現都是基於此四大原則。

Spring基礎配置

依賴注入

Inversion of Control – IOC 和Dependency injection –DI 在Spring環境下是等同的概念,控制翻轉是經過依賴注入實現的。所謂的依賴注入指的是容器負責建立對象和維護對象間的依賴關係,而不是經過對象自己負責本身的建立和解決本身的依賴。

依賴注入體現了一種「組合」的理念。主要目的是爲了解耦。

Spring IoC容器(ApplicationContext)負責建立Bean,並經過容器將功能類Bean注入到你須要的Bean中。不管是xml配置、註解配置仍是Java配置,都被稱爲配置元數據(元數據=描述數據的數據)。元數據自己不具有任何可執行的能力,只能經過外界代碼來對這些元數據行解析後進行一些有意義的操做。Spring容器解析這些配置元數據進行Bean初始化、配置和管理依賴。

聲明Bean的註解:

Ø @Component(沒有明確的角色)

Ø @Service(Service層)

Ø @Repository(Dao層)

Ø @Controller(表現層 MVC ->Spring MVC)

注入Bean的註解(可註解在Set方法和屬性上):

Ø @Autowired

Ø @Inject

Ø @Resource

Java配置

​ Java配置是Spring 4.x推薦方式,能夠徹底替代xml配置;Java配置也是Spring Boot推薦的配置方式。

​ Java配置是經過@Configuration和@Bean來實現的。

Ø @Configuration聲明當前類是一個配置類,至關於一個Spring配置的xml文件

Ø @Bean註解在方法上,聲明當前方法的返回值爲一個Bean

什麼時候使用Java配置或者註解配置呢?

全局配置:使用java配置(如數據庫相關配置、MVC相關配置)

業務Bean的配置:使用註解配置

@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}

等價於spring的xml裏的配置

<beans>
<bean id="myService" class="com.zhoan.service.impl.MyServiceImpl"/>
</beans>

AOP

Spring支持的AspectJ註解式切面編程

(1)使用@Aspect聲明是一個切面

(2)使用@After,@Before,@Around 定義建言(advice),能夠直接將攔截規則(切點PointCut)做爲參數

(3)爲了使切點複用,可以使用@PointCut專門定義攔截規則,而後在@After,@Before,@Around的參數中調用

(4)其中符合條件的每個被攔截處爲鏈接點(JoinPoint)

註解式攔截可以很好的控制要攔截的粒度和得到更豐富的信息,Spring自己在事務處理(@Transcational)和數據緩存池(@Cacheable)等上面都使用了此種形式的攔截

回顧Spring MVC

Spring MVC概述

MVC和三層架構是什麼關係?

MVC:Model + View + Controller (數據模型+視圖+控制器)

三層架構:Presentation tier + Application tier + Data tier(表現層+應用層+數據訪問層)

三層架構是一種軟件架構設計理念,適用於全部項目;

而mvc只是表現層的一種細化。把表現層劃分爲M -V- C三個模塊。

Spring MVC經常使用註解

@Controller

聲明Bean的註解都組合了@Component元註解,但在SpringMVC聲明控制器Bean的時候,只能用@Controller

@RequesMapping

用來映射Web請求(訪問路徑和參數)、處理類和方法的。方法上的@RequestMapping路徑會集成註解在類上的路徑。

@ResponseBody

支持返回值放在response體內,而不是返回一個頁面

@PathVariable

用來接收路徑參數,如/news/{a},/news/1能夠接收1做爲a的參數值

@RestController

組合註解,組合了@Controller和@ResponseBody

Spring MVC基礎配置

Ø 靜態資源映射

Ø 攔截器配置

Ø 視圖解析器配置

Ø 文件上傳配置

Ø 自定義HttpMessageConverter

相關文章
相關標籤/搜索