SSH項目(struts+spring+hibernate)搭建_代碼簡化


  在上篇講到SSH框架的搭建后,為了有利於隨時能熟練的把一個SSH的項目快速的搭建起來,我又進一步對其了解學習,對代碼進行了簡化,大家相互討論學習。

為什么要簡化

  如果要做一個大項目,假設項目的action層會有上千個Class類,那就要在spring配置中寫上千個bean目錄,上千個property,這個時候就需要簡化了。

注解:

  注解分為兩種,一是類的注解,二是類中屬性的注解

  注解功能的提供也有兩者,一是Spring,二是Jdk    (注意:類的注解只有springframework提供的)

注解的作用:

  注解,從名字上看是注釋,解釋。但功能卻不僅僅是注釋那么簡單。注解(Annotation) 為我們在代碼中添加信息提供了一種形式化的方法,是我們可以在稍后 某個時刻方便地使用這些數據(通過 解析注解 來使用這些數據),常見的作用有以下幾種:

1.生成文檔。這是最常見的,也是java 最早提供的注解。常用的有@see @param @return 等;
2.跟蹤代碼依賴性,實現替代配置文件功能。比較常見的是spring 2.5 開始的基於注解配置。作用就是減少配置。現在的框架基本都使用了這種配置來減少配置文件的數量;
3.在編譯時進行格式檢查。如@Override放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出;
 
 
 
在這里,有三種不同的簡化,我將講第三種配置實現最簡單化,讓代碼徹底跟spring耦合一起。

-----------------------自動裝配bean目錄-----------------------

在Spring配置文件中配置注解解析器,Spring會自動的給Class類中定義的屬性裝配bean

首先:在applicationContext.xml中加入自動掃描包:<context:component-scan base-package="news"></context:component-scan>

 

 

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

注解@Autowired和@Qualifier("bean的名稱")

@Autowired   需要導入:import org.springframework.beans.factory.annotation.Autowired;(spring包自帶的)

默認按類型匹配,自動裝配,可以寫在成員屬性上

public class NewsDaoImpl implements NewsDao {
	
	@Autowired
     @Qualifier("mySessionFactory") private SessionFactory sf; }

 

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

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

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

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

@Scope("prototype")     注意:spring 默認scope 是單例模式這樣只會創建一個Action對象每次訪問都是同一個Action對象,scope="prototype" 可以保證 當有請求的時候 都創建一個Action對象

 

以下是特殊的(一個bean目錄):

@Controller
@Controller(“Bean的名稱”)

@Controller
@Scope("prototype")
public class NewsAction extends ActionSupport {
	@Autowired
	private NewsService ns;
}

 

@Repository

@Repository(“Bean的名稱”)

@Repository
@Scope("prototype")
public class NewsDaoImpl implements NewsDao {
        @Autowired
	private SessionFactory sf;
}

 

@Service

@Service(“Bean的名稱”) 

@Service
@Scope("prototype")
public class NewsServiceImpl implements NewsService {
    @Autowired
    private NewsDao nd;
}

  

簡化:配置好后,Class類中屬性的setter方法可以刪除,配置文件中Bean包括property也可以同時刪除


 


免責聲明!

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



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