第一步:引入注解的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") 指定父包
在程序要执行的方法上或者execute()方法上放上@Action(value="这里面放的是之前struts.xml的action的name值,也是请求对应的页面地址action里面的值")
案例:@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都可以不要了
关于事务的也可以删掉,但不可以删掉事务管理器
然后在下面添加
<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 SessionFactorysessionFactory;
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中将
改成
至此SSH的注解式就全部改完了。
附上案例地址:
链接:http://pan.baidu.com/s/1o8DgTuE 密码:qnpj 这个demo使用 的jdk是1.7的 tomcat是6.0的