17.與SpringBoot集成

2019-09-19 12:14 更新

17.與SpringBoot集成

使用

URule Pro規(guī)則引擎與spring boot集成好的項目我們可以到https://oss.sonatype.org上下載,打開https://oss.sonatype.org,搜索關(guān)鍵字“urule-springboot”下載最新的urule-springboot包即可。

下載好urule-springboot的jar包,將這個jar放在一個非中文目錄下,在我們系統(tǒng)的D盤下創(chuàng)建一個名為repo目錄(用于存儲規(guī)則相關(guān)文件),打開操作系統(tǒng)命令行,切換到urule-springboot的jar包所在目錄,輸入如下命令即可運行這個spring boot項目:

java -jar urule-springboot-[version].jar

通過之前的章節(jié)介紹我們知道,URule Pro控制臺在運行時需要指定資源庫存儲的目錄路徑或存儲到數(shù)據(jù)庫時的配置文件,對于這里提供的urule-springboot包來說,默認情況下,它采用的是D盤的repo目錄下存儲資源庫,所以我們需要創(chuàng)建在啟動urule-springboot包前需要在D盤創(chuàng)建好repo目錄。如果我們不想使用D:\repo目錄來存儲資源庫,那么可以在運行命令后添加–urule.repository.dir參數(shù)來改變存儲目錄,如下所示:

java -jar urule-springboot-[version].jar --urule.repository.dir=C:\repo

上面的命令中,通過在命令后面添加–urule.repository.dir參數(shù),將資源庫存儲目錄修改為C盤下的repo目錄。

以上命令要求我們的系統(tǒng)當中已安裝好1.7或以上版本的JDK,同時也已配置好JDK環(huán)境參數(shù),否則執(zhí)行上述命令將會報找到不命令關(guān)鍵字的錯誤。

啟動好后,打開瀏覽器,輸入http://localhost:8080,就可以看到URule Pro提供的控制臺頁面。

URule Pro提供的spring boot集成包,采用的是Tomcat,默認采用的是8080端口號,如果需要更改,那么可以在啟動命令后添加--server.port參數(shù),比如--server.port=80,這就表示采用80端口,啟動后,直接瀏覽http://localhost就可以看到URule控制臺,就不需要再輸入端口號了。啟動命令更多參數(shù)可以到spring boot官網(wǎng)上查看。

二次開發(fā)

默認提供的URule Pro與spring boot集成的版本功能相對簡單,如果您需要URule Pro與spring boot集成的版本能實現(xiàn)在數(shù)據(jù)庫中存儲資源庫、為URule控制臺添加安全限制等,同時您又熟悉spring boot,那么可以到https://github.com/youseries/urule/tree/master/urule-springboot上下載URule Pro與spring boot集成的項目源碼做二次開發(fā)即可。

可以看到這個項目比較簡單,除了與spring boot相關(guān)的一些配置外,在com.bstek.urule.springboot包中只有四個類。Application類是spring boot啟動的入口類,在這個類中,我們通過ImportResource這個annotation加載了URule Console Pro的spring配置文件classpath:urule-console-context.xml,如下源碼所示:

package com.bstek.urule.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory;
import org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.ImportResource;
/**
 * @author Jacky.gao
 * @since 2016年10月12日
 */
@Configuration
@ComponentScan
@EnableAutoConfiguration
@ImportResource({"classpath:urule-console-context.xml"})
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }


    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
        return tomcat;
    }
}

IndexServlet類是一個普通的Servlet,用來實現(xiàn)當用戶輸入根路徑時可以直接跳到urule/frame這個頁面,如果你不希望這樣,那么就需要修改這個類。

URuleServletRegistration類中注冊了兩個Servlet,一個是IndexServlet,另一個就是URuleServlet,這個Servlet是URule Console Pro入口,所以必須要注冊,URuleServletRegistration類源碼如下:

package com.bstek.urule.springboot;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import com.bstek.urule.console.servlet.URuleServlet;
/**
 * @author Jacky.gao
 * @since 2016年10月12日
 */
@Component
public class URuleServletRegistration {
    @Bean
    public ServletRegistrationBean registerURuleServlet(){
        return new ServletRegistrationBean(new URuleServlet(),"/urule/*");
    }
    @Bean
    public ServletRegistrationBean registerIndexServlet(){
        return new ServletRegistrationBean(new IndexServlet(),"/");
    }
}

最后一個類是PropertiesConfiguration,但這個類實際沒用被用到,因此其類級別的@Component被注釋掉了,所以這個類實際上是個示例類,用來說明如果我們需要覆蓋URule Pro中默認參數(shù)該怎么做。比如上面的代碼當中,如果我們需要采用數(shù)據(jù)庫來存儲資源庫,那么就可以通過urule.repository.xml屬性來指定一個數(shù)據(jù)庫配置的xml。做好之后打開其類級別的@Component注釋即可,這樣spring boot在啟動時就會加載這個類,從而實現(xiàn)將URule Pro中默認參數(shù)覆蓋的目的。

package com.bstek.urule.springboot;
import java.util.Properties;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import com.bstek.urule.URulePropertyPlaceholderConfigurer;
/**
 * @author Jacky.gao
 * @since 2016年10月12日
 */
//@Component
public class PropertiesConfiguration extends URulePropertyPlaceholderConfigurer implements InitializingBean{
    @Override
    public void afterPropertiesSet() throws Exception {
        Properties props=new Properties();
        props.setProperty("urule.repository.xml", "classpath:mysql.xml");   
        setProperties(props);
    }
}

通過這個項目,我們可以了解到URule Pro與spring boot的集成方式,實際使用時可以直接基于此項目源碼進行修改,也可以按照此項目的配置方式將URule Pro添加到一個正在使用的spring boot項目當中。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號