javascript
对Spring的一些个人理解
1.??????Spring最主要的就是IOC控制反轉(zhuǎn)。通過(guò)IOC容器,配置對(duì)象的依賴(lài)關(guān)系。
通過(guò)BeanFactory factory=new ClassPathXMlApplicationContext(“….xml”);
?????????? UserManagerusrManager=(UserManager)factory.getBean(“useManager”);
/*
* userManager已經(jīng)通過(guò)xml為我們配置上了UserManagerImpl。
*在UserManagerImpl里面,通過(guò)set方法,為userDao配上了userDao4OracleImpl
*/
userManager.set(…);
Xml:
????????????? ??????????? <bean id="userDao4MySqlImpl"class="com.bjsxt.spring.dao.UserDao4MySqlImpl"/>
??????????????? ????????????? <beanid="userDao4OracleImpl" class="com.bjsxt.spring.dao.UserDao4OracleImpl"/>
??????????????? ????????????? <beanid="userManager" ?class="com.bjsxt.spring.manager.UserManagerImpl">
??????????????? ??????????????????????????? <!-- 構(gòu)造方法注入
??????????????? ??????????????????????????? <constructor-argref="userDao4OracleImpl"/>
??????????????? ??????????????????????????? -->
??????????????????????????????????????????? <!—通過(guò)set方法為userDao這個(gè)變量注入userDao4OracleImpl -->
??????????????? ??????????????????????????? <propertyname="userDao" ref="userDao4OracleImpl"/>
</bean>
2.??????BeanFactory是一個(gè)重量級(jí)的,最好只初始化一次。所以我們?cè)趙eb.xml中對(duì)Spring的xml配置文件進(jìn)行配置。
<!--listener負(fù)責(zé)讀取我們context-param的配置文件,然后生成beanfactory -->
???????????? ???? ?<context-param>
????????? ????????????? <param-name>contextConfigLocation</param-name>
??????????????????????????? <param-value>
classpath:applicationContext-actions.xml,
classpath:applicationContext-beans.xml,
classpath:applicationContext-common.xml
</param-value>
???????????? ???? ?</context-param>
??????????????????????? ?<listener>
??????????????????????????? ????????????? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
?????????????????????? </listener>
????????????? 如果再類(lèi)中需要BeanFactory這個(gè)變量我們需要用如下方法調(diào)用:
BeanFactory? factory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
//用BeanFactory足夠。其實(shí)后面的方法返回的是ApplicationContext類(lèi),他是繼承了BeanFactory,并封裝了一些方法。
//ApplicationContext?pc =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());
UserManageruserManager = (UserManager)factory.getBean("userManager");
userManager.login(laf.getUsername(),laf.getPassword());
?
3.??????出現(xiàn)BeanFactory存在一定的依賴(lài)查找。但是這種方法也有一定的應(yīng)用。
現(xiàn)在理清一下思路,看上面1這個(gè)例子。如果想要userManager這個(gè)對(duì)象,但是不是通過(guò)BeanFactory創(chuàng)建,然后用getBean方法得到. 而是希望當(dāng)創(chuàng)建一個(gè)類(lèi)的時(shí)候,自動(dòng)通過(guò)set方法為我們創(chuàng)建userManager。那么這個(gè)類(lèi)必須被Spring管理。比如Structs和Spring的集成,就是通過(guò)在structs.xml中的DelegatingActionProxy,進(jìn)行factory的getBean,將 UserAction創(chuàng)建,然后set方法獲得userManager。??
<bean name="/index"class="com.env.business.actions.UserAction">
??? ??? <propertyname="userManager" ref="userManager"/>
?? ???</bean>
轉(zhuǎn)載于:https://www.cnblogs.com/hainange/archive/2012/03/31/6153652.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的对Spring的一些个人理解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iOS 版谷歌 Chrome 115 浏
- 下一篇: Spring如何处理线程并发