一、Spring2大核心:IOC和AOP
IOC控制反转:由容器来创建对象,管理对象之间的依赖耦合关系
二、来看工厂核心接口:BeanFactory
package org.springframework.beans.factory; import org.springframework.beans.BeansException; 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; <T> T getBean(Class<T> requiredType, Object... args) throws BeansException; boolean containsBean(String name); boolean isSingleton(String name) throws NoSuchBeanDefinitionException;//判断是否是单例 只创建一次 bean的生成方式之一 boolean isPrototype(String name) throws NoSuchBeanDefinitionException;//判断是否是原型 每次都创建对象 bean的生成方式之一 boolean isTypeMatch(String name, ResolvableType typeToMatch) throws NoSuchBeanDefinitionException; Class<?> getType(String name) throws NoSuchBeanDefinitionException; String[] getAliases(String name); 总结:这个类是Spring所有bean的工厂,其实IOC的核心思想就是运用了工厂设计模式,通过Bean名称返回对应的实例。 关键点:一、对各种bean的定义 二、bean的对应关系 三、读取xml工具类 spring中可以配置 lazy-init=true,让bean在需要的时候进行初始化。 三、bean定义的接口:BeanDefinition
package org.springframework.beans.factory.config; import org.springframework.beans.BeanMetadataElement; public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { String SCOPE_SINGLETON = ConfigurableBeanFactory.SCOPE_SINGLETON; String SCOPE_PROTOTYPE = ConfigurableBeanFactory.SCOPE_PROTOTYPE; int ROLE_APPLICATION = 0; int ROLE_SUPPORT = 1; int ROLE_INFRASTRUCTURE = 2; String getParentName(); void setParentName(String parentName); String getBeanClassName(); void setBeanClassName(String beanClassName); String getFactoryMethodName(); void setFactoryMethodName(String factoryMethodName); void setScope(String scope); void setLazyInit(boolean lazyInit); String[] getDependsOn();//获取依赖的bean void setDependsOn(String... dependsOn);//设置依赖的bean boolean isAutowireCandidate(); void setAutowireCandidate(boolean autowireCandidate); boolean isPrimary(); void setPrimary(boolean primary); ConstructorArgumentValues getConstructorArgumentValues(); MutablePropertyValues getPropertyValues(); boolean isSingleton(); boolean isPrototype(); boolean isAbstract(); int getRole(); String getDescription(); String getResourceDescription(); BeanDefinition getOriginatingBeanDefinition();