ssh项目搭建后的简化

SSH项目搭建后的简化

  上次说完ssh框架的搭建,这个框架本身没什么问题,但可以通过使用spring注解来使代码更加简洁、提高阅读性。

  一、在原来的框架上简化了以下几点:

    1. 原来的属性set注入改为注解

    2. 原来的Connection(连接数据库)包改为jdbc.properties文件配置

    3.由于加入hibernate之后我们不需要创建数据库,但是向数据库里插入数据还是得自己写,以下就是插入语句:

 insert into news(title,content,begintime,username) values(‘XX‘,‘XX...‘,‘2012-03-01‘,‘xiaowen‘);
 insert into news(title,content,begintime,username) values(‘XX‘,‘XX...‘,‘2012-03-02‘,‘xiaohong‘);
 insert into news(title,content,begintime,username) values(‘XX‘,‘XX...‘,‘2012-03-03‘,‘xiaochen‘);

  

  二、首先来看看原来的applicationContext.xml文件中的部分配置。

<bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype">
    <property name="is" ref="myIndexService"></property>
</bean>

<bean id="myIndexService" class="ssh.service.IndexServiceImpl" scope="prototype">
    <property name="id" ref="myIndexDao"></property>
</bean>

<bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype">
    <property name="sf" ref="mySessionFactory"></property>
</bean>

从以上代码可以看出来,action控制层访问的是service业务层,而service业务层则是访问dao数据层。

每个类有什么属性要注入都显得非常明显,所以现在要做的就是把applicationContext.xml配置文件进行简化。

接着我们把applicationContext.xml文件中的代码简化成如下代码

  <bean id="myIndexAction" class="ssh.action.IndexAction" scope="prototype"></bean>

  <bean id="myIndexService"class="ssh.service.IndexServiceImpl" scope="prototype"></bean>

  <bean id="myIndexDao" class="ssh.dao.IndexDaoImpl" scope="prototype"></bean>  

      在这里只是绑定了每个bean,并没有为其注入属性。其实是用到了Spring的@Autowired和@Qualifier这两个注解。

   //属性的注解
    @Autowired
    @Qualifier("mySessionFactory")
    private SessionFactory sf;

在Qualifier注解中我们申明其引用的是哪一个bean,Spring 便会自动为其注入这个实例,并且可以省略属性的set方法。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xmlns:p="http://www.springframework.org/schema/p"
    xmlns:aop="http://www.springframework.org/schema/aop" 

xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jee="http://www.springframework.org/schema/jee" 

xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="
            http://www.springframework.org/schema/aop 

http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
            http://www.springframework.org/schema/beans 

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
            http://www.springframework.org/schema/context 

http://www.springframework.org/schema/context/spring-context-4.2.xsd
            http://www.springframework.org/schema/jee 

http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
            http://www.springframework.org/schema/tx 

http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">

    <!-- 基于ssh这个包自动扫描其中的类 ,也会自动注入解析器-->
    <context:component-scan base-package="ssh"></context:component-scan>

    <!-- 引入外部属性文件 -->
    <context:property-placeholder location="classpath:jdbc.properties" />

    <bean id="mySessionFactory"
        class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
    </bean>

    <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

    </bean>

</beans>

从上面的applicationContext.xml文件中的代码我们可以看到配置文件没有对Java bean 进行相关配置, 但多了一行代码:

<context:component-scan base—package="ssh"></context:component-scan>,通过这个节点的base-package属性可以配置Spring需要自动注入的哪个基包。

接下来我们使用spring注解来对类进行注解: @Controller action层 、  @Service service层 、  @Repository dao层;

//action类的类注解
@Controller("myIndexAction")
@Scope("prototype")
public class IndexAction extends ActionSupport {
  //使用spring内置注解@Autowired自动注入实例
    @Autowired
  //@Qualifier("myIndexService")
    private IndexService is;

//Service类的类注解
@Service("myIndexService")
@Scope("prototype")
public class IndexServiceImpl implements IndexService {
  //使用spring内置注解@Autowired自动注入实例
    @Autowired
  //@Qualifier("myIndexDao")
    private IndexDao id;

//dao类的类注解
@Repository("myIndexDao")
@Scope("prototype")
public class IndexDaoImpl implements IndexDao {
  //使用spring内置注解@Autowired自动注入实例
    @Autowired
  //@Qualifier("mySessionFactory")
    private SessionFactory sf;

@Controller("myIndexAction")相当于applicationContext.xml配置文件中的bean节点 ,而括号中的值相当于bean节点中的id属性值。

则注解 @Scope("prototype")相当于applicationContext.xml文件中bean节点中scope属性,这个非单例 模式注解十分重要,主要起到线程安全,防止并发操作时出现异常的作用。

三、src目录下配置jdbc.properties(外部属性文件)

<!-- mysql数据库 -->jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/news
jdbc.user=root
jdbc.password=123456

<-- oracle数据库 -->
#oracle
jdbc_oracle.driver=oracle.jdbc.driver.OracleDriver
jdbc_oracle.url=jdbc:oracle:[email protected]:1521:orcl
jdbc_oracle.user=news
jdbc_oracle.password=123456

这样整个简化就完成了,如果有什么地方遗漏了欢迎大家补充

时间: 2024-10-19 05:59:48

ssh项目搭建后的简化的相关文章

maven之ssh项目搭建

1:新建maven-archetupe-webapp项目 2:web.xml配置文件如下 <?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2

ssh项目搭建(有相同错误)

原文摘自:ruoya502  http://blog.sina.com.cn/s/blog_6870d1e00100jvwl.html 第一个做SSH集成的开发,很多都还不熟悉,这里就先写下第一个自己完成的SSH框架搭建的过程吧.第一步:新建一个web project.Myeclipse中加入Spring capability.这个过程会加入Spring的配置文件,并自动加载Myeclipse自带的Spring jar包.如果不想用自带的,可以在build path中删除,再把Spring的ja

SSH项目搭建(五)——web.xml文件配置

上一章写到pom.xml有一个报错,说找不到web.xml文件.确实是这样的,因为我们用maven搭建的web层里就是没有这个文件.我们能看到,webapp文件夹里是空的. 没有,就想办法把它弄出来. 一.右键项目>>>>Java EE Tools>>>>Generate Deployment Descriptor Stub 然后就出来了. 参考:https://www.cnblogs.com/pjlhf/p/8782651.html 二.在webapp目录

SSH基本框架搭建后的简化

对于SSh框架的简化,我们可以从下面几个方面来剖析: 1.实体类entity:在这里我们需要将数据库和实体类进行关联,在简化之前,我们需要在entity包里面加入一份.xml配置文件 例如原码----> 而在简化之后就不需要这份.xml文件,可以直接删除.我这里暂时没有自己项目简化后的截图, 所以只能在其他地方找了一些,自己做了一些解释 当然在图上的现在写的还是比较简单基础的,,对于其他的外键以及关联主键和各个数据类型字段的描述还没有. 2.对于类注解,我的理解就是让我们知道这个类是干什么的,

ssh搭建后的简化

简单来说就是把applicationcontext.xml这份配置文件里面的bean都换成了相应的注解,大大的减少了代码量,提高代码的可阅读性 例子源码:http://pan.baidu.com/s/1o7R5S8q 例如: 平时我们都要在applicationcontext.xml这份配置文件里面的实例化对象,给对象的属性注入值啊这些的 你们是不是觉得这样写起来很麻烦呢? 那现在我们就开始教大家如何使用注解,把这一堆烦人的代码统统去掉吧 在使用注解之前,我们首先要先在applicationco

SSH项目搭建(三)——Maven多模块搭建项目

多模块开发,大致的思想就是把一个项目按某种方式分成多个模块,再把模块们连接成一个整体,我们在开发的时候,可以很清晰的操作每一个模块,可以大大提高开发的效率. Java web项目,最常见的就是按代码的作用分层开发,这和SSH框架有相互契合的思想: po.vo层--模型层 dao层--数据库访问层(Hibernate)--其代码的作用一定是操作数据库,而Hibernate的作用就是方便我们操作数据库的 service层--业务逻辑层(Spring)--其代码的作用一定是对业务逻辑的处理,而Spri

SSH项目搭建总结

1     struts2 和 spring 集成,action交给spring管理,action由spring初始化,action默认作用域(scope)为单利模式,ioc容器只初始化一个该action,作用域为prototype(原型)模式,每次请求该action,都会初始化一次. 由于调试不成功(修改action的内容,再次访问该action,报错找不到对应的action或者result),tomcat 以debug模式启动,以为struts.devMode=true不起作用,原来是因为a

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

在上篇讲到SSH框架的搭建后,为了有利于随时能熟练的把一个SSH的项目快速的搭建起来,我又进一步对其了解学习,对代码进行了简化,大家相互讨论学习. 为什么要简化:  如果要做一个大项目,假设项目的action层会有上千个Class类,那就要在spring配置中写上千个bean目录,上千个property,这个时候就需要简化了. 注解: 注解分为两种,一是类的注解,二是类中属性的注解 注解功能的提供也有两者,一是Spring,二是Jdk    (注意:类的注解只有springframework提供

转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)

原文地址:http://blog.csdn.net/yeohcooller/article/details/9316923 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hibernate,整合Spring.最后总结如何熟练创建SSH项目. 仅是创建SSH项目,对于其他的扩展例如Struts的国际化,Hibernate的缓存优化,Spring的AOP等,本博文涉及不到.想学习更多的东西请搜索其他博文. 本项目的环境:Windows 8-64位