Не работает @ConfigurationProperties в аддонах композитного проекта

Здравствуйте!

Jmix version 2.2.3, композитный проект git@github.com:jmix-projects/sample-composite-project-2.git

Не пойму почему не работает в аддонах композитного проекта @ConfigurationPropertie.
Для примера, в любой из подпроектов типа Add-on (проверял в customers и products) композитного проекта sample-composite-project-2, можно вставить класс:

package com.company.products;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.bind.DefaultValue;

@ConfigurationProperties(prefix = "test.prop")
public class TestConfProperties {
    String testProp;

    public TestConfProperties(@DefaultValue("DEFAULT") String testProp) {
        this.testProp = testProp;
    }

    public String getTestProp() {
        return testProp;
    }
}

и мы получим исключение:

Description:

Failed to bind properties under 'test.prop' to com.company.products.TestConfProperties:

    Reason: java.lang.IllegalStateException: Unable to create instance for com.company.products.TestConfProperties

This may be due to missing parameter name information

Action:

Update your application's configuration

Ensure that your compiler is configured to use the '-parameters' flag.
You may need to update both your build tool settings as well as your IDE.
(See https://github.com/spring-projects/spring-framework/wiki/Upgrading-to-Spring-Framework-6.x#parameter-name-retention)

Если класс TestConfProperties поместить в приложение sales (Full-Stack Application) , то все норм.

Помогите пожалуйста, кто чем может :slight_smile:

Добрый день!

Попробуйте добавить аннотацию org.springframework.boot.context.properties.EnableConfigurationProperties на класс конфигурации аддона.

Добрый день!
Это первое что попробовал. Сейчас на другом рабочем месте ради интереса склонировал проект, добавил класс свойств по примеру выше, повесил аннотацию на класс конфигурации:

@Configuration
@ComponentScan
@ConfigurationPropertiesScan
@EnableConfigurationProperties(TestConfProperties.class)
@JmixModule(dependsOn = {EclipselinkConfiguration.class, FlowuiConfiguration.class, UsrConfiguration.class})
@PropertySource(name = "com.company.products", value = "classpath:/com/company/products/module.properties")
public class PrdConfiguration

Та же ошибка при запуске

Вы правы, проблема не в этом.
Решается добавлением следующего кода в корневой build.gradle аддона:

subprojects {
    // ...
    project.tasks.withType(JavaCompile).configureEach {
        options.compilerArgs.add("-parameters")
    }
}

Спасибо что обнаружили проблему, мы обновим шаблоны проектов:
ConfigurationProperties do not work in add-ons · Issue #3923 · jmix-framework/jmix

С уважением,
Константин

1 симпатия