java - 如何在不添加任何代码的情况下使类可配置?

标签 java configuration annotations libraries

我希望能够(用 Java)编写如下内容:

public class A implements MagicallyConfigurable {

    @configuration_source_type{"xml"}
    @configuration_dir{"some/rel/path/"}

    /* or maybe some other annotations specifying a db-based configuration etc. */

    int length = 4 /* some kind of default */;
    char c = '*' /* some kind of default */;

    @do_not_configure
    String title;

    A(String title) {

        /* possibly, but hopefully no need to, something like:
        configure();
        call here. */

        this.title = title;
    }

    void goForIt() {
        System.out.println(title);
        for(int i=0; i < length; i++) {
            System.out.print(c);
        }
    }
}

并使其按预期工作。也就是说,我唯一需要根据配置初始化字段的是添加一些注释、实现接口(interface)并可能进行单个函数调用(但希望没有它)。

我确信这在理论上是可行的,问题是是否存在支持它的现有库/框架/附加组件/thingie。 (也许 Apache commons.configuration 不知何故?以前没有使用过它。)

最佳答案

你能做的就是使用Spring 3.0 EL。可以找到一个示例 here ,但基本上可以归结为您可以执行以下操作:

@Value("#{systemProperties.databaseName}")
public void setDatabaseName(String dbName) { ... }

并且您的属性将被自动设置。这适用于 setter 和属性。

关于java - 如何在不添加任何代码的情况下使类可配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14622549/

相关文章:

java - Spring boot 自定义注解中的切面

java - 使用setter方法创建Spring bean - 空指针异常

java - 我可以只使用HashMap吗?

java - 如何将字符串统一解析成BigDecimal?

java - 过滤特定库的 gradle 配置

java - 不必要的@SuppressWarnings ("unused")

java - 在 Java 8 中测试 Lambda

java - RabbitMQ 始终远程连接到 guest 用户

Symfony 2.4 : An error occurred while loading the web debug toolbar (404: Not Found)

java - 避免一组java注解一起使用