Drools集成CDI(一)

Drools对CDI进行了很好的集成,本节课带大家先了解一下CDI的基本使用,在下一节课中再讲解如何在Drools中应用CDI。

CDI简介

CDI(Contexts and Dependency Injection 上下文依赖注入),是JAVA官方提供的依赖注入实现。

@Inject是JSR330规范实现的,与spring中的@Autowired基本一样,但没有request属性。

可参看文档及管网:

  • Weld官网:http://weld.cdi-spec.org/
  • CDI文档:http://docs.jboss.org/cdi/tck...
  • CDI最新版本说明:http://www.cdi-spec.org/news/

CDI的基本使用

Maven依赖

创建Maven项目,引入以下依赖:



    javax.enterprise
    cdi-api
    2.0


    org.jboss.weld.se
    weld-se-core
    3.0.0.Final

其中cdi-api在jdk1.6已经纳入j2ee中。weld-se-core是对cdi-api的封装实现。

配置文件

在resources下面的META-INF目录下添加beans.xml配置文件,配置文件中的具体配置可参看官方文档。以下示例内容:




具体实现

先创建一个服务类,DemoService,并提供一个打印的方法:

/**
 * @author zzs
 */
public class DemoService {

    public void print(){
        System.out.println("Hello Drools!");
    }
}

创建调用类Chapter3并进行调用:

/**
 * @author zzs
 */
public class Chapter3 {

    private final DemoService demoService;

    @Inject
    public Chapter3(DemoService demoService) {
        this.demoService = demoService;
    }

    private void print() {
        this.demoService.print();
    }

    public static void main(String[] args) {
        SeContainer seContainer = null;
        try {
            seContainer = SeContainerInitializer.newInstance().initialize();

            Chapter3 chapter3 = seContainer.select(Chapter3.class).get();

            chapter3.print();
        } finally {
            if (seContainer != null && seContainer.isRunning()) {
                seContainer.close();
            }
        }
    }

}

执行main方法,控制台打印“Hello Drools”,即可看到整个过程的实现。这里需要注意的是在构造方法上使用了@Inject,@Inject和我们平时在Spring中使用的@Autowired用法一致。

关于此技术点,以录制成视频,发布于《Drools7规则引擎进阶教程》中,详情可免费查看。

原文链接:https://www.choupangxia.com/t...

相关技术视频

CSDN学院:《Drools7规则引擎进阶教程》

CSDN学院:《Drools7规则引擎入门教程》

关注微信公众

更多技术、架构、管理等知识分享,请关注微信公众号:程序新视界(ID:ershixiong_see_world)

你可能感兴趣的:(drools)