Jhipster 在何处以及如何定义应用程序属性?-杰普斯特

Jhipster 在何处以及如何定义应用程序属性?-杰普斯特,jhipster,Jhipster,在Spring引导中,可以在application.properties文件中定义应用程序属性。例如,Rest的前缀可以定义为 spring.data.rest.basePath=api 对于基于Spring Boot的JHipster,我想可以在application.yml文件中定义应用程序属性。但以下方法对我都不起作用:404错误 spring.data.rest.basePath: api spring: data: rest: bas

在Spring引导中,可以在application.properties文件中定义应用程序属性。例如,Rest的前缀可以定义为

spring.data.rest.basePath=api
对于基于Spring Boot的JHipster,我想可以在application.yml文件中定义应用程序属性。但以下方法对我都不起作用:404错误

spring.data.rest.basePath: api

spring:
    data:
        rest:
            basePath: api

另一种可能是配置本身不起作用

应用程序.yml应该有空格而不是制表符

试着这样做:

spring:
    data:
        rest:
            basePath: api
在我的应用程序中,文件位于以下路径中:

src\main\resources\config\application.yml

我也有同样的问题,终于解决了

引自Jhipster网站:

生成的应用程序也可以有自己的Spring引导属性。这是强烈建议的,因为它允许应用程序的类型安全配置,以及IDE中的自动完成和文档

JHipster已经在配置包中生成了一个ApplicationProperties类,该类已经预配置,并且已经在底部的application.yml、application-dev.yml和application-prod.yml文件中记录了该类。您只需编写自己的特定属性代码

在我的例子中,我已经在applicationon-prod.yml中设置了属性

application:
    redis:
        host: vnode1
        pool:
            max-active: 8
            max-idle: 8
            max-wait: -1
            min-idle: 0
        port: 6379
在ApplicationProperties类中:

@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
public class ApplicationProperties {

    public final Redis redis = new Redis();

    public Redis getRedis() {
        return redis;
    }

    public static class Redis {

        private String host = "127.0.0.1";

        private int port = 0;

        public String getHost() {
            return host;
        }

        public void setHost(String host) {
            this.host = host;
        }

        public int getPort() {
            return port;
        }

        public void setPort(int port) {
            this.port = port;
        }

        private Pool pool = new Pool();

        public void setPool(Pool pool) {
            this.pool = pool;
        }

        public Pool getPool() {
            return this.pool;
        }

        public static class Pool {
            private int maxActive = 8;
            private int maxWait = -1;

            public int getMaxIdle() {
                return maxIdle;
            }

            public void setMaxIdle(int maxIdle) {
                this.maxIdle = maxIdle;
            }

            private int maxIdle = 8;
            private int minIdle = 0;


            public void setMaxActive(int maxActive) {
                this.maxActive = maxActive;
            }

            public int getMaxActive() {
                return maxActive;
            }

            public int getMinIdle() {
                return minIdle;
            }

            public void setMinIdle(int minIdle) {
                this.minIdle = minIdle;
            }

            public int getMaxWait() {
                return maxWait;
            }

            public void setMaxWait(int maxWait) {
                this.maxWait = maxWait;
            }
        }

    }
}
然后我将其用作:

private final ApplicationProperties.Redis redis;
public RedisConfiguration(ApplicationProperties applicationProperties){
    redis = applicationProperties.getRedis();
}
例如,使用
max wait
host

this.redis.getPool().getMaxWait();
this.redis.getHost();

希望能有帮助。

在尝试了几十次如何处理这个问题后,我终于想出了如何让它工作。也许它会对某些人有用

要为控制器使用前缀(比如说
jh
),我们需要使用
server.servlet.context path
,而不是
spring.data.rest.basePath

链接到文档

因此,
application.yml
应该如下所示:

server:
    servlet:
        context-path: /jh
        session:
            cookie:
                http-only: true

此链接中的信息也有助于解决此问题

按照上面的海丰张答案构建应用程序配置类后,您可以通过以下方式在任何位置访问这些属性:

@自动连线 私有应用程序属性redis

然后访问属性


int myEnvironmentPort=redis.getPort()

你是说另一行下面的一行应该以空格开头,而不是制表符?application.yml中生成的行看起来像pre,为我增加了一个选项卡空间。我正在处理另一个问题,将返回测试这个问题。感谢您的输入。是什么让您认为OP使用了制表符,而不是空格?我注意到application.yml文件中有多少空格。我曾尝试在新行前面多放一个空格,在新行前面多放四个空格,但运气不好。如果您所指的位置是application.yml文件的目录,那么我只使用src\main\resources\config\application.yml目录中的文件。我正在尝试将其用于应该为上载路径提供一些配置的服务中。在服务中,我使用私有的final ApplicationProperties.Redis;public RedisConfiguration(ApplicationProperties ApplicationProperties){redis=ApplicationProperties.getRedis();}我得到一个错误:变量可能尚未配置。因为我想这是决赛。嘿。您找到在jHipster spring引导中设置基本路径的解决方案了吗?我也面临同样的问题。