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项目,引入以下依赖:
<!--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,并提供一个打印的方法:
/**
* @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)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。