17.與SpringBoot集成

2019-09-19 12:14 更新

17.與SpringBoot集成

使用

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

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

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

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

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

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

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

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

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

二次開發(fā)

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

可以看到這個(gè)項(xiàng)目比較簡(jiǎn)單,除了與spring boot相關(guān)的一些配置外,在com.bstek.urule.springboot包中只有四個(gè)類。Application類是spring boot啟動(dòng)的入口類,在這個(gè)類中,我們通過ImportResource這個(gè)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類是一個(gè)普通的Servlet,用來實(shí)現(xiàn)當(dāng)用戶輸入根路徑時(shí)可以直接跳到urule/frame這個(gè)頁面,如果你不希望這樣,那么就需要修改這個(gè)類。

URuleServletRegistration類中注冊(cè)了兩個(gè)Servlet,一個(gè)是IndexServlet,另一個(gè)就是URuleServlet,這個(gè)Servlet是URule Console Pro入口,所以必須要注冊(cè),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(),"/");
    }
}

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

通過這個(gè)項(xiàng)目,我們可以了解到URule Pro與spring boot的集成方式,實(shí)際使用時(shí)可以直接基于此項(xiàng)目源碼進(jìn)行修改,也可以按照此項(xiàng)目的配置方式將URule Pro添加到一個(gè)正在使用的spring boot項(xiàng)目當(dāng)中。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)