Sping基础

来源:互联网 发布:剑三丐姐脸型数据 编辑:程序博客网 时间:2024/06/05 18:46

1.Sping概述

      Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EEDevelopment and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Sping的核心是Ioc(控制反转)和Aop(面向切面),简单来说,Sping是一个JAVA-EE/SE的full-stack(一站式)开源框架。

1.1轻量级:与EJB对比,依赖的资源少,销毁的资源少。

1.2分层:一站式,每一层都提供了解决方案

     web层:struts,springMVC

     service层:spring

     dao层:hiberbate,mybatis,jdbc-Template->spring-data

1.3sping核心

    IOC(控制反转),AOP(面向切面)

1.4spring优点

   (1)方便解耦,简化开发(高内聚,低耦合)

         spring是一个大工厂,可以将所有的对象创建和依赖关系维护交给spring管理,

         spring工厂用于生产bean

   (2)对AOP编程的支持

         spring 提供面向切面编程,可以方便的实现对程序进行权限拦截,运行监控等功能。

   (3)声明式事务的支持

         只要通过配置就可以对完成对事务的管理,无需手动编程

   (4)方便的程序测试

        sping 对Junit4支持,可以方便的=通过注解直接测试Spring程序

   (5)方便集成各种优秀的框架

        Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:Struts、Hibernate、MyBatis、Quartz等)的直接支持

   (6)降低了JavaEE API的使用难度

        spring对javaEE开发中一些非常难用的API(JDBC,JAVA MAIL y远程调用)等都提供了封装,降低了使用难度.

 1.5Spirng体系结构

      

      spring框架是一个分层框架,它包含一系列功能要素,大约分为20几个模块,这些模块分为Core Container,Data Access/Integration,Web ,AOP ,Instrumentation和测试部分。

  1.6Spring 中配置bean的三种方式

         (1)默认构造的方式

             <bean id="" class="">  必须提供默认构造

         (2)静态工厂方式

           <bean id=""  class="工厂全限定类名" factory-method="静态方法">

                               

                  工厂代码

                        publicclass MyBeanFactory {

                      /**

                        * 创建实例

                       * @return

                     */

                         publicstatic UserServicecreateService(){

                                  return    new UserServiceImpl();

                        }

                   }

               

                Spring配置

                   <bean id="userServiceId"class="com.itheima.c_inject.b_static_factory.MyBeanFactory"factory-method="createService"></bean>

                 

         (3)实例工厂方式

                 必须先有工厂实例对象,通过实例对象创建对象。提供所有的方法都是“非静态”的

                 publicclass MyBeanFactory {

                /**

                * 创建实例

                * @return

                */

                public UserService createService(){

                  return new UserServiceImpl();

               }

 

            }

            Spring配置

              

         <!--创建工厂实例 -->

                 <beanid="myBeanFactoryId"class="com.itheima.c_inject.c_factory.MyBeanFactory"></bean>

               <!--获得userservice

                        * factory-bean确定工厂实例

                       * factory-method确定普通方法

                 -->

              

               <beanid="userServiceId"factory-bean="myBeanFactoryId"factory-method="createService"></bean>


  1.7   IOC容器对bean的生命周期

          (1)通过构造器或工厂方法创建Bean实例

          (2)为Bean的属性设置值和对其他Bean的引用

          (3)将Bean的实例传给后处理bean的postProcessBeforeInitialization方法

          (4)调用Bean的初始化方法    init-method="myInit"

          (5)将Bean的实例传递给后处理bean的postProcessAfterInitalization方法(此时可以创建代理对象,做事务)

          (6)bean可以使用了

          (7)当容器关闭时,调用bean的destroy-method="myDestory"方法


 1.8作用域:用于确定spring创建bean的实例个数

                       

            备注:

             singleton 单例,默认值。

             prototype 多例,每执行一次getBean将获得一个实例。例如:struts整合spring,配置action多例





1 0