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

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

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 <i>created</i> 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> T getBean(String name, Class<T> requiredType) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException;
返回泛型 主要由于参数Class<T> requiredType决定的 所以返回你需要的类型

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 文章作者:Tyan博客:noahsnail.com 3.4 Dependencies A typical ente...
    SnailTyan阅读 4,285评论 2 7
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,877评论 18 399
  • 高温一直在延续,树上的知了吵闹的更是热了,回到屋子,冷气的凉丝直渗骨缝,昏昏欲睡的头脑冷不丁打了个寒颤,人的心就如...
    一心_b9bd阅读 533评论 2 6
  • 男人约会后,回到家已经是深夜了,老婆还坐在沙发上等他。 「这么晚了,还不睡?」他问。 「我看不到路,你带我回房间。...
    凱稜阅读 195评论 0 1