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>
原文地址:https://www.cnblogs.com/UalBlog/p/10627787.html