zoukankan      html  css  js  c++  java
  • Spring基础

    一、Spring 概述

      1)什么是Spring 

          是一个开源设计层的框架,解决的是业务逻辑层和其他层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。

      2)Spring特点

        1.方便解耦,简化开发。

          通过Spring 提供的IOC容器,我们可以将对象之间的依赖关系交由Spring 控制,避免硬编码造成的过度耦合,有了Spring,用户不再为单实例模式类,属性文件解析这些很底层的需求编写代码,可以更专注于上层应用。

        2.AOP编程支持

          通过Spring提供的AOP功能,方便进行面向切面编程。

        3.声明式事务的支持

          在Spring中,我们可以从单调的事务管理代码中解脱出来,通过声明式方式灵活的进行事务的管理,提高开发效率和质量。

        4.方便程序的调试

          可以用非容器依赖的编程方式进行几乎所有的测试工作,在SPring里,测试不再是昂贵的操作,而是所手可以做的事情,例如:Spring对Junit4的支持,可以通过注解方便的测试Spring程序。

        5.方便集成各种优秀框架 

        6.降低java EE API的使用难度。

          Spring 对很多难用的javaEE API(如JDBC,javaMail,远程调度等)提高了一个薄薄的封装层,通过Spring 简易封装。

      3.下载

        https://repo.spring.io/webapp/#/artifacts/browse/tree/General/libs-release-local/org/springframework/spring

    二、IOC

      1)什么是IOC:Inversion of Control(控制反转:将对象的创建权反转给Spring)

      2)传统开发模式:

        1.业务和实现类过于紧密,底层业务需要修改源代码。

        2.通过工程可以实现,接口于实现业务分离(但还是需要修改少量代码)

        3.在工厂内部使用配置文件加载。

      3)使用Spring-Ioc:

        1.添加jar包

        2.创建配置文件:applicationContext.xml 

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

        3.在配置文件中添加配置选项     

    <bean id="UserDao" class="com.ual.demo1.UserDaoMysqlImpl"></bean><!--id对应接口名,class对应接口的具体实现类-->

        4.测试

        @Test
        public void test(){
            //1.加载配置文件
            ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");//全路径
            //2.根据id,获取对象
            UserDao userDao = (UserDao) applicationContext.getBean("UserDao");
            userDao.save();
            userDao.delete();
    
        }

    三、IOC与DI

      1)什么是DI:

        依赖注入:给Spring管理类当中依赖的属性,通过配置文件进行赋值的过程。

        前提是必须又IOC的环境,Spring管理这个类的时候才能将类的依赖的属性值(注入)设置进来。

        

    <bean id="UserDao" class="com.ual.demo1.UserDaoOracleImpl">
            <!--
            name:要注入的属性值  实现类中要有该值的set方法
    value:注入值(赋值) --> <property name="name" value="ual"></property> </bean><!--id对应接口名,class对应接口的具体实现类-->

      

      @Test
        public void test2(){
            //依赖注入
            ApplicationContext applicationContext=
        new ClassPathXmlApplicationContext("applicationContext.xml");
            UserDaoOracleImpl userDaoOracle=
            (UserDaoOracleImpl)applicationContext.getBean("UserDao");
            System.out.println(userDaoOracle.name);
    
        }

          注意:1.实现类当中的属性要提供set方法

             2.在配置文件中配置依赖注入,赋值。

      2)Spring工厂类:

         1.BeanFactory:老版本使用,当调用getBean的时候才会创建实例对象

        2.ApplicationContext:新版本使用,当加载配置文件时就会创建实例对象

        3.ApplicationContext实现类:

            3.1ClassPathXmlApplicationContext:加载类路径下的配置文件。

            3.2FileSystemXmlApplicationContext:配置文件放在其他位置,不是放在工程,写该位置全路径。(一般不用)

    四、Bean相关配置

         1)名称与标识

            1.id:使用了约束中的唯一约束,里面不能出现特殊字符。(用这个)

            2.name:没有使用约束中的唯一约束,允许重复,可以有特殊字符。

          2)设置对象的生命周期方法

            1. init-method:Bean被初始化的时候执行的方法

            2.destory-method:Bean被销毁的时候创建的方法(默认Bean是单例创建,工厂关闭时Bean对象自动销毁)applicationContext.close()关闭工厂,工厂里的所有对象都会销毁

            在bean中配置,在Bean类中实现。

        

           3)Bean的作用范围配置:

              scope:singleton:单例创建bean对象(默认)

                 propotype:多例,工厂关闭时,多例对象不会自动销毁,而是靠gc

                 request:应用web项目中,Spring 创建这个类后,这个类存入到request范围。

                 session:应用在web项目中,Spring创建这个类后,将这个类存入到session范围

                 globalsession:应用在web项目中,必须在porlet(基于web组建,子域名)环境下使用,但是如果没有这种环境,相对于session。

           4)工厂实例化的方式

              1.无参构造(默认): 创建对象时,执行默认构造方法。

              2.静态工厂实例化:

       <bean id="User" class="com.ual.demo2.User" factory-method="createUser"></bean>

      

      

              3.实例工厂实例化:

      

    五、分模块配置

      1)有多个applicationContext文件,引入到一个applicationContext中,有两种方式

       1.在加载器中写多个字符串,把多个applicationContext.xml引入,用逗号隔开

       2.在总的applicationContext.xml中通过improt引入其他配置文件

     <import resource="applicationContext1.xml"></import>
  • 相关阅读:
    Android性能优化--ANR
    Android性能优化--冷启动优化(Application)
    Android性能优化--UI卡顿
    Android性能优化--内存泄漏
    java反射
    数据结构之约瑟夫问题(循环链表)(C++版)
    数据结构之杨辉三角(队列实现)(C++版)
    vue组件间通信六种方式
    类型转换
    千分位
  • 原文地址:https://www.cnblogs.com/UalBlog/p/10627787.html
Copyright © 2011-2022 走看看