更新時(shí)間:2021-11-25 11:12:17 來源:動(dòng)力節(jié)點(diǎn) 瀏覽955次
小編來給大家提供一些Java面試題中Spring部分答案,以供大家作為參考。
Spring是輕量級(jí)的面向切面和控制反轉(zhuǎn)的框架。初代版本為2002年發(fā)布的interface21,Spring框架是為了解決企業(yè)級(jí)應(yīng)用開發(fā)的復(fù)雜性的出現(xiàn)的,它可以幫助開發(fā)人員管理對(duì)象之間的關(guān)系。能實(shí)現(xiàn)模塊與模塊之間、類與類之間的解耦合,Spring是一個(gè)大雜燴,它集成其他許多框架,使其他框架能與spring結(jié)合搭配使用
(1)@Controller
在SpringMVC 中,控制器Controller 負(fù)責(zé)處理由DispatcherServlet 分發(fā)的請(qǐng)求,它把用戶請(qǐng)求的數(shù)據(jù)經(jīng)過業(yè)務(wù)bai處理層處理之后封裝成一個(gè)Model ,然后再把該Model 返回給對(duì)應(yīng)的View 進(jìn)行展示。在SpringMVC 中提供了一個(gè)非常簡便的定義Controller 的方法,你無需繼承特定的類或?qū)崿F(xiàn)特定的接口,只需使用@Controller 標(biāo)記一個(gè)類是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定義URL 請(qǐng)求和Controller 方法之間的映射,這樣的Controller 就能被外界訪問到。此外Controller 不會(huì)直接依賴于HttpServletRequest 和HttpServletResponse 等HttpServlet 對(duì)象,它們可以通過Controller 的方法參數(shù)靈活的獲取到。
@Controller 用于標(biāo)記在一個(gè)類上,使用它標(biāo)記的類就是一個(gè)SpringMVC Controller 對(duì)象。分發(fā)處理器將會(huì)掃描使用了該注解的類的方法,并檢測該方法是否使用了@RequestMapping 注解。@Controller 只是定義了一個(gè)控制器類,而使用@RequestMapping 注解的方法才是真正處理請(qǐng)求的處理器。單單使用@Controller 標(biāo)記在一個(gè)類上還不能真正意義上的說它就是SpringMVC 的一個(gè)控制器類,因?yàn)檫@個(gè)時(shí)候Spring 還不認(rèn)識(shí)它。那么要如何做Spring 才能認(rèn)識(shí)它呢?這個(gè)時(shí)候就需要我們把這個(gè)控制器類交給Spring 來管理。有兩種方式:
1)在SpringMVC 的配置文件中定義MyController 的bean 對(duì)象。
2)在SpringMVC 的配置文件中告訴Spring 該到哪里去找標(biāo)記為@Controller 的Controller 控制器。
(2)@RequestMapping
RequestMapping是一個(gè)用來處理請(qǐng)求地址映射的注解,可用于類或方法上。用于類上,表示類中的所有響應(yīng)請(qǐng)求的方法都是以該地址作為父路徑。
(3)@Resource和@Autowired
@Resource和@Autowired都是做bean的注入時(shí)使用,其實(shí)@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要導(dǎo)入,但是Spring支持該注解的注入。
(4)@ModelAttribute和 @SessionAttributes
代表的是:該Controller的所有方法在調(diào)用前,先執(zhí)行此@ModelAttribute方法,可用于注解和方法參數(shù)中,可以把這個(gè)@ModelAttribute特性,應(yīng)用在BaseController當(dāng)中,所有的Controller繼承BaseController,即可實(shí)現(xiàn)在調(diào)用Controller時(shí),先執(zhí)行@ModelAttribute方法。
@SessionAttributes即將值放到session作用域中,寫在class上面。
具體示例參見下面:使用 @ModelAttribute 和 @SessionAttributes 傳遞和保存數(shù)據(jù)
(5)@PathVariable
用于將請(qǐng)求URL中的模板變量映射到功能處理方法的參數(shù)上,即取出uri模板中的變量作為參數(shù)。
(6)@requestParam
@requestParam主要用于在SpringMVC后臺(tái)控制層獲取參數(shù),類似一種是request.getParameter("name"),它有三個(gè)常用參數(shù):defaultValue = "0", required = false, value = "isApp";defaultValue 表示設(shè)置默認(rèn)值,required 銅過boolean設(shè)置是否是必須要傳入的參數(shù),value 值表示接受的傳入的參數(shù)類型。
(7)@ResponseBody
作用: 該注解用于將Controller的方法返回的對(duì)象,通過適當(dāng)?shù)腍ttpMessageConverter轉(zhuǎn)換為指定格式后,寫入到Response對(duì)象的body數(shù)據(jù)區(qū)。
使用時(shí)機(jī):返回的數(shù)據(jù)不是html標(biāo)簽的頁面,而是其他某種格式的數(shù)據(jù)時(shí)(如json、xml等)使用;
(8)@Component
相當(dāng)于通用的注解,當(dāng)不知道一些類歸到哪個(gè)層時(shí)使用,如果有WEB開發(fā)架構(gòu)中固定的層則使用更加語義化的注解@Repository注解于DAO層、@Service注解于Service層、@Controller 注解于Controller層
Spring能有效地組織你的中間層對(duì)象,為模塊之間降低耦合。還包括輕量級(jí),面向切面,控制反轉(zhuǎn),都是Spring的好處
IOC容器意味著將對(duì)象交給IOC容器接管,由這樣一個(gè)容器幫助我們管理對(duì)象,而不是傳統(tǒng)的由開發(fā)人員管理對(duì)象。IOC可以幫助我們注入屬性給對(duì)象,需要的時(shí)候給我們。
降低模塊與模塊之間的耦合,降低類與類之間的耦合。讓開發(fā)人員不再做重復(fù)的對(duì)象創(chuàng)建賦值等繁瑣的操作,而是需要用到時(shí)由IOC容器創(chuàng)建好自己傳遞過來。
編程式事務(wù)管理,在代碼中顯式調(diào)用開啟事務(wù)、提交事務(wù)、回滾事務(wù)的相關(guān)方法
聲明式事務(wù)管理,底層是建立在 AOP 的基礎(chǔ)之上。其本質(zhì)是對(duì)方法前后進(jìn)行攔截,然后在目標(biāo)方法開始之前創(chuàng)建或者加入一個(gè)事務(wù),在執(zhí)行完目標(biāo)方法之后根據(jù)執(zhí)行情況提交或者回滾事務(wù)。
SpringMvc是輕量級(jí)、松耦合的MVC框架,提供模型-視圖-控制器層的不同支持。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)