Spring概念:Spring框架由Rod Johnson开发,2004年公布了Spring框架的第一版。Spring是一个从理论开发中抽取进去的框架,因而它实现了大量开发中的通用步骤,留给开发者的仅仅是与特定利用相干的局部,从而大大提高了企业应用的开发效率。

Spring长处:

  • 低侵入式设计,代码的净化极低。
  • 独立于各种应用服务器,基于Spring框架的利用,能够真正实现Write Once,Run Anywhere的承诺。
  • Spring的IoC容器升高了业务对象替换的复杂性,进步了组件之间的解耦。
  • Spring的AOP反对容许将一些通用工作如平安、事务、日志等进行集中式治理,从而提供了更好的复用。
  • Spring的ORM和DAO提供了与第三方长久层框架的良好整合,并简化了底层的数据库拜访。
  • Spring的高度开放性,并不强制利用齐全依赖于Spring,开发者可自在选用Spring框架的局部或全副。

Spring核心技术: IoCAOP,可能实现类之间、模块之间的解耦合。

IoC:IoC(管制反转)就是依赖倒置准则的一种代码设计思路。就是把原先在代码外面须要实现的对象创立、对象之间的依赖,反转给容器来帮忙实现。
Spring IOC容器通过xml,注解等其它形式配置类及类之间的依赖关系,实现了对象的创立和依赖的治理注入。实现IOC的次要设计模式是工厂模式。

IoC技术实现:DI是IoC的技术实现, DI(Dependency Injection)依赖注入,只须要在程序中提供要应用的对象的名称就能够,至于对象在容器中如何创立、赋值、查找都由容器外部实现。Spring是应用DI实现了IoC的实现,Spring底层创建对象应用的是反射机制。

应用IoC,由Spring创建对象实现步骤:

1. 创立maven我的项目

2. 退出maven的依赖:Spring的依赖,junit依赖

<dependencies>    <!--Spring依赖-->    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>5.2.5.RELEASE</version>    </dependency>    <!--单元测试依赖-->    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.11</version>      <scope>test</scope>    </dependency>  </dependencies>

3. 创立类(接口和实现类):创立类和没有应用框架一样,就是一般类。

4. 创立Spring须要应用的配置文件,申明类信息,这些类交由Spring创立和治理

Spring的配置文件:

  1. beans:是根标签,Spring把java对象称为bean。
  2. spring-beans.xsd:是束缚文件,和mybatis指定 .dtd是一样的。

通知Spring创建对象:
首先要申明bean,一个bean标签申明一个对象,就是通知Spring要创立某个类的对象。
id:对象的定义名称,惟一值。Spring就是通过这个名称找到对象。
class:类的全限定名(不能是接口,因为Spring是反射机制创建对象,必须是类)

<bean id="someServiceImpl" class="com.cn.spring.serviceImpl.SomeServiceImpl"></bean>

5. 测试Spring创立的对象

应用由Spring创立的对象:

  1. 指定Spring配置文件的名称
    String config="ApplicationContext.xml";
  2. 创立示意Spring容器的对象,ApplicationContext;

    • ApplicationContext就是示意Sprring容器,通过容器获取对象;
    • ClassPathXmlApplicationContext:示意从类门路中加载Spring的配置文件(在target上面读取指定配置文件);
    ApplicationContext ac=new ClassPathXmlApplicationContext(config);

    从容器中获取对象:
    留神:getBean("配置文件中bean的id值");因为getBean返回值类型是Objecct类型的所以须要强转;

    SomeService ss=(SomeService) ac.getBean("someServiceImpl");

测试后果:

package com.cn.spring;import com.cn.spring.service.SomeService;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class TestSpring {    @Test    public void test01(){        String config="ApplicationContext.xml";        ApplicationContext ac=new ClassPathXmlApplicationContext(config);        SomeService ss=(SomeService) ac.getBean("someServiceImpl");        ss.doSome();    }}


未完待续。。。。。。