带你三分钟认识 Spring IoC中的渣男渣女以及舔狗海王

1.IoC的定义

IoC称为控制反转又叫DI(依赖注入)。


2.Spring

Spring的定义:是一个IoC容器
  分为:

    spring core
    spring beans:     组件工厂BeanFactory
    spring context:    环境,装配
    spring expression

3.Spring 组件的作用域

    单例(默认):全局唯一
	原型:每次获得一个全新的实例
	请求作用域:web程序
	会话作用域:web程序

ApplicationContext 与BeanFactory 之间的关系。后面会以代码格式详细说明


4.AOP

spring aop

5.IoC/DI(依赖注入模式)

分为:


	接口注入(EJB)
	构造器注入
	setter注入

 依赖:组件(对象)A,B,如果A中方法的执行需要调用B的方法,则说A依赖B。

//A依赖于B
	class A{
		//方案一;A内部创建一个B的实例
		//对象A销毁了,B也会销毁
		B b=new B();
	
		void work(){
			b.run();
		   }
	}

                A a1=new A();//a1.b
		A a2=new A();//a2.b
		//a1.b!=a2.b;

这种模式的特点:
B 是为 A 而存在, 对象 A 销毁时, B 也被迫销毁了。B 会被陪葬!

这种人就是我们常说的舔狗。


class Person{
			//爱人
			person lover;
	
			//方案二
			//构造器注入,一个对象构造器只能执行一次
			//只能出生一次
			public Person(Person lover){
				this.lover=lover;
			}

			//方案三
			//可以多次调用
			void setLover(Person lover){
				this.lover=lover;
			}

		void marry(){
			//结婚
			lover.marry();
		}
	}

                Person rose;
		Person jack;
		Person king;

娃娃亲,这种模式出自于古代,现代早已所剩寥寥无几。古时候东西坏了,人们只想着怎么把它修好,爱情也是一样,所以才会有那么多的爱情故事。。。 

                 //方案二
		//king,rose 的爱人是什么时候获得的?
		//出生时就有
		king =new Person(rose);
		rose=new Person(king);

这种模式 于现代产生,不喜欢就换一个对象,东西坏了直接丢掉,喜欢全凭感觉,感觉不对,立马下一个,也就是大家所说的渣男渣女。在这种模式的基础上,涌现出大量新的东西,只有一个参数是舔狗,有多个参数,就化身为海王。

             //方案三:setter注入
		king =new Person();
		rose=new Person();
		jack=new Person();
		
		rose.setLover(king);
		rose.setLover(jack);
		rose.marry();

		jack.setLover(king);
		jack.marry();

6.如何获得依赖资源

  不要内部创建(高耦合度),由外部注入(传递进入),降低耦合。
    尽量依赖于抽象(interface),避免依赖具体实现(class)

class Person implements Marryable{
		//lover是具体
		Marryable lover;
		
		void setLover(Marryable lover){
			this.lover=lover;
		}

		
		void marry(){
			lover.Kiss();
		}
	
		void Kiss(){
		}
	}

//爱人
	interface Marryable{
		void Kiss();
	}

class Robot implements Marryable{}

	class Dog implements Marryable{}

	Person jack=new Person();
	Person rose=new Person();

	jack.setLover(rose);
	jack.setLover(new Robot());
	jack.setLover(new Dog());
	jack.marry();

关于 Spring IoC(依赖注入)就到这里,想要更加仔细了解的小伙伴可以看下一篇博客,当然有问题的,欢迎留言!!!

发布了117 篇原创文章 · 获赞 209 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44364444/article/details/105369103