Q1、什麼是Spring Framework?
Spring是Java企業版應用程序開發中使用最廣泛的框架.Spring的核心功能可用於開發任何Java應用程序。
我們可以使用它的擴展來在Java EE平臺上構建各種Web應用程序,或者我們可以在簡單的獨立應用程序中使用它的依賴注入。
Q2、使用Spring有什麼好處?
Spring旨在簡化Java EE開發。以下是使用它的優點:
- 輕量級: 在開發中使用框架開銷很小
- 控制反轉(IoC): Spring容器負責處理各種對象的依賴關係,而不是創建或查找依賴對象
- 面向切面編程(AOP): Spring支持AOP將業務邏輯與系統服務分開
- IoC容器: 它管理Spring Bean生命週期和項目特定配置
- MVC框架: 用於創建Web應用程序或RESTful Web服務,能夠返回XML / JSON響應
- 事務管理: 通過使用Java註釋或Spring Bean XML配置文件減少JDBC操作
- 異常處理: Spring提供了一個方便的API,用於將特定於技術的異常轉換爲未經檢查的異常
Q3、你知道哪些Spring子項目?簡要描述一下。
- Core - 提供框架基本部分的關鍵模塊,如IoC或DI
- JDBC - 此模塊啓用JDBC抽象層,無需對特定供應商數據庫執行JDBC編碼
- ORM集成 - 爲流行的對象關係映射API提供集成層,例如JPA,JDO和Hibernate
- Web - 面向Web的集成模塊,提供多部分文件上傳,Servlet偵聽器和麪向Web的應用程序上下文功能
- MVC框架 - 實現模型視圖控制器設計模式的Web模塊
- AOP模塊 - 面向切面的編程實現,允許定義乾淨的方法 - 攔截器和切入點
Q4、什麼是依賴注入?
依賴注入是控制反轉(IoC)的一個方面,它是一個通用概念,表明您不是手動創建對象,而是描述應如何創建它們。如果需要,IoC容器將實例化所需的類。
Q5、我們如何在Spring中注入Bean?
存在一些不同的選擇:
- Setter注入
- 構造函數注入
- 變量注入
可以使用XML文件或註釋完成配置。
Q6、注入Bean的最佳方法是什麼?爲什麼?
建議的方法是使用構造函數參數用於強制依賴項,將setter用於可選依賴項。構造函數注入允許將值注入不可變字段並使測試更容易。
Q7、BeanFactory 和 ApplicationContext 的有什麼區別?
BeanFactory 是一個表示提供和管理bean實例的容器的接口。默認實現在調用 getBean() 時實例化bean 。
ApplicationContext 是一個接口,表示容納應用程序中所有信息,元數據和bean的容器。它還擴展了 BeanFactory 接口,但默認實現在應用程序啓動時立馬實例化bean。可以爲單個bean覆蓋此行爲。
Q8、什麼是Spring Bean?
Spring Bean是由Spring IoC容器初始化的Java對象。
Q9、Spring框架中的默認Bean範圍是什麼?
默認情況下,Spring Bean初始化爲單例 。
Q10、如何定義bean的範圍?
要設置Spring Bean的範圍,我們可以在XML配置文件中使用 Scope 註釋或“Scope”屬性。
有五個支持的範圍:
- singleton
- prototype
- request
- session
- global-session
Q11、單例Bean是線程安全的嗎?
不,單例bean不是線程安全的,因爲線程安全是關於執行的,而單例是一種專注於創建的設計模式。線程安全僅取決於bean實現本身。
Q12、SpringBean生命週期是什麼樣的?
首先,需要基於Java或XML bean定義來實例化Spring bean。可能還需要執行一些初始化以使其進入可用狀態。之後,當不再需要bean時,它將從IoC容器中刪除。
所有初始化方法的整個循環顯示在下圖上:
Q13、什麼是Spring Java註解配置?
這是以類型安全的方式配置基於Spring的應用程序的方法之一。它是基於XML的配置的替代方案。
Q14、我們可以在一個項目中擁有多個Spring配置文件嗎?
可以,在大型項目中,建議使用多個Spring配置以提高可維護性和模塊性。
您可以加載多個Java註解的配置:
@Configuration
@Import({MainConfig.class, SchedulerConfig.class})
public class AppConfig {
或者加載一個包含所有其他配置的XML文件:
ApplicationContext context = new ClassPathXmlApplicationContext("spring-all.xml");
在XML文件中你也可以包含其它配置文件:
<import resource="main.xml"/>
<import resource="scheduler.xml"/>
Q15、什麼是Spring Security?
Spring Security是Spring框架的一個獨立模塊,專注於在Java應用程序中提供身份驗證和授權方法。它還會處理大多數常見的安全漏洞,例如CSRF攻擊。
要在Web應用程序中使用Spring Security,您可以開始使用簡單的註解:@EnableWebSecurity。
Q16、什麼是Spring Boot?
Spring Boot是一個項目,它提供了一組預先配置的框架,以減少用戶的配置,以便您可以使用最少量的代碼啓動並運行Spring應用程序。
Q17、列舉一些Spring Framework中使用的設計模式?
- 單例模式: 單例範圍的bean
- 工廠模式: Bean工廠類
- 原型模式: 原型範圍的bean
- 適配器模式: Spring Web和Spring MVC
- 代理模式: 面向Spring Aspect的編程支持
- 模板方法模式: JdbcTemplate、HibernateTemplate 等。
- 前端控制器模式: Spring MVC DispatcherServlet
- 數據訪問對象: Spring DAO支持
- 模型視圖控制器: Spring MVC
“不積跬步,無以至千里”,希望未來的你能:有夢爲馬 隨處可棲!加油,少年!
關注公衆號:「Java 知己」,每天更新Java知識哦,期待你的到來!
- 發送「1024」,免費領取 30 本經典編程書籍。
- 發送「Group」,與 10 萬程序員一起進步。
- 發送「面試」,領取BATJ面試資料、面試視頻攻略。
- 發送「JavaEE 實戰」,領取《JavaEE 實戰》系列視頻教程。
- 發送「玩轉算法」,領取《玩轉算法》系列視頻教程。