Drools對CDI進行了很好的集成,本節課帶你們先了解一下CDI的基本使用,在下一節課中再講解如何在Drools中應用CDI。
CDI(Contexts and Dependency Injection 上下文依賴注入),是JAVA官方提供的依賴注入實現。html
@Inject是JSR330規範實現的,與spring中的@Autowired基本同樣,但沒有request屬性。java
可參看文檔及管網:spring
建立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)