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(依赖注入)就到这里,想要更加仔细了解的小伙伴可以看下一篇博客,当然有问题的,欢迎留言!!!
作者:爷 叼烟闯天下