SSH进阶(4)——Spring框架入门及环境搭建

来源:互联网 发布:数据分析建模方法 编辑:程序博客网 时间:2024/06/09 17:01
  上一篇我简单的介绍了一下Struts2的工作原理,本博来介绍一下Spring框架入门及环境搭建。

【Spring概念】


      Spring内部最核心的就是IOC了,动态注入,让一个对象的创建不用new了,可以自动的生产,这其实就是利用java里的反射,反射其实就是在运行时动态的去创建、调用对象,Spring就是在运行时,跟xml Spring的配置文件来动态的创建对象,和调用对象里的方法的 。 
      Spring还有一个核心就是AOP这个就是面向切面编程,可以为了某一类对象进行监控(也就是在调用这类对象的具体方法的前后去调用你想调用的指定模块),这样就可以达到对一个模块扩充的功能。
      Spring目的:就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的,简单的说,不用在代码里写死new某个对象,而是全部在配置文件中进行了配置。Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。 





【Spring三种注入方法】


1.setter


配置文件:
<!-- 用户模块的Action -->    <bean id="userAction" class="cn.itcast.shop.user.action.UserAction" scope="prototype">        <!-- 注入Service -->        <property name="userService" ref="userService"/>    </bean>  


 Action中:
private UserService userService;        public void setUserService(UserService userService) {        this.userService = userService;    } 


 

2.interface


  接口注入,之前做的机房收费系统中就是利用了接口注入ClassA在编译期即依赖于InterfaceB的实现。我们常常借助接口来将调用者与实现者分离。

3.constructor


 添加构造方法:
public class Soldier {        private String name;             public Soldier(String name) {           this.name = name;        }             public String getName() {           return name;        }    } 


 
配置文件:
  
  <bean  id="s1"  class="com.hb.Soldier"><constructor-arg  value="RANBO"></constructor-arg></bean>  


【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的核心监听器 --><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>


3.applicationContext.xml


<!-- 配置连接池: -->    <!-- 引入外部属性文件 -->    <context:property-placeholder location="classpath:jdbc.properties"/>    <!-- 配置C3P0连接池: -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="driverClass" value="${jdbc.driver}"/>        <property name="jdbcUrl" value="${jdbc.url}"/>        <property name="user" value="${jdbc.user}"/>        <property name="password" value="${jdbc.password}"/>    </bean>      <!-- 事务管理: -->    <!-- 事务管理器 -->    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>        <!-- 开启注解事务 -->    <tx:annotation-driven transaction-manager="transactionManager"/><!-- 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的配置  ===========================-->    <bean id="categoryService" class="cn.itcast.shop.category.service.CategoryService">        <property name="categoryDao" ref="categoryDao"/>            </bean>        <bean id="productService" class="cn.itcast.shop.product.service.ProductService">        <property name="productDao" ref="productDao"/>    </bean>  <!-- Dao的配置  ===========================-->    <bean id="categoryDao" class="cn.itcast.shop.category.dao.CategoryDao">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>            <bean id="productDao" class="cn.itcast.shop.product.dao.ProductDao">        <property name="sessionFactory" ref="sessionFactory"/>    </bean>  


4.log4j.properties


jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc:mysql:///shopjdbc.user = rootjdbc.password =123  



【Bean管理】


  从文章的第一个图可以看出Spring框架的组成结构中核心的组件只有三个:Core,Context,Beans。他们构建起了整个Spring的骨架。其中Bean是Spring的主角,Spring中提供了多种容器实现,并分为两大类:BeanFactory和ApplicationContext。

  1.Beanfactory提供了基础的依赖注入支持,管理对象的加载和生成,维护Bean对象与对象之间的依赖关系,负责Bean的生命周期。
  2.ApplicationContext(应用上下文)建立在Bean工厂基础之上,提供了系统架构服务。表面上,它和BeanFactory都是载入Bean定义信息,根据需要分发Bean。提供载入文件资源的通用方法,如载入图片。向注册为监听器的Bean发送事件。

【总结】


  Spring的作用就相当于将struts和hibernate连接起来,是将两个没有关系的框架的特性,方法,action都放在spring的配置文件中使他们建立关系。Spring就相当于一个指挥控制平台,一切类的创建都是由Beanfactory来管理的,这样的各层分开,有利于维护,一旦出现了调用问题,就只修改配置文件就OK了,不需要在去代码中调试谁和谁之间的调用关系了。


2 0