Eri*_*ric 5 spring spring-boot
作为一家企业,我们希望在我们的 PCF 实例上内部托管初始化程序,我可以做到。我还能够修改 application.yml 以默认某些选择。
我通过简单地创建我自己的 spring-boot 应用程序来做到这一点,该应用程序使用 io.spring.initializr:initializr-web:0.3.0.RELEASE 作为运行时依赖项。
我有两个主要问题:
有一个参考指南可以引导您创建自己的实例。关于您的主要问题:
是的,这在自定义实例中是可能的。实现ProjectRequestPostProcessor这两个依赖项并将其添加到项目中。
@Component
class PreselectedDependenciesRequestPostProcessor implements ProjectRequestPostProcessor {
private final InitializrMetadataProvider metadataProvider;
public PreselectedDependenciesRequestPostProcessor(
InitializrMetadataProvider metadataProvider) {
this.metadataProvider = metadataProvider;
}
@Override
public void postProcessAfterResolution(ProjectRequest request,
InitializrMetadata metadata) {
DependenciesCapability dependencies = metadataProvider.get().getDependencies();
if (!hasDependencies(request, "web")) {
request.getResolvedDependencies().add(dependencies.get("web"));
}
if (!hasDependencies(request, "security")) {
request.getResolvedDependencies().add(dependencies.get("security"));
}
}
private boolean hasDependencies(ProjectRequest request, String... dependenciesId) {
for (String id : dependenciesId) {
if (getDependency(request, id) == null) {
return false;
}
}
return true;
}
private Dependency getDependency(ProjectRequest request, String id) {
return request.getResolvedDependencies().stream()
.filter(d -> id.equals(d.getId())).findFirst().orElse(null);
}
}
Run Code Online (Sandbox Code Playgroud)
它们不会在 UI 中被选择,但会像用户选择它们一样集成到项目中。我推荐这种方法的原因是您的自定义实例可以通过 IDE 集成以与主 (start.spring.io) 实例相同的方式定位。破解 Web UI 只会使该功能适用于特定客户端,在我看来,这是一个问题。
对于第二个问题,大多数 fork 都会扩展ProjectGenerator并做任何他们想做的事情(包括覆盖 gradle 构建)。检查该类以获取更多详细信息。
Spring Initializr 还没有达到 1.0,所以它还没有处于合约足够成熟的状态。
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |