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 einePropertyPlaceholderConfigurer
. Zitieren Sie mich nicht auf, aber schauen Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie @Wert annotaion für Sie. Aber bevor es notwendig ist, zu erklären
<context:property-placeholder
im xml-Format.Sehen hier für details.
Auch einen anderen Weg:
Können Sie den Frühling
@Autowired
annotation als unten, aber stellen Sie sicher, dass Sie beschriften Sie Ihre Klasse mit@Component
oder ähnlichen.Auch sicherstellen, dass Ihr bean ist sichtbar für das Scannen, dh es sollte im
com.production
- Paket in Ihrem Fall.Component-scan) aktiviert werden soll, wie dies
oder