SSH全註解式開發
第一步:引入註解的jar包 struts2-convention-plugin-2.3.16.3.jar
struts2的註解
Struts2:替換掉struts.xml檔案
在Action類的上面放上:
替換掉struts.xml裡面的namespace: @Namespace("") 例如:namespace: @Namespace("/test")
在namespace下面放上@ParentPackage("struts-default") 指定父包
案例:@Action(value="query",results={@Result(name="success",type="Dispatcher",location="/welcome.jsp")})
如果返回值是success 則result裡面的name可以不寫,如果跳轉是Dispatcher ,可以不寫type,如果有引數要傳遞,可以加param
Spring的註解:
Action、service、dao三層 在spring.xml配置的bean都可以不要了
關於事務的也可以刪掉,但不可以刪掉事務管理器
然後在下面新增
<!--元件掃描器 action、service、dao裡面物件的注入到依賴掃描器-->
<context:component-scanbase-package="com.bjpowernode.*"></context:component-scan>
<!--事務註解驅動 -->
<tx:annotation-driventransaction-manager="transactionManager"/>
開始深入到dao、service、action類裡面去寫spring的註解
Dao層:(直接在實現類上寫,介面上不寫)
在class上放上@Repository(" ")
例如:@Repository("studentDao")
給class的域屬性新增@Aurowired自動注入 這裡一般都是注入sessionFactory
例如:@Autowired
private
service層
Spring IOC部分
在class上放上@Service("")
例如:@Service("studentService")
在class的域屬性上放上注入註解標籤
@Resource
@Autowired
這兩種都可以,
Action層:
在action類的上面放上@Component表示它是spring的元件
在class的域屬性上放上@Autowired讓spring通過type來自動注入
注意:如果在注入域屬性的時候使用byName的方式
則寫法應該這樣寫
@Autowired
@Qualifier("studentService")//byName方式自動注入
private IStudentServiceservice;
這裡引號裡面放的是所要引入域屬性類的註解裡面的名字。
Spring事務的註解(加在service層)
@Transactional(isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED)註解標籤。
當isolation=Isolation.DEFAULT,propagation=Propagation.REQUIRED時,表示都是預設值,括號裡面也可以不寫。即@Transactional()。
刪除的方法需要加一個readOnly=true,如下
@Transactional(readOnly=true)//加上它效率會更高
Hibernate的註解
替換的是對映檔案 .hbm.xml,因此刪掉.hbm.xml檔案
在實體類的上面放上@Entity表示此類是實體類
注意:如果table預設和類名一樣,則table標籤可以不寫
在id上放上
@Id
@GeneratedValue(generator="xxx")//使用hibernate內建的生成策略
@GenericGenerator(name="xxx",strategy="native")//生成器
指定生成策略和生成器
至此Spring、struts2、hibernate的註解就配置完了,剩下來的就是要改某一些地方,
在spring.xml中將 <property name="mappingDirectoryLocations" value="classpath:com/bjpowernode/beans"/>
改成 <property name="packagesToScan" value="com.bjpowernode.beans"/>
至此SSH的註解式就全部改完了。
附上案例地址:
連結:http://pan.baidu.com/s/1o8DgTuE 密碼:qnpj 這個demo使用 的jdk是1.7的 tomcat是6.0的