zoukankan      html  css  js  c++  java
  • 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在哪儿。

  • 相关阅读:
    MySql学习20----数据库范式
    MySql学习17----数据库事务(01)
    MySql学习19-----用户管理
    MySql学习18----数据库事务---命令使用(02)
    MySql学习16----查看mysql库大小、表大小、索引大小
    MySql学习13----触发器
    MySql学习15----MySql日志
    java公开课-04-log4j
    java公开课-04-异常
    java公开课-03-内部类
  • 原文地址:https://www.cnblogs.com/rayrayrainrain/p/11215402.html
Copyright © 2011-2022 走看看