IOC思想:实现对象的控制反转(由框架控制对象)将对象的控制权移交给框架。
对于初学者来讲,对资源的控制很难达到非常高的标准,由高级的设计人员完成这件事情就可以了。
IOC核心(思想的实现)-最核心的部件:
工厂:构建对象
容器:存储对象
注入:实现对象依赖关系的设置
IOC技术的实现(套路或模式):
1.反射(动态操作数据)+XML(描述数据)
2.反射(动态操作数据)+注解(描述数据)
Spring中的工厂
我们用ClassPathXmlApplicationContext或者用annotation注解的方式AnnotationConfigApplicationContext初始化xml,这些类都实现了ApplicationContext接口,ApplicationContext又继承了ListableBeanFactory,ListableBeanFactory又继承了BeanFactory接口,BeanFactory的理念是创建Bean对象的工厂,Context的上文是工厂,下文是容器,工厂创建对象,创建的对象放在容器,容器是map
public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory,
MessageSource, ApplicationEventPublisher, ResourcePatternResolver {}
public interface ListableBeanFactory extends BeanFactory {}
package org.springframework.beans.factory;
import org.springframework.beans.BeansException;
import org.springframework.core.ResolvableType;
public interface BeanFactory {
String FACTORY_BEAN_PREFIX = "&";
Object getBean(String name) throws BeansException;
<T> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
Object getBean(String name, Object... args) throws BeansException;
<T> T getBean(Class<T> requiredType, Object... args) throws BeansException;
boolean containsBean(String name);
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
boolean isPrototype(String name) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException;
boolean isTypeMatch(String name, Class<?> typeToMatch) throws NoSuchBeanDefinitionException;
Class<?> getType(String name) throws NoSuchBeanDefinitionException;
String[] getAliases(String name);
}
现阶段的程序员是消费者
生产者是IOC,创建对象,通过容器注入给消费者
谁用注入给谁
IOC基础:一个对象如何由Spring容器去创建,一个对象如何由spring容器去控制它的作用域,去控制它的生命周期,去实现对象的延时加载
IOC进阶:如何使用Spring的IOC为对象的属性注入值:基本类型(直接量)值的注入,集合类型值的注入,对象类型值的注入
IOC高级:注解方式实现IOC的思想
springIOC整合druid:因为druid在高并发情况下应用的非常完美
springIOC整合MyBatis,基于xml方式的整合和基于注解方式的整合
<bean class=" ">
@Controller
Class SysLogController{}