spring面試題整理
1.什麼是springIOC
控制反轉 他是一種設計思想。把所有寫好的bean交給IOC容器來管理,降低了耦合度
2.什麼是DI
依賴注入
依賴:一個類使用了另一個類的物件,這個類就依賴於另一個類
依賴注入:將另一個類的物件通過spring特有的方式放到這個類中,供這個類使用,這就是依賴注入
3.springAOP
面向切面程式設計,確保了Spring和其他AOP框架的共通性。
關注點在於切面 實現以解決特定業務問題的方法
橫切關注點是貫穿整個應用程式的關注點,比如日誌
他有五中不同型別的通知 :
1.前置通知(使用@Before
註解使用這個Advice)
2.返回之後的通知(過@AfterReturning
關注使用它)
3.丟擲後執行的通知(通用@AfterThrowing
註解來使用)
4.後置通知(通過@After
註解使用)
5.圍繞通知(通過@Around
註解使用)
提到AOP就必須要提到代理:
1.靜態代理:在程式執行前就已經存在(優點:方便增加功能,擴充套件業務邏輯。缺點:增加程式碼的複雜性,不方便維護。)
2.動態代理:運用反射機制動態建立而成
4.spring中的bean是否是執行緒安全?
spring中的bean是ioc中獲取的 ioc中的bean是通過掃描配置檔案,讀取className,通過反射建立而來的。所以說執行緒是否安全取決於自己寫出的bean是否是執行緒安全的
5.spring中的bean如何被回收?
GC回收 在物件不可達的時候就會被回收(在沒有被引用的時候就會被回收);但是ioc中的bean預設是單例,他不會被回收
6.spring中的註解
@Configuration:與在xml中配置bean意義是一樣的
@Value
@PostConstruct:初始化bean
@PreDestory:銷燬bean
建立物件的註解:
@Controller
@Service
@Responsity
@Component
當出現這些註解說明是交給IOC容器管理的
@Scope:spring預設是單例的 那麼如果想要建立多例 spring提供了一個@Scope註解,該註解決定了是建立多例還是單例
注入的註解
@AutoWrite
@Resource
7.Spring框架支援哪些作用域
singleton(單例) :bean在每個Springioc容器中只有一個例項。
prototype:一個bean的定義可以有多個例項。
request:每次http請求都會建立一個bean,該作用域僅在基於web的SpringApplicationContext情形下有效。
session:在一個HTTPSession中,一個bean定義對應一個例項。該作用域僅在基於web的SpringApplicationContext情形下有效。
注:Springbean的作用域是singleton.
8.spring支援的事務
程式設計式事務:靈活性高,難維護
申明式事務:業務程式碼和事務管理分離,你只需用註解和XML配置來管理事務