现在的位置: 首页 > 综合 > 正文

控制反转与依赖注入

2018年01月25日 ⁄ 综合 ⁄ 共 954字 ⁄ 字号 评论关闭

传统的资源查找方式要求组件向容器发起请求来查找资源,作为回应,容器适时地返回资源。而应用了Ioc之后,则是容器主动地将资源推送到它所管理的组件里,组件所要做的仅仅是选择一种合适的方式来接受资源。这种行为被称为查找的被动形式。

Ioc(控制反转)是一种通用的设计原则,而DI(依赖注入)则是具体的设计模式,它体现了Ioc的设计原则。在DI模式里,容易以一些预先定义好的方式(例如通过setter方法)将匹配的资源注入到每个组件里。

Spring提供了两种类型的Ioc容器实现。基础的实现是Bean Factory,高级的实现是Application Context。与Bean Factory来说,Application Context在兼容基础特性的同时还提供了很多高级特性。所以,除非应用程序的资源受限制,例如,应用程序需要运行于apple或移动设备里,否则我强烈建议为每个应用程序都是用Application Context.

ApplicationContext是BeanFactory的子接口。

<bean></bean> 中的property的取值必须是有setter方法的属性,此属性可以不是类的实例变量。如:

public class DatePrefixGenerator {
private DateFormat formatter;
public void setPattern(String pattern){
this.formatter=new SimpleDateFormat(pattern);
}
}

<bean id="dateprefixgenerator" class="com.apress.springrecipes.hello.DatePrefixGenerator">
<property name="pattern" value="yyyyMMdd"></property>
</bean>

Spring2.5提供了一个强大的特性,这个特性称为组件扫描。它能够从classpath里自动扫描,侦测和实例化具有特定注解的组件。基本的注解是@component,它标识了一个受Spring管理的组件。其他特定的注解包括@Repository、@Service和@Controller,它们分别标识了在持久层、服务层和表现层的组件。

抱歉!评论已关闭.