• Spring(一)


    一、Spring 介绍

    1.1、什么是spring

    l Spring是分层的JavaSE/EE full-stack 轻量级开源框架
            分层:三层体系结构,为每一个层都提供解决方案
                    web层:struts2spring-mvc
                    service层:spring
                    dao层:hibernatemybatisjdbcTemplate(spring)
            轻量级:使用时占用资源少,依赖程序少。比较:EJB
    <ignore_js_op>

    1.2spring由来

    Expert One-to-One J2EE Design and Development  ,介绍EJB,使用,特点
    Expert One-to-One J2EE Development without EJB ,不使用EJBspring思想

    1.3spring核心

    IoCInverse of Control 反转控制)和AOPAspect Oriented Programming 面向切面编程为内核)

    1.4spring优点

    l 方便解耦,简化开发 (易扩展,易维护)
    • Spring就是一个大工厂,可以将所有对象创建和依赖关系维护,交给Spring管理
    l AOP编程的支持
    • Spring提供面向切面编程,可以方便的实现对程序进行权限拦截、运行监控等功能
    l 声明式事务的支持
    • 只需要通过配置就可以完成对事务的管理,而无需手动编程
    l 方便程序的测试
    • SpringJunit4支持,可以通过注解方便的测试Spring程序
    l 方便集成各种优秀框架
    • Spring不排斥各种优秀的开源框架,其内部提供了对各种优秀框架(如:StrutsHibernateMyBatisQuartz等)的直接支持
    l 降低JavaEE API的使用难度
    • Spring JavaEE开发中非常难用的一些APIJDBCJavaMail、远程调用等),都提供了封装,使这些API应用难度大大降低

    1.5spring体系结构
    <ignore_js_op> 

    l spring 核心功能:beanscorecontextexpression

    环境搭建(技术开发环境)2.1、获取 Spring framework jar包  1spring官网下载

    从官网下载spring 最新的相关jar包,官网download地址 http://www.springsource.org/springcommunity-download
    下载完成后会发现三个目录,命名很明确。 
    Docs 目录相关文档。包括一份 API 和一份各种 spring 的使用说明(reference)reference 提供了 HTML.PDF 版本,非常详细。  
    <ignore_js_op>

    2.spring包的核心包

    搭建第一个用到 spring 依赖注册的程序  
    直接用 eclipse 建立一个 JAVA 项目  
    然后添加 spring 的 jar 包引入
      
    spring-core-3.2.0.M1.jar     核心依赖 jar 
    spring-context-3.2.0.M1.jar   Spring 容器包
    spring-beans-3.2.0.M1.jar   Spring beans 的管理包
    spring-asm-3.2.0.M1.jar  Spring  
    注:和 hibernate 一起用时这个 JAR 会冲突,解决方法删掉它就是了
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)
    Caused by:  
    java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)
    spring-expression-3.2.0.M1.jar  
    除此之外,还有需要一个 Apache common 的 JAR 
    注:如果忘记添加会 commons-logging-1.1.1.jar 报错
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory  
    commons-logging-1.1.1.jar 日志记录

    3. 配置 XML  

    Spring 的最大的作用就是提供 bean 的管理功能,在 spring 中 bean 的管理是通过 XML 实现的,要 用此功能,需要把 bean 配置到 spring 的 xml

    1. 新建立一个 xml.名字任意,如 applicationContext.xml,或者 text.xml 都可以  2. 添加 xml 头定义

    <?xml version="1.0" encoding="utf-8"?>
    <beans xmlns=http://www.springframework.org/schema/beans  ①  
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    ">
    <bean name="" class=""> </bean>
    </beans>
    ① Xmlns(XML NameSpace) 声明命名空间,建议是用网址做命名空间,但并不会去访问改网址, 仅仅是namespace 和 xsdxsd 是 spring 这个 xml 的 schema 文件,里面定义配置内容)里 声明的 targetNamespace 保持一致 注:这里命名空间是改不了的,其实是在代码中也写死了,可以打开 spring-beans3.2.0.M1-sources.jar 包的orgspringframeworkeansfactoryxmlBeanDefinitionParserDelegate.java 查看对http://www.springframework.org/schema/beans这个namespace的定义。  
    ② schemaLoacation .用于绑定命名空间的 schema 文件,通常是用 URL 值对,中间用空格隔 开,前面 URL 是命名空间,后面 URL 为 schema 的文件地址
    ③ xsd 的存放地址,如果没有声明,eclipse 会去网上下载.  
    在创建 xml 时,在 eclipse 编辑 xml 配置没有提示。
    可以对 eclipse 中进行 schema 文件的添加
    具体是
    WindowsàPreferences ,搜索 XML catalog,添加 schema 文件。
    Spring 的 schema 文件在下载包里有,找到 spring-3.2.0.M1schemaeansspring-beans-3.2.xsd
    然后添加,编写 spring 配置文件就能有提示了  
    <ignore_js_op>

    4. 搭建环境简单测试 

    4.1  通过 xml 配置

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

    <!-- 将user对象交给pring容器管理 -->
    <bean name="user" class="cn.bdqn.bean.User"></bean>
    </beans>


    测试:

    package cn.bdqn.test;

    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import cn.bdqn.bean.User;

    public class UserTest {
    @Test
    public void test01() {
    //创建容器对象
    ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
    //向容器所要对象
    User user = (User) ac.getBean("user");
    //打印user对象
    System.out.println(user.toString());
    }
    }

    三、Spring 概念

    1. 思想

    1.1  IOC思想

                

    1.2 DI  思想

              

    2.  applicationContext&BeanFactory  对象

    2.1 BeanFactory 最顶层的接口

        spring原始接口.针对原始接口的实现类功能较为单一

        BeanFactory接口实现类的容器.特点是每次在获得对象时才会创建对象

    2.2 ApplicationContext 

        每次容器启动时就会创建容器中配置的所有对象.并提供更多功能

        丛类路径下加载配置文件:ClassPathXmlApplicationContext  (建议使用)

        从硬盘绝对路径下加载配置文件:FileSystemXmlApplicationContext("d:/xxx/yyy/xxx")

      结论:web开发中,使用applicationContext. 在资源匮乏的环境可以使用BeanFactory.

    四、Spring 配置详解

    1.bean 元素

          

    2. spring创建对象的方式

      2.1 空参构造方式

        

      2.2 .静态工厂(了解)

       

       2.3   实例工厂(了解)

       

     3. scope属性 

       

    4. 生命周期属性

       

    5.spring的分模块配置  ---import

       

    五、Spring 属性注入

      1. set 方式注入   (最重要)

          

      2. 构造函数注入

          

      3. p名称空间注入(了解)

          导入p命名空间

          

           

      4. spel 注入(了解)

          

    六、复杂类型注入

      1. 数组

          

          

      2. list

          

            

      3. map

          

      4. properties

          

  • 相关阅读:
    mysql 开发基础系列7 流程函数与其它函数
    mysql 开发基础系列6 数值与日期函数
    html5 浏览器端数据库
    html5 响应式布局
    css 文本溢出显示省略号
    js 字符串的操作
    js 图片轮播(一)
    css 弹出层-透明层
    js选项卡
    js获取当前时间显示在页面上
  • 原文地址:https://www.cnblogs.com/zhou-pan/p/8358247.html
Copyright © 2020-2023  润新知