Drools集成CDI(一)

Drools對CDI進行了很好的集成,本節課帶你們先了解一下CDI的基本使用,在下一節課中再講解如何在Drools中應用CDI。

CDI簡介

CDI(Contexts and Dependency Injection 上下文依賴注入),是JAVA官方提供的依賴注入實現。html

@Inject是JSR330規範實現的,與spring中的@Autowired基本同樣,但沒有request屬性。java

可參看文檔及管網:spring

CDI的基本使用

Maven依賴

建立Maven項目,引入如下依賴:api

<!--CDI依賴開始-->
<dependency>
    <groupId>javax.enterprise</groupId>
    <artifactId>cdi-api</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>org.jboss.weld.se</groupId>
    <artifactId>weld-se-core</artifactId>
    <version>3.0.0.Final</version>
</dependency>
<!--CDI依賴結束-->

其中cdi-api在jdk1.6已經歸入j2ee中。weld-se-core是對cdi-api的封裝實現。微信

配置文件

在resources下面的META-INF目錄下添加beans.xml配置文件,配置文件中的具體配置可參看官方文檔。如下示例內容:架構

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd">

</beans>

具體實現

先建立一個服務類,DemoService,並提供一個打印的方法:this

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

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

建立調用類Chapter3並進行調用:spa

/**
 * @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用法一致。.net

關於此技術點,以錄製成視頻,發佈於《Drools7規則引擎進階教程》中,詳情可免費查看。code

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

相關技術視頻

CSDN學院:《Drools7規則引擎進階教程》

CSDN學院:《Drools7規則引擎入門教程》

關注微信公衆

更多技術、架構、管理等知識分享,請關注微信公衆號:程序新視界(ID:ershixiong_see_world)
程序新視界

相關文章
相關標籤/搜索