任何由Spring IoC容器初始化的普通Java類都被稱為Spring Bean。我們使用spring應用程序上下文來獲取Spring Bean的實例。Spring IoC容器管理Spring Bean的作用域/作用域的生命周期,並將任何所需的依賴項註入Bean。
春豆的不同範圍:
對於任何Java應用程序,都有兩種不同的作用域,稱為單例和原型。
主要有三種不同的作用域(或作用域),即request、session和global-session,專門針對基於Spring的Java Web應用。
Singleton是任何bean的默認範圍。這意味著每個IoC容器將創建壹個bean實例。因此,單例bean不是線程安全。
要設置spring bean的範圍,我們可以使用標記中的scope屬性。@scope用於基於註釋的DI。
Spring容器是Spring框架的核心。容器將創建對象,將它們連接在壹起,配置它們,並管理它們從創建到銷毀的完整生命周期。Spring容器使用依賴註入(DI)來管理組成應用程序的組件。
有兩種不同類型的容器:
BeanFactory容器:這是Spring容器的核心。org . spring framework . bean . factory . bean factory是壹個接口,充當IoC容器,實例化、配置和管理許多bean。應用示例如下:
ApplicationContext容器:org . spring framework . context . applicationcontext的接口也作為IoC容器,但是application context接口是建立在Beafactory接口上,提供Beafactory的壹些附加功能。比如與Spring的AOP簡單集成,消息資源處理(針對I18N),事件傳播,Web應用的應用層特定上下文(比如WebApplicationContext)。所以用ApplicationContext比用BeanFactory好。示例代碼如下:
對於基於註釋的依賴註入,使用@Autowired註釋。用@ component/@ service/@ repository標記的類可以註入到用@Autowired標記的屬性中。
@Autowired適用於:
1)基於構造函數和設置函數的不同
2)context:annotation-config和context:component-scan的區別。
3)@組件、@控制器、@存儲庫& amp@Service註釋之間的區別
如果壹個類用@ component/@ controller/@ service/@ repository註釋標記,Spring DI容器可以在組件掃描機制中識別該類。但是,對於服務層類使用@Service是壹個好主意,spring mvc web控制器中應該使用@Controller。@Repository用於將DAO導入DI容器。此外,任何未檢查的異常都將被轉換為Spring DataAccessException。
4)視圖解析器和多解析器
ViewResolver用於按名稱解析視圖。該接口由InternalResourceViewResolver實現;
MultipartResolver用於處理web應用程序中的文件上傳。
5)在5)Spring MVC中驗證
org . spring framework . validation . validator接口支持spring MVC驗證。驗證表單的壹些實用方法是ValidationUtils類中的rejectivefeminity()和rejectivefeminity()。例子如下:
在Spring MVC中驗證表單的另壹種方法是:
HandlerInterceptor接口充當spring MVC攔截器。它在服務請求之前和之後進行攔截。如果實現HandlerInterceptor接口,preHandle()、postHandle()和afterCompletion()是要重寫的方法。但是,為了避免覆蓋,可以使用HandlerInterceptorAdapter類。
實現ServletContextAware和ServletConfigAware接口,並涵蓋以下方法:
數據庫事務是壹組被視為相關工作單元的操作。事務的主要原則是在失敗時提交所有操作或回滾所有操作。當在事務中提交數據時,我們需要確保事務協議/屬性稱為ACID(原子性-壹致性-隔離性-持久性):
全球交易與本地交易:
骯臟閱讀、幻影閱讀和不可重復閱讀;
隔離和傳輸:
在老版本的spring和hibernate集成中,需要用到HibernateDAOSupport和HibernateTemplate。但是,不建議在較新版本的Spring中使用這兩個類(此處僅供理解)。
通常我們從HibernateDAOSupport擴展我們的DAO類,getHibernateTemplate()方法將可用於Hibernate會話中的CRUD操作。由於這不是推薦的方法,我們將SessionFactory註入到DAO中。以下代碼片段將為您提供壹些關於HibernateDAOSupport和HibernateTemplate的想法:
DAO是壹種最小化應用程序和後端之間耦合的設計模式;
ORM處理如何將對象映射到對象關系數據庫,從而減少數據庫和應用程序之間的耦合。
如果妳在沒有DAO的情況下使用ORM,妳的應用會變得依賴ORM,所以很難從壹個ORM(比如Hibernate)遷移到另壹個ORM(比如NoSQL)。
Spring DAO是使用@Repository註釋實現的。Spring repository擴展了JPARepository,並傳遞JPA實體及其主鍵。
最後,這裏簡單介紹壹下Spring框架的相關概念。希望這能給妳壹個進入和深入Spring技術棧的簡單入口,不要被Spring技術生態嚇倒(Spring現在已經成為壹個家喻戶曉的軟件開發技術大桶,應有盡有)——妳會用毅力取得巨大的成功!