Application Settings

This add-on provides a simple API and UI to work with mutable values of different types stored in database. These values are usually used as parameters of different functionality of the application.

Installation

For automatic installation through Jmix Marketplace, follow instructions in the Add-ons section.

For manual installation, add the following dependencies to your build.gradle:

implementation("io.jmix.appsettings:jmix-appsettings-starter")
implementation("io.jmix.appsettings:jmix-appsettings-ui-starter")

Usage

To define some settings, create an entity extending the io.jmix.appsettings.entity.AppSettingsEntity class:

@JmixEntity
@Table(name = "CUSTOMER_SETTINGS")
@Entity
public class CustomerSettings extends AppSettingsEntity {

    @Column(name = "NOTIFICATION_TEXT")
    private String notificationText;

    @AppSettingsDefault("B")
    @Column(name = "DEFAULT_GRADE")
    private String defaultGrade;

    @AppSettingsDefault("1000")
    @Column(name = "SALES_THRESHOLD", precision = 19, scale = 2)
    private BigDecimal salesThreshold;

    // getters and setters

After that, you will be able to set values for this entity attributes using the Administration → Application settings screen.

To get settings in the application code, use the AppSettings bean, for example:

@Autowired
private AppSettings appSettings;

@Subscribe
public void onInitEntity(InitEntityEvent<Customer> event) {
    CustomerSettings customerSettings = appSettings.load(CustomerSettings.class);
    CustomerGrade defaultGrade = customerSettings.getDefaultGrade();

    Customer customer = event.getEntity();
    customer.setGrade(defaultGrade);
}