Spring 框架中的單例 Beans 是線程安全的么?
Spring框架并沒有對單例bean進行任何多線程的封裝處理。關于單例bean的線程安全和并發問題需要開發者自行去搞定。但實際上,大部分的Spring bean并沒有可變的狀態,所以在某種程度上說Spring的單例bean時線程安全的。如果你的bean有多種狀態的話,比如view model,就需要自行保證線程安全啦。
最淺顯的解決辦法就是將多態bean的作用域由singleton變更為prototype。
請解釋 Spring Bean的自動裝配?
Spring支持IOC,自動裝配不用類實例化,直接從bean容器中取。
1. 配置在xml中
<bean id="employeeDAO" class="com.guor.EmployeeDAOImpl" autowire="byName" />
2. @Autowired實現自動裝配
如何開啟基于注解的自動裝配?
要使用 @Autowired,需要注冊 AutowiredAnnotationBeanPostProcessor,可以有以下兩種方式來實現:
引入配置文件中的<bean>下引入 <context:annotation-config>
<beans>
<context:annotation-config />
</beans>
在bean配置文件中直接引入AutowiredAnnotationBeanPostProcessor
<beans>
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>
</beans>
什么是 Spring Batch?
spring batch是一個輕量級的、完善的批處理框架,它主要的目的在于幫助企業建立健壯、高效的批處理應用。
spring batch是Spring的一個子項目,它使用java語言并基于spring框架作為基礎開發,使得已經使用Spring框架的開發者或者是企業可以更加容易訪問和利用企業服務。
spring batch提供了大量可重用的組件,包括了日志、追蹤、事務、任務作業統計、任務重啟、跳過、重復、資源管理。
對大數據量和高性能的批處理任務,spring batch同樣提供了高級功能和特性來支持。
例如:分區功能、遠程功能。
總的來說,spring batch可以支持簡單的、復雜的和大數據量的批處理作業。
Spring Batch業務場景
●周期性的提交批處理
●把一個任務并行處理
●消息驅動應用分級處理
●大規模并行批處理
●手工或調度使任務失敗之后重新啟動
●有依賴步驟的順序執行(使用工作流驅動擴展)
●處理時跳過部分記錄
●成批事務:為小批量的或有的存儲過程/腳本的場景使用。
請舉例解釋@Required 與@Qualifier注解?
1. @Required注解
@Required注解應用于bean屬性的setter方法,它表明影響的bean屬性在配置時必須放在XML配置文件中。
2. @Qualifier 注解?
如果在xml中定義了一種類型的多個bean,同時在java注解中又想把其中一個bean對象作為屬性,那么此時可以使用@Qualifier加@Autowired來達到這一目的,若不加@Qualifier這個注解,在運行時會出現“ No qualifying bean of type [com.tutorialspoint.Student] is defined: expected single matching bean but found 2: student1,student2”這個異常。
更多關于“Java培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓經驗,課程大綱更科學更專業,有針對零基礎的就業班,有針對想提升技術的好程序員班,高品質課程助力你實現java程序員夢想。