python菜鸡对java spring的初步理解

百度一哈Spring入门,最常见的两个概念就是IOC(控制反转)和依赖注入(DI)。看了两天资料,简单说下自己的理解。首先整体的大思想是解耦,具体一点是类本身与数据(依赖)的解耦,以及整体流程的分层。

IOC 与 DI

所谓IOC,即是指将类和数据等解耦,把类的一切控制权交给容器。所谓容器,是控制管理类或者bean的地方。容器来为类分配数据,控制类的行为。
在最常见的helloworld例子里,为了输出helloworld,我们先实现了一个类,这个类本身的作用是用来输出一个message。然后这个message,也就是helloword这个字符串,被存放在了xml的配置文件中。
就是数据和逻辑的分离。
而把helloworld传递给message赋值,就叫做依赖注入。之所以依赖注入要单独拿出来。是因为一个类的初始化赋值有很多方式。毕竟配置文件写大了,容易乱。一个bean可能被用在好几个地方,一个类的初始化也要注入好多bean。

Spring的依赖注入和切面,其实和python的装饰器很像

而且写法上都是@

def inject_message(cls, message):
  cls.message = message

@inject_message('hello')
class Printer(object):
  message = ''
  def print_message(self):
    print self.message

是不是一样的感觉?
只不过bean里面,所有的数据都是注入的,所以管理起来更麻烦一些,也不会像这个装饰器这样这么优雅。
至于切面,就更是装饰器了。

AOP

所谓的before,after就是@before(func),只不过我们一般装饰器写的不会这么通用罢了,而且装饰器本来就是before after都包括了。当然拆分的更细的话,更通用的话,最后应该是就是这个样子吧。

这是从思想上,spring给我的感觉。

你可能感兴趣的:(python菜鸡对java spring的初步理解)