• Spring框架学习


    最后,我还是变成了我最讨厌的人。。

    Spring是java的一个框架,轻量级+非侵入性,前者指的是它很小,后者指的是业务代码对该框架没有强依赖,不需要靠继承框架提供的类或接口来做事

    Spring的两个特点:

    1 IoC 控制反转      a类依赖于b类,这样强耦合不好,Spring创造出b的资源并且给a用,降低耦合 ( 但是这样a其实还是要importb,不知道为什么耦合就低了。。)此时b这个对象的所有者是Spring,它的销毁和创建都是框架负责。(IoC又分两个流派,一者开场创建所有对象,一者lazy)

    这里的耦合和import没有太大的关系,如果a new了一个b出来,则相当于b的生命周期由a控制,而IoC是把b的生命周期交给框架,相当于左旋了一下,a每次注入一个b,只是使用b做了事情

    Spring造出来的b,默认是单例的,即a和c自动注入的是同一个b,如果b有状态则会出问题,可以主动找框架要一个b出来,框架就会给你new一个出来

    2 AOP 面向切面编程    类似于unittest、log这种,对一个函数,在start和end或一些特定的时机都要做很固定的事情,例如打log和cleanEnv,频繁的做一件事情很浪费,这里log和cleanEnv被称为切面,Spring提供了一种方式,使得我们可以先对log这一切面进行编程,然后为func声明这一切面,这样可以达到代码复用(golang自带的说?)

    @Autowired - java中的一个标签,表示自动注入,如果a要利用IoC调用b,那么就得在xml文件里进行提前声明,这样才能使得a找到b。这可能会造成一个很大的xml。a在类中声明b时,只需要加上这个,编译器就会自己去找b在哪儿。

  • 相关阅读:
    CDH5.2安装更换hive元数据存储数据库遇到的问题
    SSH 互信
    【记录】Java NIO实现网络模块遇到的BUG
    Http2协议简介
    synchronized(this) 与 synchronized(class) 理解
    【记录】spring boot 图片上传与显示
    Cookie-Session机制
    linux利用用户组给用户赋予不同的权限
    java .equals()和==的区别
    String直接赋值和使用new的区别
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/11215402.html
Copyright © 2020-2023  润新知