您的位置:首页 > 编程语言 > Java开发

spring IOC 详解

2015-06-26 19:32 676 查看
Hello World





HelloWorld.java

Main.java

applicationContext.xml

运行结果

调用构造函数...

创建对象

Hello,spring

也可以通过构造方法注入

特殊标记时也可以下面这么写

引用类型

内部bean,不能被外部引用,只能在内部使用

赋null值

为级联属性赋值(必须有set方法) 要先创建car才能赋值

为集合属性赋值(list set map)

自动装配(Person类中有address属性和car属性)

byName根据bean的名字和当前bean的setter风格的属性名进行自动装配。

byType根据bean的类型和当前bean的数学的类型进行自动装配。(如果有两个类型一样的bean就会出错)

缺点:在bean配置文件里设置autowire属性进行自动装配将会装配bean的所有属性。若只希望装配个别属性时,autowire属性就不够灵活了。autowire属性要么根据类型自动装配,要么根据名称自动装配,不能两者兼而有之。

一般情况下,在是寄到 项目中很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰的配置文档更有说服力一些。

bean配置的继承

抽象bean,只能被继承

bean之间的依赖关系

Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好。如果前置依赖于多个Bean,则可以通过逗号、空格的方式配置多个Bean。

bean配置的作用域

默认为单例singleton,容器初始化时创建bean实例,在整个容器的生命周期里只创建一个bean。

prototype原型,容器初始化时不创建bean实例,在每次请求时创建一个新的bean实例并返回。

引入外部配置文件

不引入配置文件时这么写. beans-properties.xml

引入外部配置文件

db.properties

beans-properties.xml写法

Spring表达式语言:SpEL。支持运行时查询和操作对象。

字面量的表示

整数

小数

科学计数法

String可以使用单引号或者双引号作为字符串的定界符号

Boolean

引用其他对象,等同ref

引用其他对象的属性

调用其他方法,还可以链式操作

为bean指定init方法和destroy方法

Bean后置处理器允许在调用初始化方法前后对bean进行额外的处理。Bean后置处理器对IOC容器里的所有的Bean实例逐一处理,而非单一实例。其典型应用是:检查Bean属性的正确性或根据特定的标准更改Bean属性。

Spring IOC容器对Bean的生命周期进行管理的过程

-通过构造器或工厂方法创建Bean实例

-为bean的属性设置值和对其他bean的引用

-将bean实例传递给bean后置处理器的postProcessBeforeInitialization方法

-调用bean的初始化方法

-将bean实例传递给bean后置处理器的postProcessAfterInitialization方法

-bean可以使用了

-容器关闭时,调用bean的销毁方法

静态工厂方法

实例工厂方法

通过FactoryBean配置Bean

在IOC容器中通过注解配置Bean

组件扫描(component scanning):Spring可以从classpath下自动扫描、侦测和实例化具有特定注解的组件。


特定组件包括:

-@Component 基本注解,标识了一个受Spring管理的组件

-@Repository 标识持久层组件

-@Service 标识服务层(业务层)组件

-@Controller 标识表现层组件

对于扫描到的组件,Spring有默认的莫名策略:使用非限定类名,第一个字母小写,也可以在注解中通过value属性值标识组件的名称。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: