面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

前言

相信大家從最初的小白走到如今的高級開發工程師,都是經歷了一段鮮為人知的路,不僅需要拓展知識的寬度,還要有知識的深度,不知不覺一頭烏黑鮮亮的頭髮,變得稀疏發白。

自己的苦只有自己知道,別人很難體會到其中的艱辛與淚水,為了將來的路,默默的付出!

想必大家也聽過這句話,“面試造火箭,入職擰螺絲”,在面試的時候,大家總要準備的很充足,才能完美的完成面試,下面就給大家介紹的是一位小夥伴面試螞蟻金服的時候,竟然被MySQL和spring給難倒了,很多相關性的問題都沒有答上來,最後導致1面沒有成功,在落敗之後,這位小夥伴潛心修煉。狂刷200遍面試題之後,二面螞蟻金服,終入職螞蟻金服,並且拿到了可觀的薪資。

下面展示的阿里面試題(含答案)、學習包、實戰文檔等,都可以分享給大家,希望大家能夠喜歡,需要的小夥伴,私信小編“面試”得到獲取方式

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

螞蟻金服面試題之MySQL

本文是針對MySQL系列的,所以下面只展示了自己第一次面試阿里時被吊打問到的一些MySQL難題,其他專題內容(含答案)的文檔資料。

  • 請解釋關係型數據庫概念及主要特點?
  • 請說出關係型數據庫的典型產品、特點及應用場景?
  • 請詳細描述 SQL 語句分類及對應代表性關鍵字。
  • 什麼是 MySQL 多實例,如何配置 MySQL 多實例?
  • 如何加強 MySQL 安全,請給出可行的具體措施?
  • 誤操作執行了一個 drop 庫 SQL 語句,如何完整恢復?
  • 詳述 MySQL 主從複製原理及配置主從的完整步驟。
  • MySQL 如何實現雙向互為主從複製,並說明應用場景?
  • MySQL 如何實現級聯同步,並說明應用場景?
  • MySQL 主從複製故障如何解決?
面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

二戰阿里,天貓團隊面試題(3輪技術面+HR面)

螞蟻金服面試技術題:

  • 自我介紹唄
  • 項目介紹唄(先自己介紹項目,然後再聊天)
  • junit用法,before,beforeClass,after,afterClass的執行順序
  • 分佈式鎖
  • Nginx的請求轉發算法,如何配置根據權重轉發
  • 用hashmap實現redis有什麼問題(死鎖,死循環,可用ConcurrentHashmap)
  • 線程的狀態
  • 線程的阻塞的方式
  • sleep和wait的區別
  • hashmap的底層實現
  • 一萬個人搶100個紅包,如何實現(不用隊列),如何保證2個人不能搶到同一個紅包,可用分佈式鎖
  • Java內存模型,垃圾回收機制,不可達算法
  • 兩個Integer的引用對象傳給一個swap方法在方法內部交換引用,返回後,兩個引用的值是否會發現變化
  • AOP的底層實現,動態代理是如何動態,假如有100個對象,如何動態的為這100個對象代理?
  • 是否用過maven install、 maven test、git(make install是安裝本地jar包)
  • Tomcat的各種配置,如何配置docBase
  • Spring的bean配置的幾種方式
  • Web.xml的配置
  • Spring的監聽器。
  • Zookeeper的實現機制,有緩存,如何存儲註冊服務的
  • IO會阻塞嗎?readLine是不是阻塞的
  • 用過 Spring的線程池還是java的線程池?
  • 字符串的格式化方法 (20,21這兩個問題問的太低級了)
  • 時間的格式化方法
  • 定時器用什麼做的
  • 線程如何退出結束
  • java有哪些鎖?樂觀鎖 悲觀鎖 synchronized 可重入鎖 讀寫鎖,用過reentrantlock嗎?reentrantlock與synmchronized的區別
  • ThreadLocal的使用場景
  • Java的內存模型,垃圾回收機制
  • 為什麼線程執行要調用start而不是直接run(直接run,跟普通方法沒什麼區別,先調start,run才會作為一個線程方法運行)
  • qmq消息的實現機制(qmq是去哪兒網自己封裝的消息隊列)
  • 遍歷hashmap的三種方式
  • JVM的一些命令
  • memcache和redis的區別
  • Mysql的行級鎖加在哪個位置
  • ConcurrentHashmap的鎖是如何加的?是不是分段越多越好
  • myisam和innodb的區別(innodb是行級鎖,myisam是表級鎖)
  • MySQL其他的性能優化方式
  • Linux系統日誌在哪裡看
  • 如何查看網絡進程?
  • 統計一個整數的二進制表示中bit為1的個數
  • JVM內存模型,java內存模型

面試題答案,敬請觀看:

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

二戰前,我是如何複習的?

(1)MySQL 專題部分(先刷題)

  • Mysql 中有哪幾種鎖?
  • MYSQL 數據表在什麼情況下容易損壞?
  • MySQL 裡記錄貨幣用什麼字段類型好
  • MYSQL 支持事務嗎?
  • 解釋訪問控制列表
  • 什麼是通用 SQL 函數?
  • 什麼是非標準字符串類型?
  • Mysql 表中允許有多少個 TRIGGERS?
  • 什麼樣的對象可以使用 CREATE 語句創建?
  • 1NOW和 CURRENT_DATE有什麼區別?
  • 可以使用多少列創建索引?
  • InnoDB 是什麼?
  • Mysql 如何優化 DISTINCT?
  • 如何輸入字符為十六進制數字?
  • 如何顯示前 50 行?
  • ......

MySQL面試題答案:

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

MySQL 性能優化的21個最佳實踐

  • 為查詢緩存優化你的查詢
  • EXPLAIN 你的 SELECT 查詢
  • 當只要一行數據時使用 LIMIT 1
  • 為搜索字段建索引
  • 在 Join 表的時候使用相當類型的例,並將其索引
  • 千萬不要 ORDER BY RAND
  • 避免 SELECT *
  • 永遠為每張表設置一個 ID
  • 使用 ENUM 而不是 VARCHAR
  • 從 PROCEDURE ANALYSE 取得建議
  • 儘可能的使用 NOT NULL
  • Prepared Statements
  • 無緩衝的查詢
  • 把 IP 地址存成 UNSIGNED INT
  • 固定長度的表會更快
  • 垂直分割
  • 拆分大的 DELETE 或 INSERT 語句
  • 越小的列會越快
  • 選擇正確的存儲引擎
  • 使用一個對象關係映射器(Object Relational Mapper)
  • 小心“永久鏈接”


面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

MySQL 性能調優與架構設計

基礎篇:

  • MySQL基本介紹
  • MySQL架構組成
  • MySQL存儲引擎簡介
  • MySQL安全管理
  • MySQL備份與恢復

性能優化篇:

  • 影響MySQLServer性能的相關因素
  • MySQL數據庫鎖定機制
  • MySQL數據庫Query的優化
  • MySQL數據庫Schema設計的性能優化
  • MySQLServer性能優化
  • 常用存儲引擎優化

架構設計篇:

  • MySQL可擴展設計的基本原則
  • 可擴展性設計之MySQLReplication
  • 可擴展性設計之數據切分
  • 可擴展性設計之Cache與Search的..
  • MySQLCluster
  • 高可用設計之思路及方案
  • 高可用設計之MySQL監控
面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

我的複習寶典資料

Java面試手冊

  • 性能優化面試專欄
  • 微服務架構面試專欄
  • 併發編程高級面試專欄
  • 開源框架面試題專欄
  • 分佈式面試專欄
面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

實戰文檔

  • Redis實戰
  • MySQL實戰
  • Spring Boot實戰
  • Spring Cloud實戰
  • 實戰Java虛擬機

以實戰Java虛擬機為例:

  • 初探Java虛擬機
  • 認識Java虛擬機的基本結構
  • 常用Java 虛擬機參數
  • 垃圾回收概念與算法
  • 垃圾收集器和內存分配
  • 性能監控工具
  • 分析Java堆
  • 鎖與併發
  • Class 文件結構
  • Class 裝載系統
  • 字節碼執行
面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

Java核心知識點整理文檔

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

java程序員進階:螞蟻金服的Spring經典面試題集錦

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

當時我自己也準備出去看看機會,順便看看自己的實力。當時我其實挺糾結的,一方面現在部門也正需要我,還是可以有一番作為的,另一方面覺得近一年來進步緩慢,沒有以前飛速進步的成就感了,而且業務和技術偏於穩定,加上自己也屬於那種比較懶散的人,骨子裡還是希望能夠突破現狀,持續在技術上有所精進。

一般問題

