Wie autowire eine Feder Environment-Objekt

Ich versuche, um die Eigenschaften von einer .properties-Datei in einem Objekt meiner Anwendung. Meine nur das wissen, wie dies zu tun ist über die Environment Objekt.

Es funktioniert Super in meiner Konfiguration...

@Configuration
@ComponentScan(basePackages = {
        "com.production"
})
@PropertySource(value = {
        "classpath:/application.properties",
        "classpath:/environment-${FETTER_ENVIRONMENT}.properties"
})
@EnableJpaRepositories("com.production.repositories")
@EnableTransactionManagement
public class Config {
    private static final String PROPERTY_NAME_DATABASE_URL = "db.url";
    private static final String PROPERTY_NAME_DATABASE_USER = "db.user";
    private static final String PROPERTY_NAME_DATABASE_PASSWORD = "db.password";

    private static final String PROPERTY_NAME_HIBERNATE_DIALECT = "hibernate.dialect";
    private static final String PROPERTY_NAME_HIBERNATE_FORMAT_SQL = "hibernate.format_sql";
    private static final String PROPERTY_NAME_HIBERNATE_SHOW_SQL = "hibernate.show_sql";
    private static final String PROPERTY_NAME_ENTITYMANAGER_PACKAGES_TO_SCAN = "entitymanager.packages.to.scan";

    @Resource
    Environment environment;

Aber ich versuche, es zu tun in einer anderen Klasse und es ist null. Ich habe versucht, mit @Resource und @Autowired und manuelle Injektion.

Ist es etwas besonderes Environment dass dies verhindern?

@Component
public class Vendor {
    private String token;

    @Autowired
    private Environment environment;

    public Vendor() {
        //get token from config
        //Environment environment = (Environment) ApplicationContextProvider.getApplicationContext().getBean("environment");
        setToken(environment.getProperty("api.vendor.token"));
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}

Update: fand ich diese Ressource die highlights der Einsatz von @Value, aber ich glaube nicht, verwenden keine XML-Konfiguration in meiner Anwendung.

Sieht es aus wie das sein könnte was ich Suche: Laden Eigenschaften im Frühjahr 3.1 programmgesteuert

  • Ich glaube nicht, dass eine Umgebung ist relevant, alles andere als Anwendungs-Kontext laden.
  • Gibt es einen anderen Weg für mich, um Konfigurationselemente aus .properties-Dateien?
  • Die @Value annotation in den Sinn kommt, aber Sie haben, um das setup eine PropertyPlaceholderConfigurer. Zitieren Sie mich nicht auf, aber schauen Sie.
InformationsquelleAutor Webnet | 2013-03-13
Schreibe einen Kommentar