SSH项目(struts+spring+hibernate)搭建_代码简化
Posted 一念成执着
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH项目(struts+spring+hibernate)搭建_代码简化相关的知识,希望对你有一定的参考价值。
在上篇讲到SSH框架的搭建后,为了有利于随时能熟练的把一个SSH的项目快速的搭建起来,我又进一步对其了解学习,对代码进行了简化,大家相互讨论学习。
为什么要简化:
如果要做一个大项目,假设项目的action层会有上千个Class类,那就要在spring配置中写上千个bean目录,上千个property,这个时候就需要简化了。
注解:
注解分为两种,一是类的注解,二是类中属性的注解
注解功能的提供也有两者,一是Spring,二是Jdk (注意:类的注解只有springframework提供的)
注解的作用:
注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:
-----------------------自动装配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也可以同时删除
以上是关于SSH项目(struts+spring+hibernate)搭建_代码简化的主要内容,如果未能解决你的问题,请参考以下文章