在上篇讲到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. Error: Cannot open main configuration file '//start' for reading! 解决办法

    当执行service nagios start启动nagios时,报错:Error: Cannot open main configuration file '//start' for reading ...

  2. 第8章 BOM

    8.1 window对象 window有双重的角色,既可以通过JavaScript访问浏览器窗口的接口,又是ECMAScript规定的Global对象. 全局作用域中声明的变量.函数都会变成windo ...

  3. myBatis,Spring,SpringMVC三大框架ssm整合模板

    整合步骤 创建web工程 导入整合所需的所有jar包 编写各层需要的配置文件 1) mybatis的全局配置文件 <configuration>    <!-- 批量别名的设置 -- ...

  4. javac 命令出现 找不到文件 问题及解决办法

    如果环境配置好了,使用java -version回车可以正常查看到版本信息. 使用javac Demo.java 如果提示文件找不到 可能原因1: 源文件与当前命令行不在同目录下,这时候就要切换到同一 ...

  5. php emoji处理微信表情

    使用 https://github.com/iamcal/php-emoji 添加下面的函数到代码中 function utf8_bytes($cp){ if ($cp > 0x10000){ ...

  6. 05 Apache Solr: 管理员界面(Admin UI)

         为了方便管理员和工程师调整Solr的配置和访问在线文档和其他的帮助,Solr提供了一个Web界面去查看Solr的配置详情,运行查询语句和分析文档字段.这个界面在第三篇里面提到过就是管理员界面 ...

  7. 做webapp静态页面的一些积累

    ​1)根据pad,手机不同的版本的屏幕大小设置字体的大小(可以使用此方式根据屏幕的不同进行设置,由于我左边的图片是设置的float='left',使用的是img标签的百分比来显示图片) (使用此方式, ...

  8. Coursera Machine Learning: Regression 证书

  9. 小米Git

    这个题目的意思其实就是要分别从根节点开始遍历(dfs)到给定的两个点,然后从得出的路径中获取最早相同的点即为结果.   class Solution { public: /** * 返回git树上两点 ...

  10. gulp插件gulp-ruby-sass和livereload插件

    gulp-ruby-sass是gulp的一个插件,主要是用来实现sass编译,livereload插件主要是实现文件保存时浏览器自动刷新,避免了手动f5的频繁的操作 准备工作:chrome浏览器安装l ...