SSH项目(struts+spring+hibernate)搭建_代码简化

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

为何要简化spring

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

注解:框架

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

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

注解的做用:spa

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

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

-----------------------自动装配bean目录-----------------------3d

在Spring配置文件中配置注解解析器,Spring会自动的给Class类中定义的属性装配beancode

首先:在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也能够同时删除

相关文章
相关标签/搜索