Spring常用註解——JAVA成長之路

2020-12-14 JAVA數據結構

作用:

調用無參構造創建一個bean對象,並把對象存入spring的IOC容器,交由spring容器進行管理。相當於在xml中配置一個bean。

屬性:

value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。

1.2

作用:

作用上與@Component。一般用於表現層的註解。

屬性:

value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。

1.3

作用:

作用上與@Component。一般用於業務層的註解。

屬性:

value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。

1.4

作用:

作用上與@Component。一般用於持久層的註解。

屬性:

value:指定bean的id。如果不指定value屬性,默認bean的id是當前類的類名。首字母小寫。

1.5

作用:

用於把當前方法的返回值作為bean對象存入spring的ioc容器中

屬性:

name:用於指定bean的id。當不寫時,默認值是當前方法的名稱。注意:當我們使用註解配置方法時,如果方法有參數,spring框架會去容器中查找有沒有可用的bean對象,查找的方式和Autowired註解的作用是一樣的。

案例:

/** * 獲取DataSource對象 * @return */@Bean(value = "dataSource")public DataSource getDataSource() { try { ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setDriverClass(this.driver); dataSource.setJdbcUrl(this.url); dataSource.setUser(this.username); dataSource.setPassword(this.password); return dataSource; }catch (Exception exception) { throw new RuntimeException(exception); }}

2)用於依賴注入的註解

2.1

作用:

@Autowire和@Resource都是Spring支持的註解形式動態裝配bean的方式。Autowire默認按照類型(byType)裝配,如果想要按照名稱(byName)裝配,需結合@Qualifier註解使用。

屬性:

required:@Autowire註解默認情況下要求依賴對象必須存在。如果不存在,則在注入的時候會拋出異常。如果允許依賴對象為null,需設置required屬性為false。

案例:

@Autowire @Qualifier("userService")private UserService userService;

2.2

作用:

在自動按照類型注入的基礎之上,再按照 Bean 的 id 注入。它在給欄位注入時不能獨立使用,必須和 @Autowire一起使用;但是給方法參數注入時,可以獨立使用。

屬性:

value:用於指定要注入的bean的id,其中,該屬性可以省略不寫。

案例:

@Autowire@Qualifier(value="userService")//@Qualifier("userService") //value屬性可以省略不寫private UserService userService;

2.3

作用:

@Autowire和@Resource都是Spring支持的註解形式動態裝配bean的方式。@Resource默認按照名稱(byName)裝配,名稱可以通過name屬性指定。如果沒有指定name,則註解在欄位上時,默認取(name=欄位名稱)裝配。如果註解在setter方法上時,默認取(name=屬性名稱)裝配。

屬性:

name:用於指定要注入的bean的idtype:用於指定要注入的bean的type

裝配順序

1.如果同時指定name和type屬性,則找到唯一匹配的bean裝配,未找到則拋異常;2.如果指定name屬性,則按照名稱(byName)裝配,未找到則拋異常;3.如果指定type屬性,則按照類型(byType)裝配,未找到或者找到多個則拋異常;4.既未指定name屬性,又未指定type屬性,則按照名稱(byName)裝配;如果未找到,則按照類型(byType)裝配。

案例:

@Resource(name="userService")//@Resource(type="userService")//@Resource(name="userService", type="UserService")private UserService userService;

2.4

作用:

通過@Value可以將外部的值動態注入到Bean中,可以為基本類型數據和String類型數據的變量注入數據

案例:

// 1.基本類型數據和String類型數據的變量注入數據@Value("tom")private String name;@Value("18")private Integer age;// 2.從properties配置文件中獲取數據並設置到成員變量中// 2.1jdbcConfig.properties配置文件定義如下jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql://localhost:3306/eesyjdbc.username = rootjdbc.password = root// 2.2獲取數據如下@Value("${jdbc.driver}")private String driver;@Value("${jdbc.url}")private String url; @Value("${jdbc.username}")private String username; @Value("${jdbc.password}")private String password;

3)用於改變bean作用範圍的註解

3.1

作用:

指定bean的作用範圍。

屬性:

value: 1)singleton:單例 2)prototype:多例 3)request: 4)session: 5)globalsession:

案例:

@Autowire@Scope(value="prototype")private UserService userService;

4)生命周期相關的註解

4.1

作用:

指定初始化方法

案例:

@PostConstruct public void init() { System.out.println("初始化方法執行");}

4.2

作用:

指定銷毀方法

案例:

@PreDestroy public void destroy() { System.out.println("銷毀方法執行");}

5)配置類相關的註解

相關焦點

  • Spring註解配置和xml配置優缺點比較
    Spring註解配置和xml配置優缺點比較在昨天發布的文章《spring boot基於註解方式配置datasource》一文中凱哥簡單的對xml配置和註解配置進行了比較。然後朋友看到文章後,就問:那你說說這兩種區別。額,說真的,還真把凱哥給問蒙圈了。
  • JAVA8——JAVA成長之路
    Filter,Filters僅僅是Filter註解的數組,但Java編譯器並不想讓程式設計師意識到Filters的存在。這樣,接口Filterable就擁有了兩次Filter(並沒有提到Filter)註解。同時,反射相關的API提供了新的函數getAnnotationsByType()來返回重複註解的類型(請注意Filterable.class.getAnnotation( Filters.class )經編譯器處理後將會返回Filters的實例)。
  • spring框架之註解的使用
    1開啟註解①開啟spring的註解context:annotation-config讓註解有效了,能夠識別註解。如果是註解+XML組合使用,可以只開啟①。2註解的使用①@Component註解相當於將對象存放到spring容器中。
  • Java經典面試題Spring是什麼 Spring框架入門詳解
    下面請看java代碼我們通過ClassPathXmlApplicationContext類傳入applicationContext.xml配置文件的相對路徑,創建出spring的容器對象ApplicationContext,在通過容器對象中的方法獲取到Spring容器為我們創建的user對象,其實Spring兩個容器,除了ApplicationContext外還有一個BeanFactory
  • 面試刷題:Spring Bean的生命周期?
    spring是Java軟體開發的事實標準。今天的問題是:springBean的生命周期是怎樣的?,@Bean註解,或者Java代碼BeanDefinitionBuilder中讀取Bean的定義,實例化Bean對象;2、設置Bean的屬性;3、注入Aware的依賴(BeanNameAware,BeanFactoryAware,ApplicationContextAware);
  • 乾貨|SpringBoot註解大全,值得收藏
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫一、註解(annotations)列表@SpringBootApplication
  • smart-doc 2.0.1 發布,Java 零註解 API 文檔生成工具
    smart-doc是一款同時支持java restful api和apache dubbo rpc接口文檔生成的工具
  • 小學妹問:Mybatis常見註解有哪些?
    該註解是由Mybatis框架中定義的一個描述數據層接口的註解,註解往往起到的都是一個描述性作用,用於告訴Spring框架此接口的實現類由Mybatis負責創建,並將其實現類對象存儲到spring容器中。
  • 手擼rpc框架,並基於spring進行二次註解開發
    可以使用下接口的方法(像上面示例一樣,直接使用spring的註解即可),實質是遠程調用實現的方法。:服務端應用,依賴和。>將自定義的rpc框架整合到spring中。可以參考 面試官你好,我自己手寫實現過Mybatis(超詳細注釋)(1)、RpcClientProxyFactory* 提供api接口的代理類,實現spring的FactoryBean接口//該註解可以從配置文件讀取value@PropertySource
  • Spring Boot與Shiro整合實現用戶認證
    ;import org.springframework.beans.factory.annotation.Qualifier;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration
  • springboot+springsecurity實現前後端分離簡單實現!
    看springsecurtiy原理圖的時候以為灑灑水,結果自己動手做的時候一竅不通,所以一定不要眼高手低,實踐出真知!通過各種方式學習springsecurity,在B站、騰訊課堂、網易課堂、慕課網沒有springsecurity的前後端分離的教學視頻,那我就去csdn去尋找springsecurity博客,發現幾個問題:要麼就是前後端不分離,要麼就是通過內存方式讀取數據,而不是通過資料庫的方式讀取數據,要麼就是大佬們給的代碼不全、把代碼講的太繞,關鍵部分沒有注釋
  • 詳解SpringCloud中RabbitMQ消息隊列原理及配置,一篇就夠!
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫一、MQ用途1、同步變異步消息場景:用戶下單完成後,發送郵件和簡訊通知。rabbitmq已經被spring-boot做了整合訪問實現。spring cloud也對springboot做了整合邏輯。所以rabbitmq的依賴可以在spring cloud中直接使用。
  • 從零搭建 Spring Cloud 服務(超詳細)
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫這裡會介紹很多基礎知識,直接想開始搭建微服務的可以看第二章,微服務的搭建。直接看第二章不會有什麼影響,可以先學會開車再學習車的構造的,看個人習慣來。
  • 「純手打」2萬字長文從0開始Spring Boot(上)
    @RequestBody 是SpringMVC為我們提供的轉換註解,表示我們這個網址不是返回的一個頁面,而是返回的一個對象, SpringMVC 對標識了該註解的接口會自動將數據轉換為 json返回到頁面中,方便我們前端或者是移動端使用哦!接下來,我們啟動服務訪問一下吧!我們看到 瀏覽器已經響應了結果。
  • 繼「劉強東」之後京東的第二位程式設計師「呂科」spring面試題講解
    面試問題答案及spring常見面試問題答案1、什麼是Spring框架?在Spring框架中,依賴和服務需要在專門的配置文件來實現,我常用的XML格式的配置文件。這些配置:文件的格式通常用<beans>開頭,然後一系列的bean定義和專門的應用配置選項組成。SpringXML配置的主要目的時候是使所有的Spring組件都可以用xml文件的形式來進行配置。
  • java基礎教程:Collection集合,Collection 常用API
    集合:集合是java中提供的一種容器,可以用來存儲多個數據。集合和數組既然都是容器,它們有什麼區別呢?數組的長度是固定的。集合的長度是可變的。集合常用類的繼承體系Collection:單列集合類的根接口,用於存儲一系列符合某種規則的元素,它有兩個重要的子接口,分別是java.util.List和java.util.Set。其中,List的特點是元素有序、元素可重複。Set的特點是元素不可重複。
  • 阿里面試總結:69道必問的spring面試題(附加答案)
    什麼是spring?2. 使用Spring框架的好處是什麼?3. Spring由哪些模塊組成?4. 核心容器(應用上下文) 模塊。5. BeanFactory – BeanFactory 實現舉例。在 Spring中如何注入一個java集合?31. 什麼是bean裝配?32. 什麼是bean的自動裝配?33. 解釋不同方式的自動裝配 。34.自動裝配有哪些局限性 ?35.
  • Spring Boot 無侵入式 實現API接口統一JSON格式返回
    本文轉載自【微信公眾號:java進階架構師,ID:java_jiagoushi】經微信公眾號授權轉載,如需轉載與原文作者聯繫無侵入式 統一返回JSON格式其實本沒有沒打算寫這篇博客的,但還是要寫一下寫這篇博客的起因是因為,現在呆著的這家公司居然沒有統一的API
  • 動力節點Java學院2021年Java學習路線圖最新出爐啦
    Javaweb初級的一般是用JSP(Java Server Pages)+servlet+Javabean來開發,對大型的網站一般是使用框架來開發的,例如struts,hibernate,spring,典型的struts框架結構。