17.2.2. Plexus简介

用Java实现的IoC容器中,最重要的一个功能是称作依赖注入的机制。IoC的基本想法是将对象的创建和管理从代码中剥离,并将控制放到IoC框架手中。在一个面向接口编程的应用程序中使用依赖注入,你创建的组件可以不与任何特定的接口实现绑定。你的程序也针对接口编程并通过配置Plexus来将正确的实现连接到正确的组件。虽然你的代码都是与接口打交道,但你仍然可以通过一个定义组件的XML文件来获得类和组件相互依赖的信息。换句话说,你可以编写独立的组件,然后你可以通过一个XML文件来定义组件应当如何被装配在一起。在Plexus的情形中,定义系统组件的XML文档位于META-INF/plexus/components.xml

在一个Java IoC容器中,有很多中方法将依赖值注入到一个组件对象中:构造器,set方法,或者字段注入。虽然Plexus提供全部这三种依赖注入技术,Maven只使用其中的两种:字段注入和set方法注入。

构造器注入

构造器注入是指当对象实例被创建的时候,通过对象的构造方法填入对象的值。例如,如果你有类对象Person,其构造方法是Person(String name, Job job),你就可以通过该构造器传入namejob的值。

set方法注入

set方法注入是指使用Java Bean属性的set方法来填入对象依赖。例如,如果你有一个带有namejob属性的Person对象,一个使用set方法注入的IoC容器会使用无参构造器创建一个Person的实例,之后,它会继续调用setName()setJob()方法。

字段注入

构造器和set方法注入都依赖于公共方法。而使用字段注入的时候,IoC容器通过直接设置对象字段的值来填入组件依赖。例如,如果你有一个带有namejob字段的Person对象,你的IoC容器会直接设置这两个字段来填入依赖(如:person.name = "Thomas"; person.job = job;)。