版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Delicious_Life/article/details/88780301
目录
IOC
Inversion of Control,控制反转。其思想是反转资源获取的方向,用来降低代码之间的耦合度。传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源,而应用了IOC之后,则是容器主动地将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源。这种行为也被称为查找的被动形式
DI
Dependency Injection :依赖注入是IOC最常见的方式。即组件以一些预先定义好的方式接受来自如容器的资源注入,相对于IOC,这种表达更直接
Spring容器
Spring提供了两种类型的IOC容器实现:
-
BeanFacotry:IOC容器的基本实现,是Spring框架的基础设施,面向Spring本身
-
ApplicationContext: 提供了更多的高级特性,是BeanFacotory的子接口。这种方法面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext 而非底层的BeanFactory。在初始化上下文时就实例化所有单独的Bean
ApplicationContext的主要实现类
ClassPathXmlApplicationContext:从类路径下加载配置文件
FileSystemXmlApplicationContext:从文件系统中加载配置文件
ConfigurableApplicationContext扩展于ApplicationContext,新增了两个主要方法refresh()和close(),具有了启动,刷新和关闭的能力
WebApplicationContext:是专门为WEB应用而准备的,它允许从相对于WEB根目录的路径中完成初始化工作
Spring支持的三种依赖注入(DI)方式
-
属性注入:通过setter方法注入Bean的属性值或依赖的对象。属性注入使用<property>元素。使用name属性指定Bean的属性名称,value属性或<value>子节点指定属性值。属性注入是实际应用中最常用的注入方式。
-
构造器注入:通过构造方法注入Bean的属性值或依赖的对象,它保证了Bean实例在实例化之后就可以使用。构造器注入在<constructor-arg>元素里声明属性。<constructor-arg>中没有name属性。
-
工厂方法注入:(很少使用,不推荐)
什么是字面值
可用字符串表示的值,可以通过<value>元素标签或value属性进行注入。
基本数据类型及其封装类,String等类型都可以采取字面值注入的方式。
若字面值中包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来。
引用其他Bean
在Bean的配置文件中,可以通过<ref> 元素或ref属性为Bean的属性或构造器参数指定对Bean的引用。以便起到Bean之间的相互合作的作用。
内部Bean
当Bean实例仅仅给一个特定的属性使用时,可以将其声明为内部Bean。内部Bean声明直接包含在<Property>或<constructor-arg>元素里,不需要设置任何id或name属性。内部Bean不能使用在任何其他地方。
Spring的级联属性