<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 【第十二章】零配置 之 12.5 綜合示例-積分商城 ——跟我學spring3 ## 12.5? 綜合示例 ### 12.5.1? 概述 在第十一章中我們介紹了SSH集成,在進行SSH集成時都是通過基于XML配置文件配置每層的Bean,從而產生許多XML配置文件,本節將通過注解方式消除部分XML配置文件,實現所謂的零配置。 ### 12.5.2? 項目拷貝 1、拷貝【第十一章? SSH集成開發】中的“pointShop”項目將其命名為“pointShop2”; 2、修改“pointShop2”項目下的“.settings”文件夾下的“org.eclipse.wst.common.component”文件,將“**&lt;property name="context-root" value="pointShop"/&gt;**”修改為“**&lt;property name="context-root" value="pointShop2"/&gt;**”,即該web項目的上下文為“pointShop2”,在瀏覽器中可以通過http://localhost:8080/pointShop2來訪問該web項目。 ### 12.5.3? 數據訪問層變化 將dao層配置文件中的dao實現Bean定義刪除,通過在dao實現類頭上添加“@Repository”來定義dao實現Bean,并通過注解@Autowired來完成依賴注入。 1、刪除DAO層配置文件(cn/javass/point/dao/applicationContext-hibernate.xml)中的如下配置: ``` <bean id="abstractDao" abstract="true" init-method="init"> <property name="sessionFactory" ref="sessionFactory"/> </bean> <bean id="goodsDao" class="cn.javass.point.dao.hibernate.GoodsHibernateDao" parent="abstractDao"/> <bean id="goodsCodeDao" class="cn.javass.point.dao.hibernate.GoodsCodeHibernateDao" parent="abstractDao"/> ``` 2、修改通用DAO實現cn.javass.commons.dao.hibernate.BaseHibernateDao,通過注解實現依賴注入和指定初始化方法: ``` public abstract class BaseHibernateDao<M extends Serializable, PK extends Serializable> extends HibernateDaoSupport implements IBaseDao<M, PK>, InitializingBean { //省略類字段 @Autowired @Required public void setSf(SessionFactory sf) { setSessionFactory(sf); } @PostConstruct @SuppressWarnings("unchecked") public void init() { //省略具體實現代碼 } } ``` * setSf方法:通過@Autowired注解自動注入SessionFactory實現; * init方法:通過@PostConstruct注解表示該方法是初始化方法; 3、修改cn.javass.point.dao.hibernate.GoodsHibernateDao,在該類上添加@Repository注解來進行DAO層Bean定義: ``` @Repository public class GoodsHibernateDao extends BaseHibernateDao<GoodsModel, Integer> implements IGoodsDao { …… } ``` 4、修改cn.javass.point.dao.hibernate.GoodsCodeHibernateDao,在該類上添加@Repository注解來進行DAO層Bean定義: ``` @Repository public class GoodsCodeHibernateDao extends BaseHibernateDao<GoodsCodeModel, Integer> implements IGoodsCodeDao { …… } ``` DAO層到此就修改完畢,其他地方無需修改。 ### 12.5.4? 業務邏輯層變化 將service層配置文件中的service實現Bean定義刪除,通過在service實現類頭上添加“@Service”來定義service實現Bean,并通過注解@Autowired來完成依賴注入。 1、刪除Service層配置文件(cn/javass/point/service/applicationContext-service.xml)中的如下配置: ``` <bean id="goodsService" class="cn.javass.point.service.impl.GoodsServiceImpl"> <property name="dao" ref="goodsDao"/> </bean> <bean id="goodsCodeService" class="cn.javass.point.service.impl.GoodsCodeServiceImpl"> <property name="dao" ref="goodsCodeDao"/> <property name="goodsService" ref="goodsService"/> </bean> ``` 2、修改cn.javass.point.service.impl.GoodsServiceImpl,在該類上添加@Service注解來進行Service層Bean定義: ``` @Service public class GoodsServiceImpl extends BaseServiceImpl<GoodsModel, Integer> implements IGoodsService { @Autowired @Required public void setGoodsDao(IGoodsDao dao) { setDao(dao); } } ``` * **setGoodsDao方法:**用于注入IGoodsDao實現,此處直接委托給setDao方法。 3、修改cn.javass.point.service.impl.GoodsCodeServiceImpl,在該類上添加@Service注解來進行Service層Bean定義: ``` @Service public class GoodsCodeServiceImpl extends BaseServiceImpl<GoodsCodeModel, Integer> implements IGoodsCodeService { @Autowired @Required public void setGoodsCodeDao(IGoodsCodeDao dao) { setDao(dao); } @Autowired @Required public void setGoodsService(IGoodsService goodsService) { this.goodsService = goodsService; } } ``` * **setGoodsCodeDao方法:**用于注入IGoodsCodeDao實現,此處直接委托給setDao方法; * **setGoodsService方法:**用于注入IGoodsService實現。 Service層到此就修改完畢,其他地方無需修改。 ### 12.5.5? 表現層變化 類似于數據訪問層和業務邏輯層修改,對于表現層配置文件直接刪除,通過在action實現類頭上添加“@Controller”來定義action實現Bean,并通過注解@Autowired來完成依賴注入。 1、? 刪除表現層所有Spring配置文件(cn/javass/point/web): ``` cn/javass/point/web/pointShop-admin-servlet.xml cn/javass/point/web/pointShop-front-servlet.xml ``` 2、修改表現層管理模塊的cn.javass.point.web.admin.action.GoodsAction,在該類上添加@Controller注解來進行表現層Bean定義,且作用域為“prototype”: ``` @Controller("/admin/goodsAction") @Scope("prototype") public class GoodsAction extends BaseAction { private IGoodsService goodsService; @Autowired @Required public void setGoodsService(IGoodsService goodsService) { this.goodsService = goodsService; } } ``` * **setGoodsService方法:**用于注入IGoodsService實現。 3、修改表現層管理模塊的cn.javass.point.web.admin.action.GoodsCodeAction,在該類上添加@Controller注解來進行表現層Bean定義,且作用域為“prototype”: ``` @Controller("/admin/goodsCodeAction") @Scope("prototype") public class GoodsCodeAction extends BaseAction { @Autowired @Required public void setGoodsCodeService(IGoodsCodeService goodsCodeService) { this.goodsCodeService = goodsCodeService; } @Autowired @Required public void setGoodsService(IGoodsService goodsService) { this.goodsService = goodsService; } } ``` * **setGoodsCodeService方法:**用于注入IGoodsCodeService實現; * **setGoodsService方法:**用于注入IGoodsService實現。 3、修改表現層前臺模塊的cn.javass.point.web.front.action.GoodsAction,在該類上添加@Controller注解來進行表現層Bean定義,且作用域為“prototype”: ``` @Controller("/front/goodsAction") @Scope("prototype") public class GoodsAction extends BaseAction { @Autowired @Required public void setGoodsService(IGoodsService goodsService) { this.goodsService = goodsService; } @Autowired @Required public void setGoodsCodeService(IGoodsCodeService goodsCodeService) { this.goodsCodeService = goodsCodeService; } } ``` * **setGoodsCodeService方法:**用于注入IGoodsCodeService實現; * **setGoodsService方法:**用于注入IGoodsService實現。 ### 12.5.6? 其他變化 1、定義一個基于Java方法的配置類,用于加載XML配置文件: ``` package cn.javass.point; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.ImportResource; @Configuration @ImportResource( {"classpath:applicationContext-resources.xml", "classpath:cn/javass/point/dao/applicationContext-hibernate.xml", "classpath:cn/javass/point/service/applicationContext-service.xml" }) public class AppConfig { } ``` 該類用于加載零配置中一般不變的XML配置文件,如事務管理,數據源、SessionFactory,這些在幾乎所有項目中都是類似的,因此可以作為通用配置。 2、修改集成其它Web框架的通用配置,將如下配置: ``` <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:applicationContext-resources.xml, classpath:cn/javass/point/dao/applicationContext-hibernate.xml, classpath:cn/javass/point/service/applicationContext-service.xml, classpath:cn/javass/point/web/pointShop-admin-servlet.xml, classpath:cn/javass/point/web/pointShop-front-servlet.xml </param-value> </context-param> ``` 修改為如下配置: ``` <context-param> <param-name>contextClass</param-name> <param-value> org.springframework.web.context.support.AnnotationConfigWebApplicationContext </param-value> </context-param> <context-param> <param-name>contextConfigLocation</param-name> <param-value>cn.javass.point</param-value> </context-param> ``` * **contextClass:**使用notationConfigWebApplicationContext替換默認的XmlWebApplicationContext; * **contextConfigLocation:**指定為“cn.javass.point”,表示將通過掃描該類路徑“cn.javass.point”下的注解類來進行加載Bean定義。 啟動pointShop2項目,在瀏覽器輸入http://localhost:8080/pointShop2/admin/goods/list.action訪問積分商城后臺,如果沒問題說明零配置整合成功。 到此零配置方式實現SSH集成已經整合完畢,相對于基于XML方式主要減少了配置的數量和配置文件的數量。 原創內容,轉載請注明私塾在線【[http://sishuok.com/forum/blogPost/list/2553.html](http://sishuok.com/forum/blogPost/list/2553.html#7328)】
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看