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属性值标识组件的名称。
HelloWorld.java
调用构造函数...
创建对象
Hello,spring
也可以通过构造方法注入
byName根据bean的名字和当前bean的setter风格的属性名进行自动装配。
byType根据bean的类型和当前bean的数学的类型进行自动装配。(如果有两个类型一样的bean就会出错)
缺点:在bean配置文件里设置autowire属性进行自动装配将会装配bean的所有属性。若只希望装配个别属性时,autowire属性就不够灵活了。autowire属性要么根据类型自动装配,要么根据名称自动装配,不能两者兼而有之。
一般情况下,在是寄到 项目中很少使用自动装配功能,因为和自动装配功能所带来的好处比起来,明确清晰的配置文档更有说服力一些。
Spring允许用户通过depends-on属性设定Bean前置依赖的Bean,前置依赖的Bean会在本Bean实例化之前创建好。如果前置依赖于多个Bean,则可以通过逗号、空格的方式配置多个Bean。
默认为单例singleton,容器初始化时创建bean实例,在整个容器的生命周期里只创建一个bean。
prototype原型,容器初始化时不创建bean实例,在每次请求时创建一个新的bean实例并返回。
不引入配置文件时这么写. beans-properties.xml
db.properties
字面量的表示
整数
-通过构造器或工厂方法创建Bean实例
-为bean的属性设置值和对其他bean的引用
-将bean实例传递给bean后置处理器的postProcessBeforeInitialization方法
-调用bean的初始化方法
-将bean实例传递给bean后置处理器的postProcessAfterInitialization方法
-bean可以使用了
-容器关闭时,调用bean的销毁方法
静态工厂方法
组件扫描(component scanning):Spring可以从classpath下自动扫描、侦测和实例化具有特定注解的组件。
特定组件包括:
-@Component 基本注解,标识了一个受Spring管理的组件
-@Repository 标识持久层组件
-@Service 标识服务层(业务层)组件
-@Controller 标识表现层组件
对于扫描到的组件,Spring有默认的莫名策略:使用非限定类名,第一个字母小写,也可以在注解中通过value属性值标识组件的名称。
相关文章推荐
- Java中的静态绑定和动态绑定
- Java中ArrayList类的用法(转)
- Java 持有对象
- java获取当前系统信息
- Java主线程等待所有子线程执行完毕再执行解决办法
- 深入探究JVM(1) - Java的内存区域解析
- ICTCLAS2015 Java版本的使用方法
- 【密钥算法】Java加密技术(八)---Java证书体系
- java设计模式之——代理模式
- 【密钥算法】Java加密技术(七)---ECC 数据加密算法
- 【密钥算法】Java加密技术(六)---DSA 数字签名算法
- 【密钥算法】Java加密技术(五)---DH 数据加密算法
- 【密钥算法】Java加密技术(四)---RSA数据加密算法(1)
- 【密钥算法】Java加密技术(二)---DES数据加密算法
- 【密钥算法】Java加密技术(三)---PBE 数据加密算法
- spring配置定时任务
- spring框架学习之一
- java 日志记录使用slf4j优于log4j的原因
- 几个Eclipse小设置
- JAVA对ArrayList排序