對Spring的一些個人理解

1.      Spring最主要的就是IOC控制反轉。通過IOC容器,配置對象的依賴關係。

通過BeanFactory factory=new ClassPathXMlApplicationContext(“….xml”);

           UserManagerusrManager=(UserManager)factory.getBean(“useManager”);

/*
* userManager已經通過xml爲我們配置上了UserManagerImpl。

*在UserManagerImpl裏面,通過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">

                                            <!-- 構造方法注入

                                            <constructor-argref="userDao4OracleImpl"/>

                                            -->

                                            <!—通過set方法爲userDao這個變量注入userDao4OracleImpl -->

                                            <propertyname="userDao" ref="userDao4OracleImpl"/>

</bean>

2.      BeanFactory是一個重量級的,最好只初始化一次。所以我們在web.xml中對Spring的xml配置文件進行配置。

<!--listener負責讀取我們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>

              如果再類中需要BeanFactory這個變量我們需要用如下方法調用:

BeanFactory  factory =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

//用BeanFactory足夠。其實後面的方法返回的是ApplicationContext類,他是繼承了BeanFactory,並封裝了一些方法。

//ApplicationContext pc =WebApplicationContextUtils.getRequiredWebApplicationContext(request.getSession().getServletContext());

UserManageruserManager = (UserManager)factory.getBean("userManager");

userManager.login(laf.getUsername(),laf.getPassword());

 

3.      出現BeanFactory存在一定的依賴查找。但是這種方法也有一定的應用。

現在理清一下思路,看上面1這個例子。如果想要userManager這個對象,但是不是通過BeanFactory創建,然後用getBean方法得到. 而是希望當創建一個類的時候,自動通過set方法爲我們創建userManager。那麼這個類必須被Spring管理。比如Structs和Spring的集成,就是通過在structs.xml中的DelegatingActionProxy,進行factory的getBean,將 UserAction創建,然後set方法獲得userManager。  

<bean name="/index"class="com.env.business.actions.UserAction">

        <propertyname="userManager" ref="userManager"/>

      </bean>


發佈了64 篇原創文章 · 獲贊 5 · 訪問量 63萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章