我有一个小型的春季启动应用程序,可以进行用户管理。
我想在我的其他spring-boot应用程序中将此UserManagement应用程序作为依赖项(gradle)包含在内。
我不想将UserManagement应用程序作为独立应用程序运行(它需要与父应用程序共享bean)。
我正在使用gradle和spring-boot插件。 我已将UserManagement jar作为依赖项包含在spring-boot ExampleApp中。
UserManagement应用程序在端口8081上运行嵌入式tomcat服务器。
ExampleApp在端口8080上运行嵌入式tomcat服务器。
除了我的UserManagement MVC UI之外,一切运作良好。
当我在端口8081上点击User-Management应用程序时,找不到我的MVC模板。
我似乎无法从父应用程序ExampleApp找到UserManagement应用程序的MVC模板。
弹簧靴是否可以实现这一点?
答案 0 :(得分:0)
是。你可以这样做。我不确定你是如何分享豆类的,但我想你也可以这样做。
<强> SpringApplicationBuilder 强>
由于“UserManagement”应用程序是一个依赖项,我假设您正在调用一种方法从您的父应用程序运行它
例如,你可能正在做这样的事情:
public class UserManagementApplication {
private static UserManagementApplication instance = null;
private final SpringApplicationBuilder springApplicationBuilder;
private ConfigurableApplicationContext context;
private UserManagementApplication() {
this.springApplicationBuilder = new SpringApplicationBuilder(UserManagementApplication.class);
}
public static void start() {
synchronized (UserManagementApplication.class) {
if (instance == null) {
/*
******** If singleton instance is null ***************************************
******** Create a new UserManagementApplication ******************************
*/
instance = new UserManagementApplication();
}
if (instance.context == null
|| !instance.context.isActive()) {
/*
******** If the context is null or not active ********************************
******** Create new SpringApplication and run it ****************************
******** Store the resulting ConfigurableApplicationContext in memory ********
*/
instance.context = instance.springApplicationBuilder.run(new String[]{});
}
}
}
public static void stop() {
synchronized (UserManagementApplication.class) {
if (instance == null
|| instance.context == null
|| !instance.context.isActive()) return;
/*
******** If the context is active ********************************************
******** Close the context **************************************************
******** Set context back to null ********************************************
*/
instance.context.close();
instance.context = null;
}
}
public static ConfigurableApplicationContext getContext() {
if (instance == null) return null;
return instance.context;
}
}
用户管理gradle.build和位置
例如,您的gradle构建可能如下所示:
buildscript {
ext {
springBootVersion = '2.0.0.M7'
}
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
maven { url 'http://repo.spring.io/plugins-release' }
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath 'io.spring.gradle:propdeps-plugin:0.0.9.RELEASE'
classpath 'org.springframework:springloaded:1.2.6.RELEASE'
}
}
ext {
springBootVersion = '2.0.0.M7'
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'groovy'
// apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'propdeps'
apply plugin: 'propdeps-idea'
group = 'com.example.userManagement'
sourceCompatibility = 1.8
repositories {
mavenCentral()
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
}
configurations {
includeInJar
}
dependencies {
compile('org.springframework.boot:spring-boot-starter-data-jpa')
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.boot:spring-boot-starter-groovy-templates')
compile('org.codehaus.groovy:groovy')
includeInJar("org.webjars:bootstrap:4.0.0")
includeInJar("org.webjars:jquery:3.3.1")
configurations.compile.extendsFrom(configurations.includeInJar)
}
idea {
module {
inheritOutputDirs = true
}
}
jar {
from configurations.includeInJar.collect { it.isDirectory() ? it : zipTree(it) }
}
compileJava.dependsOn(processResources)
MVC配置
此外,请确保您的MVC配置知道资源的位置。
例如,如果要扩展WebMvcConfigurerAdapter:
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/static/**").addResourceLocations("classpath:META-INF/resources/static/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:META-INF/resources/webjars/");
registry.addResourceHandler("/**").addResourceLocations("classpath:META-INF/");
}
MVC模板
如果你在src / main / resources / META-INF / resources / static / js中有一个“my-bundle.min.js”文件,你可以从你的mvc模板中找到它,如下所示:
<script src="/resources/static/js/my-bundle.min.js"></script>
我希望这有帮助!