[置顶] SSH网上商城环境配置—Spring框架的使用

前言


    Spring框架在SSH中属于重量级框架,用于业务逻辑类的注入,虽是用来开发服务端,但是Spring也不局限于服务端的开发。ITOO中接触了Spring,利用类名的注解来获得类的实例,在Java中也是一样的效果。


什么是Spring


    Spring是一个开源的,轻量级的Java开发框架,它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是分层架构,分层架构允许使用者选择使用组件。Spring使用基本的JavaBean来完成以前只可能有EJB完成的事情。Spring的核心是控制反转(IoC)和面向切面(AOP)。


Spring的组成模块


    Spring框架由七个模块组成,每个模块都可以单独存在,或者与其他一个或多个模块联合实现。

                                                         [置顶] SSH网上商城环境配置—Spring框架的使用_第1张图片

Spring Core

    Spring Core是Spring框架的核心容器,提供了Spring框架的基本功能。它的主要组建是BeanFactory,是工厂模式的实现。BeanFactory使用控制反转(IoC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。


Spring Context

    Spring上下文是一个配置文件,向Spring框架提供上下文信息。


Spring AOP

    SpringAOP通过配置管理特性,直接将面向界面的编程功能集成到了Spring框架中。Spring AOP模块为基于Spring的应用程序中的对象提供了事务管理服务。


Spring DAO

    JDBC DAO抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。


Spring ORM

    Spring框架嵌入了多个ORM框架,从而提供了ORM的对象关系工具,其中就包括Hibernate。


Spring Web

    Web上下文模块建立在应用程序上下文模块之上,为基于Web的应用程序提供了上下文。


Spring MVC

    MVC框架时一个全功能的构建Web应用程序的MVC实现,通过策略接口,MVC框架编程为高度可配置的。


Spring框架的核心


Ioc控制反转模式


    控制反转模式类似于设计模式中的依赖倒转原则,当我们调用一个方法或者类时,不是由我们主动创建这个类的对象,而是将这个控制权交给别人。类似于RSS订阅,以前找资源是自己在网上逛,主动去寻找。现在有了RSS订阅,我们就可以等待资源推荐,被动的接受。


    在代码中的应用是在类的注入,不是用Spring时,我们的Service调用Dao需要先new一个Dao的实例,然后进行调用,是我们主动进行的。

public class OrderService {

	//保存订单的业务层代码
	public void save(Order order) {

		OrderDao orderDao = new OrderDao();		

		orderDao.save(order);
		
	}
}

public class OrderDao extends HibernateDaoSupport{

	//Dao层的保存订单的方法
	public void save(Order order) {
		this.getHibernateTemplate().save(order);
		
	}
	
}

    

    使用了Spring后,Service类中不用实例化Dao的类,只需要在配置文件中将Dao注入到Service中即可,至于对象是如何创建,则是由Spring框架来实现。

public class OrderService {
	private OrderDao orderDao;

	public void setOrderDao(OrderDao orderDao) {
		this.orderDao = orderDao;
	}

	//保存订单的业务层代码
	public void save(Order order) {
		orderDao.save(order);
		
	}
}

public class OrderDao extends HibernateDaoSupport{

	//Dao层的保存订单的方法
	public void save(Order order) {
		this.getHibernateTemplate().save(order);
		
	}
	
}


面向切面(AOP)


    我们平常用的OOP开发方式,是将数据和对数据的操作紧密结合,作为一个整体对象。AOP的经典例子是日志服务的添加,例如,我们用OOP的方式来实现信息查询,但是我们还想记录谁来进行过查询,这样就需要在OOP中的每个实现类添加日志记录的服务,也就是日志记录的服务和每个实现类紧密耦合,这也违背了面向对象开发的本义。所以就有了AOP,它将日志记录的服务拿出来,只对每个对象拦截,进行日志记录,这样实现类就不需要知道日志记录服务的存在了。

                                                                                 [置顶] SSH网上商城环境配置—Spring框架的使用_第2张图片


Spring使用


1、引入Jar包

    Spring3.2 开发最基本jar包
        spring-beans-3.2.0.RELEASE.jar
        spring-context-3.2.0.RELEASE.jar
        spring-core-3.2.0.RELEASE.jar
        spring-expression-3.2.0.RELEASE.jar
        com.springsource.org.apache.commons.logging-1.1.1.jar
        com.springsource.org.apache.log4j-1.2.15.jar

    AOP开发
        spring-aop-3.2.0.RELEASE.jar
        spring-aspects-3.2.0.RELEASE.jar
        com.springsource.org.aopalliance-1.0.0.jar
        com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

    Spring Jdbc开发

        spring-jdbc-3.2.0.RELEASE.jar

        spring-tx-3.2.0.RELEASE.jar


    Spring事务管理
        spring-tx-3.2.0.RELEASE.jar


    Spring整合其他ORM框架
        spring-orm-3.2.0.RELEASE.jar


    Spring在web中使用
        spring-web-3.2.0.RELEASE.jar


    Spring整合Junit测试
        spring-test-3.2.0.RELEASE.jar


2、配置文件配置


在Web.Xml中配置Spring核心监听器,用来监听对于一个Java对象的方法调用或属性改变。

 <!-- 配置Spring的核心监听器 -->
 <listener>
 	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>
 
 <context-param>
 	<param-name>contextConfigLocation</param-name>
 	<param-value>classpath:applicationContext.xml</param-value>
 </context-param>


配置log4j.properties,主要是做日志记录,就像ITOO中引用的log4net.dll

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=info, stdout


a pplicationContext.Xml中配置Spring的注解

<?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:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
	http://www.springframework.org/schema/beans/spring-beans.xsd
	http://www.springframework.org/schema/context
	http://www.springframework.org/schema/context/spring-context.xsd
	http://www.springframework.org/schema/aop
	http://www.springframework.org/schema/aop/spring-aop.xsd
	http://www.springframework.org/schema/tx 
	http://www.springframework.org/schema/tx/spring-tx.xsd">

	<!-- Action的配置 ===========================-->
	
	<!-- 首页访问的Action -->
	<bean id="indexAction" class="cn.itcast.shop.index.action.IndexAction" scope="prototype">
		<property name="categoryService" ref="categoryService"/>
		<property name="productService" ref="productService"/>
	</bean>
	
	
	<!-- Service的配置  ===========================-->
	
	<!--后台登录的Service-->
	<bean id="adminUserService" class="cn.itcast.shop.adminuser.service.AdminUserService">
		<property name="adminUserDao" ref="adminUserDao"/>
	</bean>
	
	
	<!-- Dao的配置  ===========================-->
	
	<!--后台登录的Dao-->
	<bean id="adminUserDao" class="cn.itcast.shop.adminuser.dao.AdminUserDao">
		<property name="sessionFactory" ref="sessionFactory"/>
	</bean>
</beans>


总结


    进入Java学习的第一个项目,对于什么东西的了解都还很浅,很浅,只能停留在表面上,没有办法深入。对这些技术的理解也仅限于在原理上,还是需要在实践中用。在做这个 项目的过程中,查了很多东西,发现自己不是懂得太少,而是知道的太少。就像别人用了很长时间的技术,知道的越早,越是有利。





你可能感兴趣的:([置顶] SSH网上商城环境配置—Spring框架的使用)