如何在Springboot中使用Urule?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
创新互联公司长期为成百上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为旬阳企业提供专业的做网站、网站制作,旬阳网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
一、Urule-Server端:
1.1、 基于maven的SpringBoot基本环境搭建请参考SpringBoot教程
1.2、引入Urule相关依赖,urule-console-pro,开源版本可到https://search.maven.org
中心搜索,依赖如下:
org.springframework.boot spring-boot-starter-web com.bstek.urule urule-console-pro 2.1.0 org.slf4j slf4j-jdk14 javax.servlet servlet-api 2.5 provided org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.1 com.alibaba druid 1.0.9 MySQL mysql-connector-java
1.3、配置文件:两个,appplication.yml , application.properties
appplication.yml,配置数据库信息(我们把urule项目存到数据库中)
server: port: 8081 spring: application: name: UruleServer datasource: name: datasource jdbc-url: jdbc:mysql://127.0.0.1:3306/urule?useUnicode=true&characterEncoding=utf-8 username: root password: 666666 # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20
注意,我这此刻DataSource下不jdbc-url而不是url。根据SpringBoot版本自行调整
application.properties,配置项目储存位置
#若为本地环境需配置此路径 #urule.repository.dir=F:/EclipsePractice/03_SpringCloud/repo4rule #若为数据库,配置此项,两项均不配则系统指定默认地址 urule.repository.databasetype=mysql urule.repository.datasourcename=datasource ignore-unresolvable=true order=1
1.4、初始化bean
datesource
@Configuration public class configuration { @Bean public PropertySourcesPlaceholderConfigurer propertySourceLoader() { PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setIgnoreUnresolvablePlaceholders(true); configurer.setOrder(1); return configurer; } @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource datasource() { return DataSourceBuilder.create().build(); } }
serverlet
@Component public class URuleServletRegistration { @Bean public ServletRegistrationBeanregisterURuleServlet() { return new ServletRegistrationBean(new URuleServlet(), new String[] { "/urule/*" }); } }
1.5、启动类:
@SpringBootApplication @ImportResource({"classpath:urule-console-context.xml"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
二、客户端调用:
2.1、配置类
application.yml server: port: 8090 spring: application: name: UruleClient datasource: name: datasource url: jdbc:mysql://127.0.0.1:3306/myland?useUnicode=true&characterEncoding=utf-8 username: root password: 666666 # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver filters: stat maxActive: 20 initialSize: 1 maxWait: 60000 minIdle: 1 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: select 'x' testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxOpenPreparedStatements: 20 urule: ###服务端发现地址 resporityServerUrl: http://localhost:8081 ###knowledgeUpdateCycle为0时,不是检查缓存,每次都从服务端拉取,为1时,会先查找缓存 knowledgeUpdateCycle: 1
2.2、初始化bean
@Configuration public class RuleConfig { @Bean public PropertySourcesPlaceholderConfigurer propertySourceLoader() { PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer(); configurer.setIgnoreUnresolvablePlaceholders(true); configurer.setOrder(1); return configurer; } } @Component public class URuleServletRegistration { //此Servlet用于接收Urule服务端发布的知识包,使用开源版本时删除或者注释这个bean @Bean public ServletRegistrationBean registerURuleServlet(){ return new ServletRegistrationBean(new KnowledgePackageReceiverServlet(),"/knowledgepackagereceiver"); } }
2.3、controller:
@RestController public class TestController { @RequestMapping("/rule") public String getRara(@RequestParam String data)throws IOException{ KnowledgeService knowledgeService = (KnowledgeService) Utils.getApplicationContext().getBean(KnowledgeService.BEAN_ID); //参数,Urule项目名/知识包名 KnowledgePackage knowledgePackage = knowledgeService.getKnowledge("letasa/pare"); KnowledgeSession session = KnowledgeSessionFactory.newKnowledgeSession(knowledgePackage); Integer integer = Integer.valueOf(data); Mapparam = new HashMap(); //参数,var,传入参数,和参数库中定义一致 param.put("var", integer); session.fireRules(param); //result,返回参数,和参数库中定义一致 Integer result = (Integer) session.getParameter("result"); return String.valueOf(result); } }
2.4、启动类
@SpringBootApplication @ImportResource({"classpath:urule-core-context.xml"}) public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
Urule项目配置
参数库
规则
springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。
关于如何在Springboot中使用Urule问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。