在上篇讲到SSH框架的搭建后,为了有利于随时能熟练的把一个SSH的项目快速的搭建起来,我又进一步对其了解学习,对代码进行了简化,大家相互讨论学习。

为什么要简化:

  如果要做一个大项目,假设项目的action层会有上千个Class类,那就要在spring配置中写上千个bean目录,上千个property,这个时候就需要简化了。

注解:

  注解分为两种,一是类的注解,二是类中属性的注解

  注解功能的提供也有两者,一是Spring,二是Jdk    (注意:类的注解只有springframework提供的)

注解的作用:

  注解,从名字上看是注释,解释。但功能却不仅仅是注释那么简单。注解(Annotation) 为我们在代码中添加信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据),常见的作用有以下几种:

1.生成文档。这是最常见的,也是java 最早提供的注解。常用的有@see @param @return 等;
2.跟踪代码依赖性,实现替代配置文件功能。比较常见的是spring 2.5 开始的基于注解配置。作用就是减少配置。现在的框架基本都使用了这种配置来减少配置文件的数量;
3.在编译时进行格式检查。如@Override放在方法前,如果你这个方法并不是覆盖了超类方法,则编译时就能检查出;
 
 
 
在这里,有三种不同的简化,我将讲第三种配置实现最简单化,让代码彻底跟spring耦合一起。

-----------------------自动装配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)搭建_代码简化的更多相关文章

  1. SSH(struts+spring+hibernate)常用配置整理

    SSH(struts+spring+hibernate)常用配置整理 web.xml配置 <?xml version="1.0" encoding="UTF-8&q ...

  2. 用eclipse搭建SSH(struts+spring+hibernate)框架

    声明: 本文是个人对ssh框架的学习.理解而编辑出来的,可能有不足之处,请大家谅解,但希望能帮助到大家,一起探讨,一起学习! Struts + Spring + Hibernate三者各自的特点都是什 ...

  3. Spring学习8-用MyEclipse搭建SSH框架 Struts Spring Hibernate

    1.new一个web project. 2.右键项目,为项目添加Struts支持. 点击Finish.src目录下多了struts.xml配置文件. 3.使用MyEclipse DataBase Ex ...

  4. SSH(Struts Spring Hibernate开发框架)

    Spring(Model) Spring的核心思想是IoC和AOP,Spring使得管理对象更加方便,极大的降低组件之间的耦合度,实现了软件各层之间的解耦. Struts(View) 使用Struts ...

  5. SSH(Struts+spring+hibernate)配置

    1.spring和struts 1)web.xml 配置spring的ContextLoaderListener(监听器) 配置Struts的StrutsPrepareAndExecuteFilter ...

  6. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    [SSH进阶之路]Struts + Spring + Hibernate 进阶开端(一) 标签: hibernatespringstrutsssh开源框架 2014-08-29 07:56 9229人 ...

  7. Struts+Spring+Hibernate进阶开端(一)

    入行就听说SSH,起初还以为是一个东西,具体内容就更加不详细了,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本原理与思想,总算接 ...

  8. Struts + Spring + Hibernate 进阶开端(一)

    Long Long ago,就听说过SSH,起初还以为是一个东东,具体内容更是不详,总觉得高端大气上档次,经过学习之后才发现,不仅仅是高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基 ...

  9. Struts+Spring+Hibernate项目的启动线程

    在Java Web项目中,经常要在项目开始运行时启动一个线程,每隔一定的时间就运行一定的代码,比如扫描数据库的变化等等.要实现这个功能,可以现在web.xml文件中定义一个Listener,然后在这个 ...

随机推荐

  1. 需要交互的shell编程——EOF(转载)

    在shell编程中,”EOF“通常与”<<“结合使用,“<<EOF“表示后续的输入作为子命令或子shell的输入,直到遇到”EOF“, 再次返回到主调shell,可将其理解为分 ...

  2. 非正常关闭myeclicps后,出现错误Errors occurred during the build.的解决方法

    我的myeclicps是10.7版本由于非正常关闭,在启动tomcat时候出现了问题. 解决法案: 1.关闭myeclicps. 2.打开你的myeclicps的工作空间(workspace自己设置的 ...

  3. LINUX退出当前进程——比较return、exit()

    1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了正常退出和异常退出两种. 1>正常退出 a. 在main()函数中执行return . b.调用exi ...

  4. 2.struts2访问web资源(在struts2中获取session,request等等)

    什么是web资源:web资源就是指request,response,session,servlet的api 为什么需要访问web资源:因为图片上传,需要获取图片的目录,就需要通过action来访问we ...

  5. StaticPagedList

    估计是因为水平原因,之前看别人写的用pagedList分页,老是云里雾里的.下面把自己写的整理一下放在上面.这里的List为对应页面展示的内容.不用查询所有. Action: public Actio ...

  6. ajax实现jsonp跨域接口

    HTML页面代码: <script type="text/javascript"> function UrlSearch(){ var name,value; var ...

  7. Observer(观察者)-对象行为型模式

    1.意图 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 2.别名 依赖(Depenents),发布-订阅(Publish-subscribe ...

  8. android之handle

    Android中异步消息处理主要由四个部分组成,Message.handler.messageQueue和looper. 1.message message是线程之间传递的消息,他可以在内部携带少量的 ...

  9. python之 list、tuple、dict、set

    2016-08-24   14:32:59 list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 例如:定义一个列表L,里面存放了一些姓氏 ...

  10. 第三章 centos安装git

    yum install git 安装后的默认存放地点/usr/bin/git