Spring framework模塊與註解

1、Spring中有用到哪些設計模式?
工廠模式、模版模式:在各種BeanFactory以及ApplicationContext創建中都用到;
代理模式:在AOP實現中用到了JDK的動態代理;
策略模式:加載資源文件的方式,使用了不同的方法,ClassPathResourece,FileSystemResource,ServletContextResource,UrlResource但他們都有共同的接口Resource;在Aop的實現中,採用了兩種不同的方式,JDK動態代理和CGLIB代理;
單例模式:創建bean時。
2、SSM和SSH框架的區別?
Spring基於方法、核心控制器Servlet、通過方法的參數進行接收;
Struts2基於對象、核心控制器Filter,自身提供多種參數接受。
3、Spring MVC和Spring Boot框架的區別?
Spring boot是習慣優於配置,可以簡化spring的配置流程

七大模塊:
1、Spring core(核心容器)
核心容器提供spring框架的基礎功能。Spring以bean的方式組織和管理Java應用中的各個組件及其關係。Spring使用BeanFactory來產生和管理Bean,它是工廠模式的實現(採用工廠設計模式)。BeanFactory使用控制反轉(IoC)模式將應用的配置和依賴性規範與實際的應用程序代碼分開,BeanFactory使用依賴注入的方式提供給組件依賴(由容器去實現後注入進來)。主要實現控制反轉IoC和依賴注入DI、Bean配置以及加載。支持3種依賴注入的方式:
(1)屬性注入
(2)構造器注入
(3)工廠方法注入(很少使用,不推薦)
2、Spring AOP
Spring AOP 模塊爲基於 Spring 的應用程序中的對象提供了事務管理服務。通過使用 Spring AOP,不用依賴 EJB 組件,就可以將聲明性事務管理集成到應用程序中。AOP把一個業務流程分成幾部分:權限檢查、業務處理、日誌記錄;每個部分單獨處理,然後把它們組裝成完整的業務流程。每個部分被稱爲切面或關注點。
AOP的實現原理爲動態代理技術,一共有兩種代理模式:
(1)ProxyFactoryBean代理工廠對象:Spring內置代理類,引入一箇中間層,能夠創建不同類型的對象,利用它可以實現任何形式的AOP。
(2)TransactionProxyFactoryBean事務代理工廠對象:常用在數據庫編程上,Spring利用TransactionProxyFactoryBean對事務進行管理,在指定方法前利用AOP連接數據庫並開啓事務,然後在指定方法返回後利用AOP提交事務並斷開數據庫。
3、Spring context:Spring上下文
Spring上下文是一個配置文件,向Spring框架提供上下文信息。Spring上下文包括企業服務,如JNDI、EJB、電子郵件、國際化、校驗和調度功能。提供框架式Bean訪問方式,其他程序可以通過Context訪問Spring的Bean資源。
創建spring mvc項目,引入Spring context即可
4、Spring DAO
DAO模塊主要目的是將持久層相關問題與一般的的業務規則和工作流隔離開來。Spring 中的DAO提供一致的方式訪問數據庫,不管採用何種持久化技術,Spring都提供一致的編程模型。Spring還對不同的持久層技術提供一致的DAO方式的異常層次結構。Spring的DAO模塊對JDBC進行了再封裝,隱藏了Connection、Statement、ResultSet等JDBC API,使DAO模塊直接繼承JdbcDaoSupport類。
5、Spring ORM(對象關係映射模塊)
Spring 與所有的主要的ORM框架都集成的很好,包括hibernate、JDO實現、TopLink和IBatis SQL Map等。Spring爲所有的這些框架提供了模板之類的輔助類,達成了一致的編程風格。Spring的ORM模塊對ORM框架如Hibernate等進行了封裝,Spring能夠管理、維護Hibernate,使用時可直接繼承HibernateDaoSupport類,該類內置一個HibernateTemplate。Hibernate的配置也轉移到Spring配置文件中。
(注:ORM是通過使用描述對象和數據庫之間映射的元數據,ORM框架採用元數據來描述對象–關係映射細節,元數據一般採用xml格式,並且存放在專門的對象–映射文件中)
6、Spring Web模塊
Web模塊建立在應用程序上下文模塊之上,爲基於Web的應用程序提供了上下文。Web層使用Web層框架,可選的,可以是Spring自己的MVC框架,或者提供的Web框架,如Struts、Webwork、tapestry和jsf。Web模塊用於整合Web框架,將Web框架也納入Spring的管理之中。如Spring提供繼承方式與代理方式整合Struts,繼承方式不需要更改任何配置文件,只把Action繼承自ActionSupport即可,但會對Spring產生依賴。代理方式需要在struts-config.xml中配置,由Spring全盤代理,因此可以使用Spring的各種資源、攔截器等。
7、Spring MVC
MVC模式是一個設計模式,M是指數據模型,V是指用戶界面,C則是控制器。目的是將M和V的實現代碼分離,從而使同一個程序可以應用於不同的表現形式。工作流程圖:
在這裏插入圖片描述
常用註解:
@Controller
Controller負責處理由DispatcherServlet分發的請求,把用戶請求的數據經過業務處理層處理後封裝成一個Model ,然後再把該Model 返回給對應的View 進行展示。
@RequestMapping 註解的方法處理請求的處理器。
【1】value,method
@RequestMapping(value = “/manage/activity/enroll”) value: 指定請求的實際地址,指定的地址可以是URI Template 模式
@RequestMapping(value = “index”, method = RequestMethod.GET) method:指定請求的method類型GET、POST、PUT、DELETE等
【2】consumes,produces
consumes:指定處理請求的提交內容類型(Content-Type),例如application/json, text/html
produces:指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回
【3】params,headers
params:指定request中必須包含某些參數值是,才讓該方法處理
headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求
@RequestParam獲取請求參數
@PathVariable用於將請求URL中的模板變量映射到功能處理方法的參數上,即取出uri模板中的變量作爲參數
@ResponseBody返回的對象
@Resource和@Autowired都是做bean的注入時使用,兩者都可以寫在字段、setter方法上。若兩者都寫在字段上,那麼就不需要再寫setter方法。@Resource並不是Spring的註解(包是javax.annotation.Resource),Spring支持該註解的注入,默認按照ByName自動注入;@Autowired只按照byType注入。
@Component
相當於通用的註解,當不知道一些類歸到哪個層時使用,但是不建議。
@Repository
用於註解dao層,在daoImpl類上面註解。
@ModelAttribute和 @SessionAttributes
可以把這個@ModelAttribute特性,應用在BaseController當中,所有的Controller繼承BaseController,即可實現在調用Controller時,先執行@ModelAttribute方法。 @SessionAttributes即將值放到session作用域中,寫在class上面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章