不同版本的 Spring Framework 有哪些主要功能? VersionFeatureSpring 2.5發佈於 2007 年。這是第一個支持註解的版本。Spring 3.0發佈於 2009 年。它完全利用了 Java5 中的改進,併為 JEE6 提供了支持。Spring 4.0發佈於 2013 年。這是第一個完全支持 JAVA8 的版本。

什麼是 Spring Framework?

  • Spring 是一個開源應用框架,旨在降低應用程序開發的複雜度。
  • 它是輕量級、鬆散耦合的。
  • 它具有分層體系結構,允許用戶選擇組件,同時還為 J2EE 應用程序開發提供了一個有凝聚力的框架。
  • 它可以集成其他框架,如 Structs、Hibernate、EJB 等,所以又稱為框架的框架。

列舉 Spring Framework 的優點

  • 由於 Spring Frameworks 的分層架構,用戶可以自由選擇自己需要的組件。
  • Spring Framework 支持 POJO(Plain Old Java Object) 編程,從而具備持續集成和可測試性。
  • 由於依賴注入和控制反轉,JDBC 得以簡化。
  • 它是開源免費的。

Spring Framework 有哪些不同的功能?

  • 輕量級- Spring 在代碼量和透明度方面都很輕便。
  • IOC- 控制反轉
  • AOP- 面向切面編程可以將應用業務邏輯和系統服務分離,以實現高內聚。
  • 容器- Spring 負責創建和管理對象(Bean)的生命週期和配置。
  • MVC- 對 web 應用提供了高度可配置性,其他框架的集成也十分方便。
  • 事務管理- 提供了用於事務管理的通用抽象層。Spring 的事務支持也可用於容器較少的環境。
  • JDBC 異常- Spring 的 JDBC 抽象層提供了一個異常層次結構,簡化了錯誤處理策略。

Spring Framework 中有多少個模塊,它們分別是什麼?


面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻


  • Spring 核心容器– 該層基本上是 Spring Framework 的核心。它包含以下模塊:
  • Spring Core
  • Spring Bean
  • SpEL (Spring Expression Language)
  • Spring Context
  • 數據訪問/集成– 該層提供與數據庫交互的支持。它包含以下模塊:
  • JDBC (Java DataBase Connectivity)
  • ORM (Object Relational Mapping)
  • OXM (Object XML Mappers)
  • JMS (Java Messaging Service)
  • Transaction
  • Web– 該層提供了創建 Web 應用程序的支持。它包含以下模塊:
  • Web
  • Web – Servlet
  • Web – Socket
  • Web – Portlet
  • AOP– 該層支持面向切面編程
  • Instrumentation– 該層為類檢測和類加載器實現提供支持。
  • Test– 該層為使用 JUnit 和 TestNG 進行測試提供支持。
  • 幾個雜項模塊:
  • Messaging – 該模塊為 STOMP 提供支持。它還支持註解編程模型,該模型用於從 WebSocket 客戶端路由和處理 * STOMP 消息。
  • Aspects – 該模塊為與 AspectJ 的集成提供支持。

什麼是 Spring 配置文件?

Spring 配置文件是 XML 文件。該文件主要包含類信息。它描述了這些類是如何配置以及相互引入的。但是,XML 配置文件冗長且更加乾淨。如果沒有正確規劃和編寫,那麼在大項目中管理變得非常困難。

Spring 應用程序有哪些不同組件?

Spring 應用一般有以下組件:

  • 接口- 定義功能。
  • Bean 類- 它包含屬性,setter 和 getter 方法,函數等。
  • Spring 面向切面編程(AOP)- 提供面向切面編程的功能。
  • Bean 配置文件- 包含類的信息以及如何配置它們。
  • 用戶程序- 它使用接口。

使用 Spring 有哪些方式?

使用 Spring 有以下方式:

  • 作為一個成熟的 Spring Web 應用程序。
  • 作為第三方 Web 框架,使用 Spring Frameworks 中間層。
  • 用於遠程使用。
  • 作為企業級 Java Bean,它可以包裝現有的 POJO(Plain Old Java Objects)。

依賴注入(Ioc)

什麼是 Spring IOC 容器?

Spring 框架的核心是 Spring 容器。容器創建對象,將它們裝配在一起,配置它們並管理它們的完整生命週期。Spring 容器使用依賴注入來管理組成應用程序的組件。容器通過讀取提供的配置元數據來接收對象進行實例化,配置和組裝的指令。該元數據可以通過 XML,Java 註解或 Java 代碼提供。


