spring事務什么時候會失效
1:發生自調用,類里面使用this調用本類的方法()此時這個this對象不是代理類,而是UserService對象本身
2:方法不是public
3:數據庫不支持事務
4:沒有被spring管理
5:異常被吃掉,事務不會回滾或者拋出的異常沒有被定義,默認為RuntimeException
什么是bean的自動裝配,有哪些方式
開啟自動裝配,在xml配置文件<bean>定義autowire屬性
<bean id="cutomer" class="com.xxx.xxx.Customer" autowire=""/>
autowire屬性有五種裝配的方式:
no-默認情況下,自動裝配是通過ref屬性手動設定的
byName根據類的屬性名進行自動裝配
Cutomer的屬性名稱是person,spring會將bean id為person的bean通過setter方法進行自動裝配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byName"/>
<bean id="person" class="com.xxx.xxx.Person" />
byType根據bean的類型進行自動裝配
Cutomer的屬性名稱是person,spring會將Person類型通過setter方法進行自動裝配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="byType"/>
<bean id="person" class="com.xxx.xxx.Person" />
constructor-類似byType,不過是應用于構造器的參數,如果一個bean與構造器參數的類型相同則進行手動裝配,否則導致異常
Cutomer的屬性名稱是person,spring會將Person類型通過構造方法進行自動裝配
<bean id="cutomer" class="com.xxx.xxx.Cutomer" autowire="construtor"/>
<bean id="person" class="com.xxx.xxx.Person" />
autodetect-如果有默認的構造器,則通過constructor方式進行自動裝配,否則使用byType方式進行自動裝配
@Autowired自動裝配bean,可以在字段,setter方法,構造函數上使用
Sprin Spring MVC,Spring Boot有什么區別
spring是一個IOC容器,用來管理Bean,使用依賴注入實現控制反轉,可以很方便的整合各種框架,提供AOP機制,方便將不同類不同方法中的共同處理抽取成切面,自動注入給方法執行
springmvc是spring對web框架的一個解決方案,提供了一個總的前端控制器Servlet,用來接受請求,然后定義一套路由策略,及適配執行handle,將handle結果使用視圖解析式技術生成視圖展現給前端
springboot是spring提供的一個快速開發工具包,讓程序員能更方便,更快速的開發spring+springmvc應用,簡化了配置,整合了一系列的解決方案
SpringMVC的工作流程
1:用戶發送請求至前端控制器DispatcherServlet
2:DispatcherServlet收到請求調用HandlerMapping處理器映射器
3:處理器映射器找到具體的處理器,生成處理器及處理器攔截器一并返回給DispatcherServlet
4:DispatcherServlet調用HandlerAdapter處理器適配器
5:HandlerAdater經過適配調用具體的處理器(controller)
6:Controller執行完成返回ModelAndView
7:HandlerAdapter將controller執行結果ModelAndView返回給DispatcherServlet
8:Dispatcher Servlet將ModelAndView傳給ViewReslover視圖解析器
9:ViewReslove解析后返回具體View
10:DispatcherServlet 根據View進銷存渲染視圖
11:DIspatcherServlet響應用戶
Spring MVC的主要組件
1、HandlerMapping
處理器映射器,根據用戶請求的資源uri來查找Handler
2、HandlerAdapter
適配器,讓固定的Servlet處理方法調用靈活的Handler處理
3、HandlerExceptionResolver
根據異常設置ModelAndView,之后再交給render方法渲染
4、VIewResolver
用來將String類型的視圖名和Locale解析為View類型的視圖
5、RequestToViewNameTranslator
從request獲取ViewName
6、LocaleResolver
用于從request解析出Locale
7、ThemeResolver
用于解析主題,主題對應properties文件
8、MuitipartResolver
用于處理上傳請求,將普通的request包裝成MuitpartHttpServletRequest
9、FlashMapManager
用來管理FaashMap