註釋的優勢: 1.最簡單直接的優勢就是減少了配置文件的代碼量。 2.註釋和Java代碼位於一個文件中,而XML 配置採用獨立的配置文件。配置信息和 Java 代碼放在一起,有助於增強程式的內聚性。而採用獨立的XML 配置文件,程式員在編寫一個功能時,往往需要在程式文件和配置文件中不停切換,這種思維上 ...
註釋的優勢:
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 的名稱,這樣就可以解決異常。