面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

什麼是依賴注入?


在依賴注入中,您不必創建對象,但必須描述如何創建它們。您不是直接在代碼中將組件和服務連接在一起,而是描述配置文件中哪些組件需要哪些服務。由 IoC 容器將它們裝配在一起。

可以通過多少種方式完成依賴注入?

通常,依賴注入可以通過三種方式完成,即:

  • 構造函數注入
  • setter 注入
  • 接口注入 在 Spring Framework 中,僅使用構造函數和 setter 注入。

區分構造函數注入和 setter 注入。

構造函數注入setter 注入沒有部分注入有部分注入不會覆蓋 setter 屬性會覆蓋 setter 屬性任意修改都會創建一個新實例任意修改不會創建一個新實例適用於設置很多屬性適用於設置少量屬性

spring 中有多少種 IOC 容器?

  • BeanFactory - BeanFactory 就像一個包含 bean 集合的工廠類。它會在客戶端要求時實例化 bean。
  • ApplicationContext - ApplicationContext 接口擴展了 BeanFactory 接口。它在 BeanFactory 基礎上提供了一些額外的功能。

區分 BeanFactory 和 ApplicationContext。

BeanFactoryApplicationContext它使用懶加載它使用即時加載它使用語法顯式提供資源對象它自己創建和管理資源對象不支持國際化支持國際化不支持基於依賴的註解支持基於依賴的註解

列舉 IoC 的一些好處。

IoC 的一些好處是:

  • 它將最小化應用程序中的代碼量。
  • 它將使您的應用程序易於測試,因為它不需要單元測試用例中的任何單例或 JNDI 查找機制。
  • 它以最小的影響和最少的侵入機制促進松耦合。
  • 它支持即時的實例化和延遲加載服務。

Spring IoC 的實現機制。

Spring 中的 IoC 的實現原理就是工廠模式加反射機制。

示例:

<code>interface Fruit {
 public abstract void eat();
}
class Apple implements Fruit {
 public void eat(){
 System.out.println("Apple");
 }
}
class Orange implements Fruit {
 public void eat(){
 System.out.println("Orange");
 }
}
class Factory {
 public static Fruit getInstance(String ClassName) {
 Fruit f=null;
 try {
 f=(Fruit)Class.forName(ClassName).newInstance();
 } catch (Exception e) {
 e.printStackTrace();
 }
 return f;
 }
}
class Client {
 public static void main(String[] a) {
 Fruit f=Factory.getInstance("io.github.dunwu.spring.Apple");
 if(f!=null){
 f.eat();
 }
 }
}
複製代碼/<code>

Beans

什麼是 spring bean?

  • 它們是構成用戶應用程序主幹的對象。
  • Bean 由 Spring IoC 容器管理。
  • 它們由 Spring IoC 容器實例化,配置,裝配和管理。
  • Bean 是基於用戶提供給容器的配置元數據創建。

spring 提供了哪些配置方式?

  • 基於 xml 配置

bean 所需的依賴項和服務在 XML 格式的配置文件中指定。這些配置文件通常包含許多 bean 定義和特定於應用程序的配置選項。它們通常以 bean 標籤開頭。例如:

<code>
 

複製代碼/<code>
  • 基於註解配置

您可以通過在相關的類,方法或字段聲明上使用註解,將 bean 配置為組件類本身,而不是使用 XML 來描述 bean 裝配。默認情況下,Spring 容器中未打開註解裝配。因此,您需要在使用它之前在 Spring 配置文件中啟用它。例如:

<code>

 

複製代碼/<code>
  • 基於 Java API 配置

Spring 的 Java 配置是通過使用 @Bean 和 @Configuration 來實現。

  1. @Bean 註解扮演與 元素相同的角色。
  2. @Configuration 類允許通過簡單地調用同一個類中的其他 @Bean 方法來定義 bean 間依賴關係。

例如:

<code>@Configuration
public class StudentConfig {
 @Bean
 public StudentBean myStudent() {
 return new StudentBean();
 }
}
複製代碼/<code>

spring 支持集中 bean scope?

Spring bean 支持 5 種 scope:

  • Singleton- 每個 Spring IoC 容器僅有一個單實例。
  • Prototype- 每次請求都會產生一個新的實例。
  • Request- 每一次 HTTP 請求都會產生一個新的實例,並且該 bean 僅在當前 HTTP 請求內有效。
  • Session- 每一次 HTTP 請求都會產生一個新的 bean,同時該 bean 僅在當前 HTTP session 內有效。
  • Global-session- 類似於標準的 HTTP Session 作用域,不過它僅僅在基於 portlet 的 web 應用中才有意義。Portlet 規範定義了全局 Session 的概念,它被所有構成某個 portlet web 應用的各種不同的 portlet 所共享。在 global session 作用域中定義的 bean 被限定於全局 portlet Session 的生命週期範圍內。如果你在 web 中使用 global session 作用域來標識 bean,那麼 web 會自動當成 session 類型來使用。

僅當用戶使用支持 Web 的 ApplicationContext 時,最後三個才可用。

spring bean 容器的生命週期是什麼樣的?

spring bean 容器的生命週期流程如下:

  1. Spring 容器根據配置中的 bean 定義中實例化 bean。
  2. Spring 使用依賴注入填充所有屬性,如 bean 中所定義的配置。
  3. 如果 bean 實現 BeanNameAware 接口,則工廠通過傳遞 bean 的 ID 來調用 setBeanName()。
  4. 如果 bean 實現 BeanFactoryAware 接口,工廠通過傳遞自身的實例來調用 setBeanFactory()。
  5. 如果存在與 bean 關聯的任何 BeanPostProcessors,則調用 preProcessBeforeInitialization() 方法。
  6. 如果為 bean 指定了 init 方法( 的 init-method 屬性),那麼將調用它。
  7. 最後,如果存在與 bean 關聯的任何 BeanPostProcessors,則將調用 postProcessAfterInitialization() 方法。
  8. 如果 bean 實現 DisposableBean 接口,當 spring 容器關閉時,會調用 destory()。
  9. 如果為 bean 指定了 destroy 方法( 的 destroy-method 屬性),那麼將調用它。


面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻


什麼是 spring 的內部 bean?

只有將 bean 用作另一個 bean 的屬性時,才能將 bean 聲明為內部 bean。為了定義 bean,Spring 的基於 XML 的配置元數據在 或 中提供了 元素的使用。內部 bean 總是匿名的,它們總是作為原型。

例如,假設我們有一個 Student 類,其中引用了 Person 類。這裡我們將只創建一個 Person 類實例並在 Student 中使用它。

Student.java

<code>public class Student {
 private Person person;
 //Setters and Getters
}
public class Person {
 private String name;
 private String address;
 //Setters and Getters
}
複製代碼/<code>

bean.xml

<code>
 
  
 
 
 
 
 

複製代碼/<code>

什麼是 spring 裝配

當 bean 在 Spring 容器中組合在一起時,它被稱為裝配或 bean 裝配。Spring 容器需要知道需要什麼 bean 以及容器應該如何使用依賴注入來將 bean 綁定在一起,同時裝配 bean。

自動裝配有哪些方式?

Spring 容器能夠自動裝配 bean。也就是說,可以通過檢查 BeanFactory 的內容讓 Spring 自動解析 bean 的協作者。

自動裝配的不同模式:

  • no - 這是默認設置,表示沒有自動裝配。應使用顯式 bean 引用進行裝配。
  • byName - 它根據 bean 的名稱注入對象依賴項。它匹配並裝配其屬性與 XML 文件中由相同名稱定義的 bean。
  • byType - 它根據類型注入對象依賴項。如果屬性的類型與 XML 文件中的一個 bean 名稱匹配,則匹配並裝配屬性。
  • 構造函數 - 它通過調用類的構造函數來注入依賴項。它有大量的參數。
  • autodetect - 首先容器嘗試通過構造函數使用 autowire 裝配,如果不能,則嘗試通過 byType 自動裝配。

自動裝配有什麼侷限?

  • 覆蓋的可能性 - 您始終可以使用 和 設置指定依賴項,這將覆蓋自動裝配。
  • 基本元數據類型 - 簡單屬性(如原數據類型,字符串和類)無法自動裝配。
  • 令人困惑的性質 - 總是喜歡使用明確的裝配,因為自動裝配不太精確。

註解

