Struts註解說明
@ParentPackage(value)
指定action屬於哪個包 指定的包必須是struts.xml文件中已經存在的
@Namespace(value)
命名空間,頁面訪問後臺路徑的一部分,位於項目路徑後
@Action
指定action的名稱,作爲路徑的一部分,在命名空間之後
比如,一個完整的路徑爲 :
http://localhost:8080/ISearch/register.do?method=register
其中 http://localhost:8080/ISearch 爲項目路徑
“/” 爲命名空間 register 爲action名稱 .do爲action後綴 (在struts.xml文件中配置),?表面後面是有參數的 method爲參數名稱,register是參數的值
@Results(value={@Result(name=”success”,location=”/admin/jsp/site/reader.jsp”)})
指定跳轉的內容,其中value的值是一個跳轉的集合,在action的方法中 返回值爲String類型時,返回值即是要指定跳轉的名稱
Spring註解說明
@Autowired
Spring
通過一個 BeanPostProcessor 對 @Autowired 進行解析,所以要讓 @Autowired 起作用必須事先在
Spring 容器中聲明 AutowiredAnnotationBeanPostProcessor Bean,如下:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
這樣將會在項目中對標註 @Autowired 的 Bean 進行自動注入
@Autowired註解可以簡單理解爲setter方法,它可用於構造器或成員變量
比如使用 UserDAO 只需在類的Fields中聲明
@Autowired
private UserDAO userDAO;
就可以了 不需要再初始化userDAO
@Resource(name=”sessionFactory”)
相當於配置文件中的ref=”sessionFactory”
其作用跟@Autowired是相同的 只不過@Resource的name指定的是注入的bean的name,而@Autowired是按bean的類型注入
@PostConstruct
該註解作用於方法,在bean被實例化之後即調用該方法
@Required註解適用於bean屬性的setter方法
@Component
是一個通用註解,作用於類 即將該類定義爲Spring的bean
@Repository、@Service和 @Controller是對@Component的具體化,其作用和地位是完全相同的
@Repository通常用於註解DAO類,即持久層
@Service通常用於註解Service類,即服務層,業務操作都寫在這
@Controller通常用與Controller類,即控制層
要使依賴註解定義的bean生效,必須在spring配置文件中聲明:
<context:component-scan base-package="com.aegis.isearch.model.dao.impl,com.aegis.isearch.controller.service.impl"
annotation-config="true" />
即spring將掃描指定包下所有類 將指定了@Repository、@Service和 @Controller @Component註解的類定義爲spring的bean
多個包路徑之間用逗號分隔
Hibernate註解
在spring配置文件中的sessionFactory的定義中,sessionFactory的類必須使用
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean註解才能生效。
<property name="packagesToScan">
<list>
<value>com.aegis.isearch.model.beans</value>
</list>
</property>
sessionFactory的packagesToScan指定了需要掃描的包,只有在指定包下的類使用的註解纔有效
@Bean
作用於類,指定該類爲一個持久化的實體
@Id
作用於field,指定實體的標識
@Transient
作用於field,指定的field不被持久化
@Column
作用於field,指定該field被持久化時的一些具體屬性,如nullable 是否可以爲空,unique 是否唯一等,name屬性指定了對應數據庫中的列名,如果不設置該屬性,將使用field的name作爲數據庫中列的名稱
@ManyToOne @OneToOne @ManyToMany
指定與其他對象的外鍵映射關係,targetEntity屬性指定了引用的對象,該對象也必須是持久化的。
@JoinColumn @JoinColumns
在外鍵映射中指定引用外鍵的列,如果不指定Hibernate將會自動分配列名