@ParentPackage
:定父包@Namespace
:指定命名空间@Results
:一组结果的数组@Result(name="success",location="/msg.jsp")
: 一个结果的映射(注意没有s)@Action(value="login")
:指定某个请求处理方法的请求URL。注意,它不能添加在Action类上,要添加到方法上。@ExceptionMappings
:一级声明异常的数组@ExceptionMapping
: 映射一个声明异常@Entity
:声明实体bean,每一个持久化POJO类都是一个实体bean,这可以通过在类的定义中使用@Entity注解来进行声明: @Id
:注解则声明了该实体bean的标识属性,对应相应表使用id列作为主键列 @Table
:是类一级的注解, 通过@Table注解可以为实体bean映射指定表(table),目录(catalog)和schema的名字. 如果没有定义@Table,那么系统自动使用默认值:实体的短类名(不附带包名). @Transient
:实体bean中所有的非static非transient的属性都可以被持久化, 除非你将其注解为@Transient,所有没有定义注解的属性等价于在其上面添加了@Basic注解. @GeneratedValue
:定义该标识符的生成策略 @OneToOne
注解可以建立实体bean之间的一对一的关联. @ManyToOne
注解来定义多对一关联…… 更多内容请参见参考文档
@Component/@Repository/@Service/@Controller
就是将这个对象作为Bean注册进Spring容器。也可以在中指定多个包,如:<context:component-scan base-package="cn.gacl.dao.impl,cn.gacl.service.impl,cn.gacl.action"/>
示例注解
@Component
:所有受Spring 管理组件的通用形式,不推荐使用@Controller
:对应表现层的Bean,也就是Action @Scope("prototype")
:表示将Action的范围声明为原型。可以利用容器的scope=”prototype”来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题。spring 默认scope 是单例模式(scope=”singleton”),这样只会创建一个Action对象,每次访问都是同一Action对象,数据不安全,struts2 是要求每次次访问都对应不同的Action,scope=”prototype” 可以保证当有请求的时候都创建一个Action对象@Service
:对应的是业务层Bean@Repository
:对应数据访问层BeanUserAction
中要用到UserServiceImpl
中的方法,最初的方法是在UserAction
中通过UserService userService = new UserServiceImpl;
需要时就new出来,控制权在自己手里,但是使用spring后,UserAction就不用主动去创建UserServiceImpl的实例了,创建UserServiceImpl实例已经交给Spring来做了,Spring把创建好的UserServiceImpl实例给UserAction,UserAction拿到就可以直接用了。UserAction由原来的主动创建UserServiceImpl实例后就可以马上使用,变成了被动等待由Spring创建好UserServiceImpl实例之后再注入给UserAction,UserAction才能够使用。这说明UserAction对UserServiceImpl类的”控制权”已经被“反转”了原文地址:http://blog.csdn.net/heweirun_2014/article/details/46274011