你用過哪些重要的 Spring 註解?

  • @Controller - 用於 Spring MVC 項目中的控制器類。
  • @Service - 用於服務類。
  • @RequestMapping - 用於在控制器處理程序方法中配置 URI 映射。
  • @ResponseBody - 用於發送 Object 作為響應,通常用於發送 XML 或 JSON 數據作為響應。
  • @PathVariable - 用於將動態值從 URI 映射到處理程序方法參數。
  • @Autowired - 用於在 spring bean 中自動裝配依賴項。
  • @Qualifier - 使用 @Autowired 註解,以避免在存在多個 bean 類型實例時出現混淆。
  • @Scope- 用於配置 spring bean 的範圍。
  • @Configuration,@ComponentScan和@Bean- 用於基於 java 的配置。
  • @Aspect,@Before,@After,@Around,@Pointcut- 用於切面編程(AOP)。

如何在 spring 中啟動註解裝配?

默認情況下,Spring 容器中未打開註解裝配。因此,要使用基於註解裝配,我們必須通過配置 元素在 Spring 配置文件中啟用它。

@Component, @Controller, @Repository, @Service 有何區別?

  • @Component:這將 java 類標記為 bean。它是任何 Spring 管理組件的通用構造型。spring * 的組件掃描機制現在可以將其拾取並將其拉入應用程序環境中。
  • @Controller:這將一個類標記為 Spring Web MVC 控制器。標有它的 Bean 會自動導入到 IoC 容器中。
  • @Service:此註解是組件註解的特化。它不會對 @Component 註解提供任何其他行為。您可以在服務層類中使用 @Service 而不是 @Component,因為它以更好的方式指定了意圖。
  • @Repository:這個註解是具有類似用途和功能的 @Component 註解的特化。它為 DAO 提供了額外的好處。它將 DAO 導入 IoC 容器,並使未經檢查的異常有資格轉換為 Spring DataAccessException。

@Required 註解有什麼用?

@Required 應用於 bean 屬性 setter 方法。此註解僅指示必須在配置時使用 bean 定義中的顯式屬性值或使用自動裝配填充受影響的 bean 屬性。如果尚未填充受影響的 bean 屬性,則容器將拋出 BeanInitializationException。

示例:

<code>public class Employee {
 private String name;
 @Required
 public void setName(String name){
 this.name=name;
 }
 public string getName(){
 return name;
 }
}
複製代碼/<code>

@Autowired 註解有什麼用?

@Autowired 可以更準確地控制應該在何處以及如何進行自動裝配。此註解用於在 setter 方法,構造函數,具有任意名稱或多個參數的屬性或方法上自動裝配 bean。默認情況下,它是類型驅動的注入。

<code>public class Employee {
 private String name;
 @Autowired
 public void setName(String name) {
 this.name=name;
 }
 public string getName(){
 return name;
 }
}
複製代碼/<code>

@Qualifier 註解有什麼用?

當您創建多個相同類型的 bean 並希望僅使用屬性裝配其中一個 bean 時,您可以使用@Qualifier 註解和 @Autowired 通過指定應該裝配哪個確切的 bean 來消除歧義。

例如,這裡我們分別有兩個類,Employee 和 EmpAccount。在 EmpAccount 中,使用@Qualifier 指定了必須裝配 id 為 emp1 的 bean。

Employee.java

<code>public class Employee {
 private String name;
 @Autowired
 public void setName(String name) {
 this.name=name;
 }
 public string getName() {
 return name;
 }
}
複製代碼/<code>

EmpAccount.java

<code>public class EmpAccount {
 private Employee emp;
 @Autowired
 @Qualifier(emp1)
 public void showName() {
 System.out.println(“Employee name : ”+emp.getName);
 }
}
複製代碼/<code>

@RequestMapping 註解有什麼用?

@RequestMapping 註解用於將特定HTTP請求方法映射到將處理相應請求的控制器中的特定類/方法。此註解可應用於兩個級別:

  • 類級別:映射請求的 URL
  • 方法級別:映射 URL 以及 HTTP 請求方法

由於篇幅限制,小編在這裡就不對MySQL和Spring做過多的介紹了,在這裡只展示了部分內容的目錄和截圖,剩下的小編都整理在了技術文檔裡面,大家如果需要的話都可以分享給大家,希望所有的程序員都能夠學習起來,最終實現他們的大廠夢!

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

面試螞蟻P7,被Spring和MySQL打敗了,狂刷200遍後二面終入職螞蟻

獲取方式:轉發+評論+ 關注我,最後私信小編“面試” 來得到獲取方式吧~~

感謝大家的支持與信任,希望能夠幫助到大家的學習。


分享到:


相關文章: