2. spring框架的介绍 Introduction to the Spring Framework

对于spring框架其实不必说太多 就是基于java平台 可以让你快速构建应用的支持架构,spring解决了一些结构问题 所以你可以把心思花在 业务应用上 。
"plain old Java objects" (POJOs) 这个需要深刻体会和理解。
2.1说到了依赖注入和控制反转
好多人认为依赖注入和控制反转是一回事,我却不这么认为,觉得有了控制反转 才会有依赖注入 ,就是大家把bean的管理交给了spring 所以在用的时候才能随心注入到需要用的地方 不知道这么讲合适不合适。
2.2 Modules
关于spring的20个模块 估计都晓得了

2. spring框架的介绍 Introduction to the Spring Framework_第1张图片
Paste_Image.png

2.2.1 Core Container
The Core Container consists of the spring-core, spring-beans, spring-context, spring-context-support, and spring-expression (Spring Expression Language) modules.
依赖注入和控制反转 基本由 spring-core和spring-beans这两个jar包提供
BeanFactory是spring-bean模块非常重要的接口 是 Spring bean container 最上层的接口 ,其中类介绍中还有这么一句话 BeanFactory is a central registry of application components 说明这个是应用bean的注册中心。and centralizes configuration of application components 也是应用的配置中心
BeanFactory will load bean definitions stored in a configuration source (such as an XML document) BeanFactory 将加载配置文件中的资源 例如xml 其实.properties文件之类的也都是会加载的
该接口定义了一个属性
String FACTORY_BEAN_PREFIX = "&";
英文介绍是:
/**
* Used to dereference a {@link FactoryBean} instance and distinguish it from
* beans created by the FactoryBean. For example, if the bean named
* {@code myJndiObject} is a FactoryBean, getting {@code &myJndiObject}
* will return the factory, not the instance returned by the factory.
*/
我理解的大致意思是 作为引用这个实例 和区分由FatoryBean创建的beans
例如:一个被factoryBeanbean的名字是myJndiObject 获取的时候 &myJndiObject是这个对象本身 而不是这个对象的引用。不知道我这么理解是否正确?
Object getBean(String name) throws BeansException;
这个很好理解了 返回Object 其实是所有对象的父类
T getBean(String name, Class requiredType) throws BeansException;
T getBean(Class requiredType) throws BeansException;
返回泛型 主要由于参数Class requiredType决定的 所以返回你需要的类型

Object getBean(String name, Object... args) throws BeansException;
T getBean(Class 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;
这些都比较好理解 是判断bean
Class getType(String name) throws NoSuchBeanDefinitionException;
返回类型
String[] getAliases(String name);
返回别名 因为bean可以配置别名的。
其实大家这会可能要好奇了 不是说是注册中心吗 为什么没有set之类的
其实这也是我一直好奇的 不过可以在子类中找到 DefaultListableBeanFactory
里面会有好多map 这个等碰到的时候再讲吧 至于为什么不在接口中 我们后续再分析吧

你可能感兴趣的:(2. spring框架的介绍 Introduction to the Spring Framework)