spring简介

1、spring简介

Spring是一个分层的 full-stack(一站式)轻量级框架,以Ioc(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切片编程)为内核,使用简单的JavaBean来完成以前只能由EJB(Enterprise Java Beans)完成的工作,取代了臃肿、低效的EJB。Spring致力于JavaEE应用各层的解决方案,是企业应用一站式开发很好的选择,在表现层它提供了Spring MVC以及整合Struts的功能,在业务逻辑层可以管理事务、记录日志等,在持久层可以整合Hibernate、Mybatis等框架。虽然Spring贯穿表现层、业务逻辑层、持久层,但Spring并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合。

  • IOC简介
    由系统中负责协调各对象的第三方组件,在创建对象的时候通过JavaBean属性(设值方法注入)或者构造函数(构造器注入),设定对象的依赖关系。【注意,是接收者依赖被接收者】。依赖注入会将所依赖的关系自动交给目标,而不是让它自己去获取依赖。也就是说,目标并不需要自己去创建其他类的对象,而是直接接收对象。并且,目标往往是与接口耦合,只要接收的对象实现了某个接口就可以。这样,就能由依赖注入随意更换接收的对象,进一步松耦合。依赖注入的另一个好处是:方便测试。紧耦合的目标难以测试,而通过依赖注入,可以让一个测试类实现耦合接口,然后不用修改代码,就可以让目标接收测试对象了。
  • AOP简介
    为促使软件系统实现关注点的分离的一项技术,将遍布应用各处的功能分离出来,形成可重用的组件。

    横切关注点:诸如日志、事务管理和安全这样的系统服务,经常融入到自身具有核心业务逻辑的组件中去,把这些系统服务称为横切关注点。

    作用:AOP将横切关注点模块化,在需要的组件中以声明的方式应用。组件只需要关注自身的业务代码,甚至根本不知道那些横切关注点的存在。这样,就避免了横切关注点的功能(代码或是方法调用)在各个组件中反复出现、使得组件变得混乱而复杂的缺陷,确保了POJO的简单性。
2、Spring的优点
  • 基于POJO的轻量级和最小侵入性编程
    Spring是一种非侵入式(no-invasive)框架,它可以使应用程序代码对框架的依赖最小化。
  • 通过依赖注入(DI)和面向接口实现松耦合,方便解耦、简化开发
    Spring是一个大工厂,可以将所有 对象的创建、依赖关系的维护 交给Spring容器管理,大大降低了组建之间的耦合。
  • 支持AOP,基于切面和惯例进行声明式编程
    允许将一些通用任务,比如安全、事务、日志等,进行集中式管理,从而提高程序的复用性。
  • 支持声明式事务处理
    通过配置就可以完成对事务的管理,无需手动编程。
  • 方便整合其它优秀框架
    Spring可以与大多数框架无缝整合。
  • 测试方便
    Spring支持Junit4,可通过注解测试程序,很方便。
  • 降低了使用JavaEE API的难度
    Spring对JavaEE开发中难用的一些API进行了封装,降低了这些API的使用难度。
3、spring获取对象
3.1 通过ApplicationContext获取bean对象
  • 在applicationContext.xml中声明bean对象
    <bean name="demo" class="com.jing.Demo">
        <!--bean对象属性初始化-->
        <property name="属性名" value="初始化参数" />
    </bean>
    
  • 通过WebApplicationContext获取bean对象
    WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());
    Demo demo  = (Demo)webApplicationContext.getBean("demo");
    
3.2 通过配置和注解获取bean对象
  • 在applicationContext.xml中声明bean对象

    <bean name="demo" class="com.jing.Demo">
        <!--bean对象属性初始化-->
        <property name="属性名" value="初始化参数" />
    </bean>
    
    <bean name="test" class="com.jing.Test">
        <!--bean对象属性初始化-->
        <property name="属性名" value="初始化参数" />
    </bean>
    
    
    
  • 使用注解注入bean对象

        @Resource(name = "demo")
        private Demo demo;
    
        @Autowired
        private Test test;
    
3.3 通过注解获取bean对象
  • 在applicationContext.xml中配置bean对象组件扫描器,指定bean类所在包路径,声明包路径下所有bean。
    <context:component-scan base-package = "com.jing.entity"/>
    
    @Component
    public class Demo {}
    
    @Component("test")
    public class Test {}
    
  • 使用注解注入bean对象
    @Resource(name = "demo")
    private Demo demo;
    
    @Autowired
    private Test test;
    
4、spring依赖包关系
4.1 spring核心jar包
  • Core模块:主要包含Spring框架基本的核心工具类,特别重要

  • Beans模块:包含访问配置文件、创建和管理bean以及进行Ioc/DI操作相关的所有类

  • Context模块:构建于Core和Beans模块基础之上,提供了一种类似于JNDI注册器的框架式的对象访问方法

  • Expression Languaga模块:提供了一个强大的表达式语言用于在运行时查询和操纵对象

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rO1b8XuG-1604890348981)(/images/blog/spring详解/spring-core.png)]


4.2 spring数据库相关依赖
  • JDBC模块:jdbc支持

  • ORM模块:对象关系映射,集成orm框架,如Hibernate,IBatis

  • OXM模块:对象XML映射

  • JMS(Java Message Service)模块:java消息服务

  • Transaction模块:事务控制

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h4RE0rhJ-1604890348983)(/images/blog/spring详解/spring-sql.png)]


4.3 springWeb相关依赖
  • spring-web模块:提供了基础的面向web的集成特性,如文件上传

  • spring-webmvc模块:包含了spring 的mvc实现

  • spring-websocket:为web应用提供的高效通信工具

  • spring-web-portlet模块:提供了用于Portlet环境和web-servlet模块的mvc实现

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kA0XgNlP-1604890348984)(/images/blog/spring详解/spring-web.png)]


4.4 springAOP相关依赖
  • spring-aop:面向切面编程

  • spring-aspects :Aspects模块提供了对AspectJ(一个面向切面的框架,它展Java语言)的集成支持。

  • spring-instrument:提供一些类级的工具支持和ClassLoader级的实现,用服务器

  • spring-instrument-tomcat:针对tomcat的instrument实现

  • spring-messaging:用于构建基于消息的应用程序

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OMBtcCNo-1604890348986)(/images/blog/spring详解/spring-aop.png)]


4.5 spring测试相关依赖
  • spring-test:spring测试,提供junit与mock测试功能

  • spring-context-support:spring额外支持包,比如邮件服务、视图解析等

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QT8iVgJ7-1604890348987)(/images/blog/spring详解/spring-test.png)]


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值