SSH框架使用注解后的簡化


注釋的優勢:

    1.最簡單直接的優勢就是減少了配置文件的代碼量。

    2.注釋和Java代碼位於一個文件中,而XML 配置采用獨立的配置文件。配置信息和 Java 代碼放在一起,有助於增強程序的內聚性。而采用獨立的XML 配置文件,程序員在編寫一個功能時,往往需要在程序文件和配置文件中不停切換,這種思維上的不連貫會降低開發效率。

 SSH 注解組合使用: 

    

這里我推薦用最后一種。

 

我們在使用注解前先要在applicationContext.xml文件中加入

<!-- 自動掃描包,也會自動注入解釋器,所以不需要 context:annotation-config -->
    <context:component-scan base-package="news"></context:component-scan>

 

去掉 context:annotation-config 和用來注入的bean和property

復制代碼
<!-- 原理:自動注入processor解析器,用來解析注解 -->
    <!-- <context:annotation-config/> -->

<bean id="myNewsAction" class="news.action.NewsAction" scope="prototype">
  <property name="ns" ref="myNewsService"></property>
</bean>

<bean id="myNewsService" class="news.service.NewsServiceImpl" scope="prototype">
  <property name="nd" ref="myNewsDao"></property>
</bean>

<bean id="myNewsDao" class="news.dao.NewsDaoImpl" scope="prototype">
  <property name="sf" ref="mySessionFactory" />
</bean>
復制代碼

 

然后我們在 Action  Service  Dao 類加入對應的注解@Controller@Service@Repository

導入對應包 import org.springframework.stereotype.Controller(Repository  Service);

雖然這些只是規范,不對應寫也沒關系,不過養成良好的代碼習慣比較好,建議大家都要這樣寫。

 

這里我就不一一舉例了,我們只拿Action舉例:

先找到Action類在前面加注解:

@Controller("注入實例的名字")如果不寫默認自動找到對應action類名稱首字母改為小寫

當我們不寫的時候注意struts.xml中把class也改成默認名字:

<action name="NewsAction_*" class="默認名字" method="{1}">

@Scope("prototype")非單例 注意:這個如果不寫單獨運行並不會報錯,多人訪問就會報錯。

 

 然后我用注釋進一步簡化 Action  Service  Dao 類,去掉里面set方法。

我們只需要在聲明變量的前面加注解@Autowired和@Qualifier("bean的名稱")

需要導入這兩個包:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

@Autowired可以單獨使用,默認情況下使用 @Autowired 注解會自動注入,Spring 容器中匹配的候選 Bean 數目必須有且僅有一個。當找不到一個匹配的 Bean 時,Spring 容器將拋出BeanCreationException 異常,並指出必須至少擁有一個匹配的。所以我們通過 @Qualifier 注釋指定注入 Bean 的名稱,這樣就可以解決異常。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM