Spring:
什么是接口?
1、对外提供的一种方法,但不具体去实现。
2、对于JAVA而言,就是声明,声明了哪些方法是对外公开的。
3、在JAVA8中,接口可以有方法体。
面向接口编程?
1、结构设计中,分清层次及调用关系,每层只向外(上层)提供一组功能接口,各层之间仅依赖接口而非去实现
2、接口实现的变动不影响各层间的调动,这一点在公共服务中尤为重要。
3、“面向接口编程”中的“接口”是用于隐藏具体的实现,和实现多态性的一个组件。
什么是IOC?
IOC:控制反转,控制权的转让,应用程序本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护。IOC的目的就是创建对象并组装对象的依赖关系。
DI(依赖注入)是IOC控制反转的一种方式。由IOC容器在运行的时候,动态的将某种依赖关系注入到对象之中。
Spring里面的Bean调用的方法?
BeanFactory bf = new ClassPathXmlApplicationContext("application-context.xml");
Person per = (Person) bf.getBean("person");
per.feed();
Spring注入
在启动Spring容器加载Bean配置的时候,完成对变量的赋值行为。
两种注入方式:
设值注入(property)
构造注入(constructor-arg)
Bean的作用域:
scope="singleton":表示该Bean在被调用的时候,就不会随着调用再去通过new获得该对象,也就是说一个Bean容器只能new一次。
scope="prototype":表示每次请求就会创建新的实例。
Bean的初始化:
在Bean中配置,init-method="init",那么在该Bean中的class里面的类的里面必须要有一个方法名叫“init”。
或者
直接在类中继承一个接口,InitializlingBean,然后重写afterPropertiesSet方法抛异常。
Bean的销毁:
在Bean中配置,destroy-method="cleanup",那么同上。
或者
直接在类中继承一个接口,DisposableBean,然后重写destroy方法抛异常。
全局默认初始化和销毁方法
在配置文件中的最外层的Bean里面写default-init-method="init",default-destroy-method="destroy",全局的方法可不写,不会报错。
注:接口的初始化和销毁先于,Bean里面的配置。
而如果配置了着两种中的一种,则全局的初始化和销毁将会失效,全局的方法可不写。