勿谓今日不学而有来日,勿谓今年不学而有来年。
日月逝矣,岁不我延。

Spring的IOC和DI

Spring框架是java SE/EE开发的一站式框架,有EE开发的每一层解决方案。

  • WEB层:SpringMVC
  • Service层:Spring的Bean管理,Spring声明式事务
  • DAO层:Spring的Jdbc模板,Spring的ORM模块

Spring框架的IOC(Inversion of Control-控制反转)

简单来说IOC就是将对象的创建权反转给(交给)Spring

个人浅显的理解是:处理Java业务时,每个与业务有关的对象需要使用与其合作的对象时需要new object(),以此来获取合作对象,但是这样一来程序的耦合性大大提高。然而Spring的IOC是Spring容器将业务依赖的对象全部创建协调其工作。开发人员只需要关注程序之间的业务逻辑即可。这样来看,对象在获取其合作对象的任务被反转了。对于Spring来说,就是由Spring来负责控制对象的生命周期和对象间的关系。

Spring所倡导的开发方式是所有的类都会在Spring容器中登记,告诉spring是个什么类,需要什么类,然后Spring会在程序运行到适当的时候,把某个类需要的东西主动给他,同时也把这个类交给其他需要这个类的东西。所有的类的创建、销毁都由 Spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是Spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被Spring控制,所以这叫控制反转

做个不太恰当的比喻,在使用Spring的IOC之前程序猿扮演者生产者(创建对象)、消费者(使用对象)、分解者(销毁对象),而IOC负责了生产和销毁还有管理,开发者只需要担任消费者的角色就好。

Spring框架的DI(Dependency Injection-依赖注入)

Spring能在系统运行中动态的向某个对象提供它所需要的其他对象。意思就是在某个对象A需要另一个对象B时,Spring就会创建一个B然后就像打针注射一样注入到A中,A不需要知道这个药(B)是如何生产的,只需要知道能治病(满足A的需要)即可。

Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,Spring就是通过反射来实现注入的。

关于IOC和DI的配置与使用参见:https://github.com/llanc/SSH_Learn/tree/master/Spring-01-HelloWorldhttps://github.com/llanc/SSH_Learn/tree/master/Spring-02-IocAnnotation

赞(1)
未经允许不得转载:喋喋不休 » Spring的IOC和DI

评论 抢沙发

评论前必须登录!

 

精品网站

有券无忧电脑壁纸精选