摘要:框架最初是由編寫的,并且年月首次在許可下發布。在一個方法執行之后,只有在方法退出拋出異常時,才能執行通知在建議方法調用之前和之后,執行通知。方法執行之后,不考慮其結果,執行通知。
導讀:
在上篇文章的結尾提到了Spring Boot 提供了一系列的框架整合(Starter POMs)幫助我們提升開發效率,但是這并不意味著我們不需要學習這些框架,反而更需要去學習,通過學習這些框架可以使我們更好的去解決生產中遇到的問題。 在這篇文章中主要以Spring Framework作為起步點,帶你快速了解Spring Framework (下面將以 Spring 代指 Spring Framework)。
Spring Framework: Spring 是什么?簡要介紹:
Spring 框架是一個開源的 Java 平臺,它為容易而快速的開發出耐用的 Java 應用程序提供了全面的基礎設施。
Spring 框架最初是由 Rod Johnson 編寫的,并且 2003 年 6 月首次在 Apache 2.0 許可下發布。
詳細介紹:
Spring Framework 是一個開源的Java/Java EE全功能棧(full-stack)的應用程序框架,以Apache許可證形式發布,也有.NET平臺上的移植版本。該框架基于 Expert One-on-One Java EE Design and Development(ISBN 0-7645-4385-7)一書中的代碼,最初由Rod Johnson和Juergen Hoeller等開發。Spring Framework提供了一個簡易的開發方式,這種開發方式,將避免那些可能致使底層代碼變得繁雜混亂的大量的屬性文件和幫助類。
引自:維基百科
Spring 有什么好處?Spring 框架提供約 20 個模塊,可以根據應用程序的要求來使用,從而提高開發效率。
查看更多介紹:
Spring IoC有什么好處呢? 知乎
spring 好處與優點
Spring的作用到底體現在哪里
快速一覽:
Spring 的體系結構:體系結構介紹描述
快速上手Spring:
經濟學中有個概念叫做2 8 定理,在我們這篇文章中我們也以這個定理作為指導思想,列舉Spring中最常用的20%的配置與注解。
在Spring中最核心的兩個概念是IOC 與 AOP,我們將分別以它兩個為例列舉出常用的注解,在開始之前我們先了解一下Spring IOC 的概念 、 AOP的概念,了解完這些概念之后我們開始以一個簡單的Hello World 為例:
要求:
將Spring導入項目
1.Spring 上下文的配置類:
//自定義的bean類型 public class Hello { private String hello; /**省略get/set**/ } //配置上下文 @Configuration public class Configer { //注冊Hello 示例 @Bean public Hello getHello(){ return new Hello(); } }
2.獲取Spring 上下文中的Bean:
public class MainApp { public static void main(String[] args) { //創建Spring 上下文對象 ApplicationContext applicationContext = new AnnotationConfigApplicationContext(Configer.class); //獲取Spring 上下文對象中的 Hello的示例 Hello hello = applicationContext.getBean(Hello .class); hello.setHello("Hello World"); System.out.println(hello.getHello()); } }
控制臺信息:
Hello World
一.Spring IOC 中常用的注解:
注冊上下文
屬性基本注解:
@Bean :用于表示創建的bean示例
類級別注解:
@Configuration 配置上下文
@Service用于標注業務層組件、
@Controller用于標注控制層組件(如struts中的action)、
@Repository用于標注數據訪問組件,即DAO組件。
@Component泛指組件,當組件不好歸類的時候,我們可以使用這個注解進行標注。 這四種注解僅僅是角色不同,但本質都一樣。
用于自動裝配
字段及方法注解 :
@Autowired 注解可以應用到 bean 屬性的 setter 方法,非 setter 方法,構造函數和屬性。
@Resource 注解可以應用到 bean 屬性的 setter 方法。
二.AOP中常用的注解:
為列方便理解舉一個簡單的例子:
@Component @Aspect public class MyAdvice { @Pointcut("execution(* cn.sunxyz.spring.aop.*Service.*(..))") // expression private void businessService() { } // 在一個方法執行之前,執行通知。 @Before("businessService()") public void doBeforeTask() { System.out.println("doBeforeTask."); } // 在一個方法執行之后,不考慮其結果,執行通知。 @After("businessService()") public void doAfterTask() { System.out.println("doAfterTask."); } // 在一個方法執行之后,只有在方法成功完成時,才能執行通知。 @AfterReturning(pointcut = "businessService()", returning = "retVal") public void doAfterReturnningTask(JoinPoint joinPoint, Object retVal) { String methodName = joinPoint.getSignature().getName(); System.out.println("doAfterReturnningTask " + methodName + " return with " + retVal); } // 在一個方法執行之后,只有在方法退出拋出異常時,才能執行通知 @AfterThrowing(pointcut = "businessService()", throwing = "ex") public void doAfterThrowingTask(JoinPoint joinPoint, Exception ex) { String methodName = joinPoint.getSignature().getName(); System.out.println("doAfterThrowingTask " + methodName + " occurs exception: " + ex); } // 在建議方法調用之前和之后,執行通知。 @Around("businessService()") public Object doAroundTask(ProceedingJoinPoint jpoint) { Object result = null; String methodName = jpoint.getSignature().getName(); // 執行目標方法 try { // 前置通知 System.out.println("The method " + methodName + " begins with " + Arrays.asList(jpoint.getArgs())); result = jpoint.proceed(); // 返回通知 System.out.println("The method " + methodName + " ends with " + Arrays.asList(jpoint.getArgs())); } catch (Throwable e) { // 異常通知 System.out.println("The method " + methodName + " occurs expection : " + e); throw new RuntimeException(e); } // 后置通知 System.out.println("The method " + methodName + " ends"); return result; } }
類級注解:
@Aspect 聲明這是一個切面對象
方法級注解:
@Pointcut 聲明一個切點規則
@Before 方法執行之前,執行通知。
@After 方法執行之后,不考慮其結果,執行通知。
@AfterReturning 方法執行之后,只有在方法成功完成時,才能執行通知
@AfterThrowing 方法執行之后,只有在方法退出拋出異常時,才能執行通知
@Around 在方法調用之前和之后,執行通知 等價于上面四個相加
想要了解更多詳細信息 可以查看下面的學習資料。
學習資料:官方文檔:
Spring Framework Reference Documentation -4.3.6.RELEASE
學習教程:
Spring 教程 - 極客學院 基于spring 4.1.6版
Spring 教程 - 簡書 基于spring 4.1.6版
Spring初學快速入門 - 一百教程網 基于spring 4.0.4版
Spring 作為一個優秀的開發框架幫助我們提高了開發效率,而且其中的IOC 與 AOP的思想可以幫助我們將項目構建的更健壯,在下一篇文章中將簡要的介紹一下Spring MVC 常用的注解。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66769.html
摘要:筆者也是初學者,本文從創建項目工程開始,一步一步開始講解如何創建服務端和客戶端,一起學習,共同進步。下面我們使用工具創建相關項目。配置其中兩個屬性表明這個應用是端,而不是端。至此,端和端已經部署成功。 前言 spring cloud為互聯企業構建微服務提供了一整套的技術組件,其中Eureka是Spring Cloud體系中的核心。Netfix不是一個技術概念,它原本是國外一個視頻網站的...
摘要:本例中介紹如何使用來完成服務調用并實現負載均衡。即,對于注冊中心而言,生產者和調用者都是端。文件配置如下在文件中,我們將應用命名為,端口為,表示注冊中心地址。 前言 Ribbon是Spring Cloud體系中完成負載均衡的重要組件。Spring Cloud體系中有兩種完成服務調用的組件,一種是Ribbon+RestTemplate,另一種Feign。Feign默認使用的也是Ribbo...
摘要:響應式編程是基于異步和事件驅動的非阻塞程序,只是垂直通過在內啟動少量線程擴展,而不是水平通過集群擴展。三特性常用的生產的特性如下響應式編程模型適用性內嵌容器組件還有對日志消息測試及擴展等支持。 摘要: 原創出處 https://www.bysocket.com 「公眾號:泥瓦匠BYSocket 」歡迎關注和轉載,保留摘要,謝謝! 02:WebFlux 快速入門實踐 文章工程: JDK...
摘要:編寫一個接口創建命名為根據實際情況修改創建類,內容如下啟動主程序,使用等工具發起請求,可以看到頁面返回編寫單元測試用例打開的下的測試入口類。 簡介 在您第1次接觸和學習Spring框架的時候,是否因為其繁雜的配置而退卻了?在你第n次使用Spring框架的時候,是否覺得一堆反復黏貼的配置有一些厭煩?那么您就不妨來試試使用Spring Boot來讓你更易上手,更簡單快捷地構建Spring應...
閱讀 2064·2023-04-25 22:58
閱讀 1408·2021-09-22 15:20
閱讀 2694·2019-08-30 15:56
閱讀 1986·2019-08-30 15:54
閱讀 2101·2019-08-29 12:31
閱讀 2728·2019-08-26 13:37
閱讀 592·2019-08-26 13:25
閱讀 2098·2019-08-26 11:58