IOC与DI
基本概念
控制反转(Inversion of Control) 是一种是面向对象编程中的一种设计原则,用来减低计算机代码之间的耦合度。其基本思想是:借助于“第三方”实现具有依赖关系的对象之间的解耦。实现控制反转主要有两种方式:依赖注入 和依赖查找 。两者的区别在于,前者是被动的接收对象,在类A的实例创建过程中即创建了依赖的B对象,通过类型或名称来判断将不同的对象注入到不同的属性中,而后者是主动索取响应名称的对象,获得依赖对象的时间也可以在代码中自由控制。依赖注入 就是将实例变量传入到一个对象中去(Dependency injection means giving an object its instance variables)。 ICO与DI的关系
依赖注入 是一种设计模式控制反转 是一种设计原则,一种编程思想.IoC框架使用依赖注入作为实现控制反转的方式,但是控制反转还有其他的实现方式,比如依赖查找,所以不能将控制反转和依赖注入等同。 Spring中的依赖注入
Spring依赖注入的两种方式:setter方法注入(setter injection)和构造器注入(constructor injection) 参考
Spring中Bean的基本装配
两种注入方式,构造器注入(对应xml c空间),属性的settr方法注入(对应xml p空间) 基于xml装配
构造器注入: c-命名空间;元素:<constructor-arg ref="bean-id"/>
setter注入: p-命名空间;元素:<property name="属性名" ref="bean-id"/>
装配集合(此时命名空间无法做到),需用元素 基于注解装配
Spring3基于注解实现Bean依赖注入支持如下四种注解
spring自带依赖注入注解: Spring自带的一套依赖注入注解; JSR-250注解:Java平台的公共注解,是Java EE 5规范之一,在JDK6中默认包含这些注解,从Spring2.5开始支持。 JSR-330注解:Java 依赖注入标准,Java EE 6规范之一,可能在加入到未来JDK版本,从Spring3开始支持; JPA注解:用于注入持久化上下文和实体管理器。 Spring自带注解
@Required: 依赖检查,只能放置在setter方法上,要求xml中配置该Bean时必须注入. @Autowired 自动装配,默认是根据类型注入,可以用于构造器、字段、方法注入(不只settr方法) @Qualifier 与 Autowired 配合根据名字装配;(还能进行更细粒度的控制) @Component: 取代 声明bean, 用在要被自动扫描和装配的类上(类级别) @Bean , 声明一个single bean, 用法方法上(方法级别) JSR-250注解
@Resource:自动装配,默认根据类型装配,如果指定name属性将根据名字装配 SR-330注解
@Inject:等价于默认的@Autowired @Name,类似@Component Bean的生命周期
Bean高级装配
Bean的作用域 Spring profile
条件化的Bean声明 Spring表达式语言(SpEL)
示例代码及单元测试
@RunWith注解 @Rule注解 Assert用法 System Rules用法
代码
转载于:https://my.oschina.net/husthang/blog/840615