版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
關(guān)于spring幾種集合對(duì)象簡(jiǎn)介L(zhǎng)istFactoryBeanorg.springframework.beans.factory.config.ListFactoryBeanListFactoryBean類為開(kāi)發(fā)者提供了一種在Springbean配備文獻(xiàn)中創(chuàng)立一種詳細(xì)列表集合類(ArrayList和LinkedList)。這里有一種ListFactoryBean示例,在運(yùn)營(yíng)時(shí)它將實(shí)例化一種ArrayList,并注入到一種bean屬性。<bean
id="emails"
class="org.springframework.beans.factory.config.ListFactoryBean">
<property
name="sourceList">
<list>
<value></value>
<value></value>
<value></value>
<value></value>
</list>
</property>
</bean>
配備<beanid="CustomerBean"class="mon.Customer"> <propertyname="lists"> <beanclass="org.springframework.beans.factory.config.ListFactoryBean"> <propertyname="targetListClass"> <value>java.util.ArrayList</value> </property> <propertyname="sourceList"> <list> <value>one</value> <value>2</value> <value>three</value> </list> </property> </bean> </property></bean>代碼publicclassApp{ publicstaticvoidmain(String[]args){ ApplicationContextcontext=newClassPathXmlApplicationContext( "applicationContext.xml"); Customercust=(Customer)context.getBean("CustomerBean"); System.out.println(cust); }}成果Customer[lists=[one,2,three]]Type=[classjava.util.ArrayList]MapFactoryBeanorg.springframework.beans.factory.config.MapFactoryBean<bean
id="emails"
class="org.springframework.beans.factory.config.MapFactoryBean">
<property
name="sourceMap">
<map>
<entry
key="pechorin"
value=""/>
<entry
key="raskolnikov"
value=""/>
<entry
key="stavrogin"
value=""/>
<entry
key="porfiry"
value=""/>
</map>
</property>
</bean>
SetFactoryBeanorg.springframework.beans.factory.config.SetFactoryBean<bean
id="emails"
class="org.springframework.beans.factory.config.SetFactoryBean">
<property
name="sourceSet">
<set>
<value></value>
<value></value>
<value></value>
<value></value>
</set>
</property>
</bean>
PropertiesFactoryBeanorg.springframework.beans.factory.config.PropertiesFactoryBean通過(guò)PropertiesFactoryBean來(lái)獲取properties配制文獻(xiàn)數(shù)據(jù)<bean
id="jdbcConfiguration"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property
name="location"
value="classpath:com/foo/perties"/>
</bean>PropertyPathFactoryBeanorg.springframework.beans.factory.config.PropertyPathFactoryBean通過(guò)PropertyPathFactoryBean來(lái)指定屬性途徑獲取屬性值<bean
id="testBean"
class="org.springframework.beans.TestBean"
singleton="false">
<property
name="age"
value="10"/>
<property
name="spouse">
<bean
class="org.springframework.beans.TestBean">
<property
name="age"
value="11"/>
</bean>
</property>
</bean>
<bean
id="testBean.age"
class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
框架簡(jiǎn)介Spring是一種開(kāi)源框架,Spring是于年興起一種輕量級(jí)Java開(kāi)發(fā)框架,由RodJohnson在其著作ExpertOne-On-OneJ2EEDevelopmentandDesign中闡述某些理念和原型衍生而來(lái)。它是為理解決公司應(yīng)用開(kāi)發(fā)復(fù)雜性而創(chuàng)立。框架重要優(yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)容許使用者選取使用哪一種組件,同步為J2EE應(yīng)用程序開(kāi)發(fā)提供集成框架。Spring使用基本JavaBean來(lái)完畢此前只也許由EJB完畢事情。然而,Spring用途不但限于服務(wù)器端開(kāi)發(fā)。從簡(jiǎn)樸性、可測(cè)試性和松耦合角度而言,任何Java應(yīng)用都可以從Spring中受益。Spring核心是控制反轉(zhuǎn)(IoC)和面向切面(AOP)。簡(jiǎn)樸來(lái)說(shuō),Spring是一種分層JavaSE/EEfull-stack(一站式)輕量級(jí)開(kāi)源框架。框架特性輕量——從大小與開(kāi)銷兩方面而言Spring都是輕量。完整Spring框架可以在一種大小只有1MB多JAR文獻(xiàn)里發(fā)布。并且Spring所需解決開(kāi)銷也是微局限性道。此外,Spring是非侵入式:典型地,Spring應(yīng)用中對(duì)象不依賴于Spring特定類。AOP(面向切面)面向切面——Spring提供了面向切面編程豐富支持,容許通過(guò)度離應(yīng)用業(yè)務(wù)邏輯與系統(tǒng)級(jí)服務(wù)(例如審計(jì)(auditing)和事務(wù)(transaction)管理)進(jìn)行內(nèi)聚性開(kāi)發(fā)。應(yīng)用對(duì)象只實(shí)現(xiàn)它們應(yīng)當(dāng)做——完畢業(yè)務(wù)邏輯——僅此而已。它們并不負(fù)責(zé)(甚至是意識(shí))其他系統(tǒng)級(jí)關(guān)注點(diǎn),例如日記或事務(wù)支持。IOC(控制反轉(zhuǎn))控制反轉(zhuǎn)——Spring通過(guò)一種稱作控制反轉(zhuǎn)(IoC)技術(shù)增進(jìn)了低耦合。當(dāng)應(yīng)用了IoC,一種對(duì)象依賴其他對(duì)象會(huì)通過(guò)被動(dòng)方式傳遞進(jìn)來(lái),而不是這個(gè)對(duì)象自己創(chuàng)立或者查找依賴對(duì)象。你可以以為IoC與JNDI相反——不是對(duì)象從容器中查找依賴,而是容器在對(duì)象初始化時(shí)不等對(duì)象祈求就積極將依賴傳遞給它。普通都是調(diào)用者依賴被調(diào)用者,使用ioc后對(duì)象不會(huì)被直接調(diào)用,而是通過(guò)ioc容器來(lái)積極提供容器——Spring包括并管理應(yīng)用對(duì)象配備和生命周期,在這個(gè)意義上它是一種容器,你可以配備你每個(gè)bean如何被創(chuàng)立——基于一種可配備原型(prototype),你bean可以創(chuàng)立一種單獨(dú)實(shí)例或者每次需要時(shí)都生成一種新實(shí)例——以及它們是如何互有關(guān)聯(lián)。然而,Spring不應(yīng)當(dāng)被混同于老式重量級(jí)EJB容器,它們經(jīng)常是龐大與笨重,難以使用。框架——Spring可以將簡(jiǎn)樸組件配備、組合成為復(fù)雜應(yīng)用。在Spring中,應(yīng)用對(duì)象被聲明式地組合,典型地是在一種XML文獻(xiàn)里。Spring也提供了諸多基本功能(事務(wù)管理、持久化框架集成等等),將應(yīng)用邏輯開(kāi)發(fā)留給了你。MVC——Spring作用是整合,但不但僅限于整合,Spring框架可以被看做是一種公司解決方案級(jí)別框架??蛻舳税l(fā)送祈求,服務(wù)器控制器(由DispatcherServlet實(shí)現(xiàn))完畢祈求轉(zhuǎn)發(fā),控制器調(diào)用一種用于映射類HandlerMapping,該類用于將祈求映射到相應(yīng)解決器來(lái)解決祈求。HandlerMapping將祈求映射到相應(yīng)解決器Controller(相稱于Action)在Spring當(dāng)中如果寫(xiě)某些解決器組件,普通實(shí)現(xiàn)Controller接口,在Controller中就可以調(diào)用某些Service或DAO來(lái)進(jìn)行數(shù)據(jù)操作ModelAndView用于存儲(chǔ)從DAO中取出數(shù)據(jù),還可以存儲(chǔ)響應(yīng)視圖某些數(shù)據(jù)。如果想將解決成果返回給顧客,那么在Spring框架中還提供一種視圖組件ViewResolver,該組件依照Controller返回標(biāo)示,找到相應(yīng)視圖,將響應(yīng)response返回給顧客Aop是面向?qū)ο箝_(kāi)發(fā)一種補(bǔ)充,可以在不變化本來(lái)業(yè)務(wù)邏輯基本上動(dòng)態(tài)增長(zhǎng)某些功能,例如增長(zhǎng)例子異常解決AOP
面向切面編程。解耦是程序員編碼開(kāi)發(fā)過(guò)程中始終追求。AOP也是為理解耦所誕生。AOP在Spring框架中被作為核心構(gòu)成某些之一,最常用就是事務(wù)控制,日記記錄OOP(面向?qū)ο缶幊?針對(duì)業(yè)務(wù)解決過(guò)程實(shí)體及其屬性和行為進(jìn)行抽象封裝,以獲得更加清晰高效邏輯單元?jiǎng)澐?。而AOP則是針對(duì)業(yè)務(wù)解決過(guò)程中切面進(jìn)行提取,它所面對(duì)是解決過(guò)程中某個(gè)環(huán)節(jié)或階段,以獲得邏輯過(guò)程中各某些之間低耦合性隔離效果。這兩種設(shè)計(jì)思想在目的上有著本質(zhì)差別。特點(diǎn)/長(zhǎng)處特點(diǎn)1.以便解耦,簡(jiǎn)化開(kāi)發(fā)通過(guò)Spring提供IoC容器,我們可以將對(duì)象之間依賴關(guān)系交由Spring進(jìn)行控制,避免硬編碼所導(dǎo)致過(guò)度程序耦合。有了Spring,顧客不必再為單實(shí)例模式類、屬性文獻(xiàn)解析等這些很底層需求編寫(xiě)代碼,可以更專注于上層應(yīng)用。2.AOP編程支持通過(guò)Spring提供AOP功能,以便進(jìn)行面向切面編程,許多不容易用老式OOP實(shí)現(xiàn)功能可以通過(guò)AOP輕松應(yīng)付。3.聲明式事務(wù)支持在Spring中,我們可以從單調(diào)煩悶事務(wù)管理代碼中解脫出來(lái),通過(guò)聲明式方式靈活地進(jìn)行事務(wù)管理,提高開(kāi)發(fā)效率和質(zhì)量。長(zhǎng)處1.低侵入式設(shè)計(jì),代碼污染極低2.獨(dú)立于各種應(yīng)用服務(wù)器,基于Spring框架應(yīng)用,可以真正實(shí)現(xiàn)WriteOnce,RunAnywhere承諾3.SpringDI機(jī)制減少了業(yè)務(wù)對(duì)象替代復(fù)雜性,提高了組件之間解耦4.SpringAOP支持容許將某些通用任務(wù)如安全、事務(wù)、日記等進(jìn)行集中式管理,從而提供了更好復(fù)用5.SpringORM和DAO提供了與第三方持久層框架良好整合,并簡(jiǎn)化了底層數(shù)據(jù)庫(kù)訪問(wèn)6.Spring并不強(qiáng)制應(yīng)用完全依賴于Spring,開(kāi)發(fā)者可自由選用Spring框架某些或所有實(shí)現(xiàn)不同類型參數(shù)注入1.注入直接量可以通過(guò)<value>標(biāo)簽進(jìn)行注入2.引入其她bean組件使用標(biāo)簽<ref>屬性普通用bean3.注入集合類型屬性<list><set><map><properties>詳細(xì)配備詳見(jiàn)參數(shù)Bean作用域Singletton默認(rèn)值:Spring以單例模式創(chuàng)立bean實(shí)例,即容器中該bean實(shí)例只有一種Prototype:每次從容器中獲取bean時(shí)都會(huì)創(chuàng)立一種實(shí)例Request:用于web應(yīng)用環(huán)境,針對(duì)每次http祈求都會(huì)創(chuàng)立一種實(shí)例Session:用于web環(huán)境,同一種會(huì)話共享一種實(shí)例,Bean注入方式屬性注入構(gòu)造辦法注入在Spring配備文獻(xiàn)中實(shí)現(xiàn)自動(dòng)裝配<bean>元素autowire屬性提供了一種自動(dòng)注入依賴對(duì)象機(jī)制,配備bean時(shí)不需要做任何顯式地指定,Spring會(huì)自動(dòng)查找符合條件依賴對(duì)象并實(shí)行注入提供了四種自動(dòng)裝配類型No:默認(rèn)值,Spring默認(rèn)不進(jìn)行自動(dòng)裝配,必要顯式指定依賴關(guān)系ByName:依照屬性名自動(dòng)裝配,會(huì)查找與屬性名相似id,Bytype依照屬性類型積極裝配Constructor和bytype類似,但是它針對(duì)構(gòu)造辦法,如果Spring找到一種bean和構(gòu)造辦法參數(shù)類型相匹配,則通過(guò)構(gòu)造辦法注入該依賴對(duì)象,找不到拋出異常Spring慣用注解
注解闡明?
注冊(cè)注解解決器?
方式一:bean<beanclass="org.springframework.beans.factory.annotation.
AutowiredAnnotationBeanPostProcessor"/>?
方式二:
命名空間<context:annotation-config/><context:annotationconfig/>
將隱式地向Spring
容器注冊(cè)AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor
、
PersistenceAnnotationBeanPostProcessor
以及RequiredAnnotationBeanPostProcessor
這4
個(gè)BeanPostProcessor
。?
方式三:
命名空間<context:component-scan/>如果要使注解工作,則必要配備component-scan
,事實(shí)上不需要再配備annotation-config。base-package
屬性指定了需要掃描類包,類包及其遞歸子包中所有類都會(huì)被解決。還容許定義過(guò)濾器將基包下某些類納入或排除。
啟用SpringMVC
注解?
啟動(dòng)SpringMVC
注解功能,完畢祈求和注解POJO
映射.<beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
注解簡(jiǎn)介
?
@Controller
?
@Service
?
@Autowired
?
@RequestMapping
?
@RequestParam
?
@ModelAttribute
?
@Resource
?
@Repository
?
@Component
(不推薦使用)
?
@Scope
?
@SessionAttributes
?
@InitBinder
?
@Required
?
@Qualifier
1.@Controller
?
例如
@Controller
publicclassSoftCreateControllerextendsSimpleBaseController{}
?
或者
@Controller("softCreateController")
?
闡明
@Controller
負(fù)責(zé)注冊(cè)一種bean
到spring
上下文中,bean
ID
默以為類名稱開(kāi)頭字母小寫(xiě)
2.@Service
?
例如
@Service
publicclassSoftCreateServiceImplimplementsISoftCreateService{}
?
或者
@Service("softCreateServiceImpl")
?
闡明
@Service
負(fù)責(zé)注冊(cè)一種bean
到spring
上下文中,bean
ID
默以為類名稱開(kāi)頭字母小寫(xiě)
3.@Autowired
?
例如
@Autowired
privateISoftPMServicesoftPMService;
?
或者
@Autowired(required=false)
privateISoftPMServicesoftPMService=newSoftPMServiceImpl();
?
闡明
@Autowired
依照bean
類型從spring
上線文中進(jìn)行查找,注冊(cè)類型必要唯一,否則報(bào)異常。與@Resource
區(qū)別在于,@Resource
容許通過(guò)bean
名稱或bean
類型兩種方式進(jìn)行查找@Autowired(required=false)
表達(dá),如果spring
上下文中沒(méi)有找到該類型bean
時(shí),才會(huì)使用newSoftPMServiceImpl();@Autowired標(biāo)注作用于Map類型時(shí),如果Mapkey為String類型,則Spring會(huì)將容器中所有類型符合Mapvalue相應(yīng)類型Bean增長(zhǎng)進(jìn)來(lái),用Beanid或name作為Mapkey。@Autowired尚有一種作用就是,如果將其標(biāo)注在BeanFactory類型、ApplicationContext類型、ResourceLoader類型、ApplicationEventPublisher類型、MessageSource類型上,那么Spring會(huì)自動(dòng)注入這些實(shí)現(xiàn)類實(shí)例,不需要額外操作。
4.@RequestMapping?
類@Controller
@RequestMapping("/bbtForum.do")publicclassBbtForumController{
@RequestMapping(params="method=listBoardTopic")publicStringlistBoardTopic(inttopicId,Useruser){}
}
?
辦法
@RequestMapping("/softpg/downSoftPg.do")
@RequestMapping(value="/softpg/ajaxLoadSoftId.do",method=POST)
@RequestMapping(value="/osu/product/detail.do",params={"modify=false"},method=POST)
?
闡明
@RequestMapping
可以聲明到類或辦法上
?
參數(shù)綁定闡明
如果我們使用如下
URL
祈求:http://localhost/bbtForum.do?method=listBoardTopic&topicId=1&userId=10&userName=tomtopicIdURL
參數(shù)將綁定到
topicId
入?yún)⑸?而
userId
和
userNameURL
參數(shù)將綁定到
user
對(duì)象
userId
和
userName
屬性中。和
URL
祈求中不容許沒(méi)有
topicId
參數(shù)不同,雖然
User
userId
屬性類型是基本數(shù)據(jù)類型,但如果
URL
中不存在
userId
參數(shù),Spring
也不會(huì)報(bào)錯(cuò),此時(shí)
user.userId
值為
0
。如果
User
對(duì)象擁有一種
dept.deptId
級(jí)聯(lián)屬性,那么它將和
dept.deptIdURL
參數(shù)綁定。
5.@RequestParam?
參數(shù)綁定闡明
@RequestParam("id")http://localhost/bbtForum.do?method=listBoardTopic&id=1&userId=10&userName=tomlistBoardTopic(@RequestParam("id")inttopicId,Useruser)
中
topicId
綁定到
id
這個(gè)
URL
參數(shù),那么可以通過(guò)對(duì)入?yún)⑹褂?/p>
@RequestParam
注解來(lái)達(dá)到目
@RequestParam(required=false):參數(shù)不是必要,默以為true@RequestParam(value="id",required=false)
祈求解決辦法入?yún)⒖蛇x類型
?
Java
基本數(shù)據(jù)類型和
String
默認(rèn)狀況下將按名稱匹配方式綁定到
URL
參數(shù)上,可以通過(guò)
@RequestParam
注解變化默認(rèn)綁定規(guī)則
?
request/response/session
既可以是
ServletAPI
也可以是
PortletAPI
相應(yīng)對(duì)象,Spring
會(huì)將它們綁定到Servlet
和
Portlet
容器相應(yīng)對(duì)象上
?
org.springframework.web.context.request.WebRequest
內(nèi)部包括了
request
對(duì)象
?
java.util.Locale綁定到
request
相應(yīng)
Locale
對(duì)象上
?
java.io.InputStream/java.io.Reader
可以借此訪問(wèn)
request
內(nèi)容
?
java.io.OutputStream/java.io.Writer可以借此操作
response
內(nèi)容
?
任何標(biāo)注了
@RequestParam
注解入?yún)?/p>
被標(biāo)注
@RequestParam
注解入?yún)⒔壎ǖ教囟?/p>
request
參數(shù)上。
?
java.util.Map/org.springframework.ui.ModelMap它綁定
SpringMVC
框架中每個(gè)祈求所創(chuàng)立潛在模型對(duì)象,它們可以被
Web
視圖對(duì)象訪問(wèn)(如
JSP
)
?
命令/
表單對(duì)象(注:普通稱綁定使用
HTTPGET
發(fā)送
URL
參數(shù)對(duì)象為命令對(duì)象,而稱綁定使用HTTPPOST
發(fā)送
URL
參數(shù)對(duì)象為表單對(duì)象)
它們屬性將以名稱匹配規(guī)則綁定到
URL
參數(shù)上,同步完畢類型轉(zhuǎn)換。
而類型轉(zhuǎn)換規(guī)則可以通過(guò)
@InitBinder
注解或通過(guò)
HandlerAdapter
配備進(jìn)行調(diào)
整
?
org.springframework.validation.Errors/org.springframework.validation.BindingResult
為屬性列表中命令/
表單對(duì)象校驗(yàn)成果,注意檢查成果參數(shù)必要緊跟在命令/
表單對(duì)象背面
?
org.springframework.web.bind.support.SessionStatus
可以通過(guò)該類型
status
對(duì)象顯式結(jié)束表單解決,這相稱于觸發(fā)
session
清除其中通過(guò)@SessionAttributes
定義屬性
祈求解決辦法返回值可選類型?
void此時(shí)邏輯視圖名由祈求解決辦法相應(yīng)
URL
擬定,如如下辦法:
@RequestMapping("/welcome.do")
publicvoidwelcomeHandler(){}
相應(yīng)邏輯視圖名為
“
welcome
”
?
String此時(shí)邏輯視圖名為返回字符,如如下辦法:
@RequestMapping(method=RequestMethod.GET)
publicStringsetupForm(@RequestParam("ownerId")intownerId,ModelMapmodel){Ownerowner=this.clinic.loadOwner(ownerId);
model.addAttribute(owner);
return"ownerForm";}
相應(yīng)邏輯視圖名為
“
ownerForm
”
?
org.springframework.ui.ModelMap和返回類型為
void
同樣,邏輯視圖名取決于相應(yīng)祈求
URL
,如下面例子:
@RequestMapping("/vets.do")
publicModelMapvetsHandler(){returnnewModelMap(this.clinic.getVets());}相應(yīng)邏輯視圖名為
“
vets
”
,返回
ModelMap
將被作為祈求相應(yīng)模型對(duì)象,可以在
JSP
視圖頁(yè)面中訪問(wèn)到。
?
ModelAndView
固然還可以是老式
ModelAndView
。
@ModelAttribute
?
作用域:request
?
例如
@RequestMapping("/base/userManageCooper/init.do")
publicStringhandleInit(@ModelAttribute("queryBean")ManagedUsersUser,Modelmodel,){
?
或者
@ModelAttribute("coopMap")//
將coopMap
返回到頁(yè)
面
publicMap<Long,CooperatorInfo>coopMapItems(){}
?
闡明
@ModelAttribute
聲明在屬性上,表達(dá)該屬性value
來(lái)源于model
里"queryBean"
,并被保存到model
里@ModelAttribute聲明在辦法上,表達(dá)該辦法返回值被保存到model
里
@Resource
?
例如
@Resource
privateDataSourcedataSource;//injectthebeannamed'dataSource'
?
或者
@Resource(name="dataSource")
@Resource(type=DataSource.class)
?
闡明@Resource
默認(rèn)按bean
name
進(jìn)行查找,如果沒(méi)有找到會(huì)按type
進(jìn)行查找,
此時(shí)與@Autowired
類
似在沒(méi)有為@Resource注解顯式指定name屬性前提下,如果將其標(biāo)注在BeanFactory類型、ApplicationContext類型、ResourceLoader類型、ApplicationEventPublisher類型、MessageSource類型上,那么Spring會(huì)自動(dòng)注入這些實(shí)現(xiàn)類實(shí)例,不需要額外操作。此時(shí)name屬性不需要指定(或者指定為""),否則注入失敗;
@Repository?
與@Controller
、@Service
類似,都是向spring
上下文中注冊(cè)bean
,不在贅述。
@Component
(不推薦使用)?
@Component@Component
是所有受Spring
管理組件通用形式,Spring
還提供了更加細(xì)化注解形式:
@Repository
、@Service、@Controller
,它們分別相應(yīng)存儲(chǔ)層Bean
,業(yè)務(wù)層Bean
,和展示層Bean
。當(dāng)前版本(2.5
)中,這些注解與@Component
語(yǔ)義是同樣,完全通用,
在Spring
后來(lái)版本中也許會(huì)給它們追加更多語(yǔ)義。
因此,我們推薦使用@Repository
、@Service
、@Controller
來(lái)代替@Component
。
@Scope
?
例如
@Scope("session")
@Repository()
publicclassUserSessionBeanimplementsSerializable{}
?
闡明
在使用XML
定義Bean
時(shí),可以通過(guò)bean
scope
屬性來(lái)定義一種Bean
作用范疇,
同樣可以通過(guò)@Scope
注解來(lái)完畢
@Scope中可以指定如下值:
singleton:定義bean范疇為每個(gè)spring容器一種實(shí)例(默認(rèn)值)
prototype:定義bean可以被多次實(shí)例化(使用一次就創(chuàng)立一次)
request:定義bean范疇是http祈求(springMVC中有效)
session:定義bean范疇是http會(huì)話(springMVC中有效)
global-session:定義bean范疇是全局http會(huì)話(portlet中有效)
@SessionAttributes?
闡明Spring
容許我們有選取地指定
ModelMap
中哪些屬性需要轉(zhuǎn)存到
session
中,
以便下一種祈求屬相應(yīng)
ModelMap
屬性列表中還能訪問(wèn)到這些屬性。
這一功能是通過(guò)類定義處標(biāo)注
@SessionAttributes
注解來(lái)實(shí)現(xiàn)。
@SessionAttributes
只能聲明在類上,而不能聲明在辦法上。
?
例如@SessionAttributes("currUser")//
將ModelMap
中屬性名為currUser
屬性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types=User.class)
@SessionAttributes(types={User.class,Dept.class})
@SessionAttributes(types={User.class,Dept.class},value={"attr1","attr2"})@InitBinder?
闡明如果但愿某個(gè)屬性編輯器僅作用于特定
Controller
,
可以在
Controller
中定義一種標(biāo)注
@InitBinder
注解辦法,
可以在該辦法中向
Controller
了注冊(cè)若干個(gè)屬性編輯器
?
例如@InitBinder
publicvoidinitBinder(WebDataBinderbinder){SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class,newCustomDateEditor(dateFormat,false));}
@Required
?
例如
@required
public
setName(Stringname){}
?
闡明
@
required
負(fù)責(zé)檢查一種bean在初始化時(shí)其聲明
set辦法與否被執(zhí)行,
當(dāng)某個(gè)被標(biāo)注了@RequiredSetter辦法沒(méi)有被調(diào)用,則Spring在解析時(shí)候會(huì)拋出異常,以提示開(kāi)發(fā)者對(duì)相應(yīng)屬性進(jìn)行設(shè)立。@Required注解只能標(biāo)注在Setter辦法之上。由于依賴注入本質(zhì)是檢查Setter辦法與否被調(diào)用了,而不是真去檢查屬性與否賦值了以及賦了什么樣值。如果將該注解標(biāo)注在非setXxxx()類型辦法則被忽視。
@Qualifier
?
例如
@Autowired
@Qualifier("softService")
privateISoftPMServicesoftPMService;
?
闡明
使用@Autowired
時(shí),如果找到各種同一類型bean,則會(huì)拋異常,此時(shí)可以使用
@Qualifier("beanName"),明確指定bean名稱進(jìn)行注入,此時(shí)與
@Resource指定name屬性作用相似。SSH框架整合知識(shí)點(diǎn)環(huán)節(jié)添加3個(gè)框架jar文獻(xiàn),并創(chuàng)立有關(guān)配備文獻(xiàn)為Hibernate配備數(shù)據(jù)源對(duì)象配備sessionfactory對(duì)象實(shí)現(xiàn)并配備Dao和service使用Spring簡(jiǎn)化數(shù)據(jù)庫(kù)事務(wù)解決,及配備聲明式事務(wù)管理實(shí)現(xiàn)并配備Action2-5部操作屬于Spring整合hibernate,環(huán)節(jié)6屬于Spring整合Struts21.在Spring容器中配備c3po數(shù)據(jù)源當(dāng)前流行數(shù)據(jù)源框架有dbcpc3po,當(dāng)前慣用是c3po需要導(dǎo)入包c(diǎn)3po-.jar在web容器中配備數(shù)據(jù)源2.配備sessionfactory對(duì)象Annotationsessionfactorybean是sessionfactory實(shí)現(xiàn)類,它同步支持hibernate中XML和annotation映射配備,mappingResources屬性用來(lái)指定XML映射文獻(xiàn),如果在開(kāi)發(fā)中配備\\持久化類配備問(wèn)價(jià)非常多時(shí)候,可以在mappingLocations屬性中使用通配符來(lái)匹配各種映射文獻(xiàn)3實(shí)現(xiàn)并配備Dao和service實(shí)現(xiàn)Dao在眾多dao中抽取公共代碼形成basedao,dao集成basedao,由于basedao接口實(shí)現(xiàn)被不同dao繼承,因此basedao被聲明形成了泛型接口,其中類型T可以在繼承時(shí)再去擬定,這樣就可以讓basedao實(shí)現(xiàn)各種表持久化功能,核心代碼PrivateClass<T>enti
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 銷售技巧培訓(xùn)學(xué)習(xí)心得體會(huì)(10篇)
- 激勵(lì)員工簡(jiǎn)單發(fā)言稿(10篇范例)
- 酒店主管的年度工作計(jì)劃5篇
- 駕校項(xiàng)目可行性研究報(bào)告
- 社會(huì)策劃模式
- 演講稿勵(lì)志故事500字左右(32篇)
- 臺(tái)州市2025屆高三第一次教學(xué)質(zhì)量評(píng)估(一模)英語(yǔ)試卷
- 篩分服務(wù)合同
- 檔案管理工作細(xì)則
- 門(mén)診護(hù)士實(shí)習(xí)心得總結(jié)范文5篇
- 無(wú)損檢測(cè)通用作業(yè)指導(dǎo)書(shū)
- 2023年中考語(yǔ)文復(fù)習(xí):150個(gè)文言實(shí)詞-課件(共183張PPT)
- 車輛維修服務(wù)方案先進(jìn)性
- 2020年1月上海春招英語(yǔ)聽(tīng)力(含試題、MP3、答案及錄音)
- GB/T 17639-2023土工合成材料長(zhǎng)絲紡粘針刺非織造土工布
- 發(fā)行企業(yè)債法律盡職調(diào)查之訪談問(wèn)題清單
- 拍賣(mài)合作協(xié)議
- 白改黑施工組織設(shè)計(jì)
- ICU患者失禁性皮炎的預(yù)防及護(hù)理新進(jìn)展
- 半導(dǎo)體工藝 摻雜原理與技術(shù)
- 南京航空航天大學(xué)考試卷
評(píng)論
0/150
提交評(píng)論