什么是IOC以及依赖注入?

以下文字从某论坛粘贴而来:

  • 楼主:Spring 是干什么的? 能具体举出一个例子吗?比如,写一个 留言板程序,会用到 Spring 吗?
  • 热心网友1:你接触 Java 13年了就只懂 if 、else 、for 这3个语句?!你怎么做到的?!
  • 楼主:因为所开发的网站(貌似不管多复杂的网站 都是 if 和 for ),都是 数据库的 增删改,按照 2000年的 ASP、PHP 语言 和 VB语言的思路写就完成了,从来没有用 Spring 的 IOC,也许项目中有 Spring 的框架,但是也没有 修改过吧。
  • 热心网友1:隐隐约约感觉楼主是来黑spring的…
    楼主不要纠结spring是做什么的了
    spring能做的事情,你用java都能做.
    over
  • 热心网友2好比如你有两个类:
class A {
private B b = new B();
}
class B {
public void sayHello(){
System.out.println("hello");
}
}

这是传统的实现,A类中要调用B类的方法,必须有B的实例,所以A里面就创建了一个B的实例
下面说一下ioc是什么:
如果用ioc 依赖注入的思维来想这个,那么A类是依赖与B类的,因为这个地方没有了B类,new B将会不成立,虽然有了依赖注入,这个地方也会不成立,所以和ioc一起使用的就是接口:

class A {
private IB b;
}
interface IB{
public void sayHello();
}
class B implements IB{
public void sayHello(){
System.out.println("hello");
}
}

现在这样A类就不依赖与B类了,而是依赖与IB接口,现在要做的就是,把B的实例注入到A的b属性中
spring ioc在这段代码中的作用就是创建B实例,然后在创建A实例的时候将B的实例设置到A的属性b之中.
注意,这里的B实例,A实例并不是类似与上面那样我们手动new一个,而是通过spring 的BeanFactory创建的.

  • 热心网友3:楼主真是纯为黑spring而来的啊。
  • 热心网友4:就我感觉spring是java界的“胶水”。提供了很多非常好用的工具方法,让各种第三方包可以和谐相处
    AOP还是很好用,各类语言也都有类似的实现。Spring的AOP实现算是Java里面做的比较好的。
    至于IoC…我感觉这完全是Java世对构架走火入魔的产物。除非构架确实够复杂,不然大多情况下是完全没必要去做IoC的。很多时候所谓的可复用完全是臆想出来的,凭空把事情搞复杂了。
    不过IoC的滥用也不能归结给spring。Java就喜欢讲构架。在spring出现前,很多人还在用更丑陋的方式实现类似的功能。
    Spring 是块万用插线板。所有的零件通过 Spring 统一管理,可做到根据需要随时替换。你的组件所需要的零件,原本是在类内部自己创建,现在都由 Spring 来装配。组件需要 Spring “注入”所“依赖”的零件,把装配的权利交给外部的 Spring,也就是“依赖注入”,也叫“控制反转”。

你可能感兴趣的:(Spring,Boot)