zoukankan      html  css  js  c++  java
  • SSH项目(struts+spring+hibernate)搭建_代码简化

      在上篇讲到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也可以同时删除


     

  • 相关阅读:
    实现自动更新文件
    IP零碎知识总结
    有关数据库操作的一些函数
    AppConfig有关零碎知识
    将文件上传到数据库 和 从数据库下载文件到本地
    如何学习编程
    像素、英寸、厘米之间的换算关系
    局域网
    JSP基础知识
    Exchange a,b without using other variables
  • 原文地址:https://www.cnblogs.com/hww123/p/5967672.html
Copyright © 2011-2022 走看看