Normalerweise konfiguriere ich den applicationContext mithilfe einer auf Anmerkungen basierenden Konfiguration anstelle einer XML-basierten Konfiguration . Jedenfalls glaube ich, dass beide die gleiche Priorität haben .
* Bei der Beantwortung Ihrer Frage hat die Systemvariable eine höhere Priorität *
Profilbasierte Beans aus applicationContext abrufen
Verwenden Sie @Profile für eine Bohne
@Component
@Profile("dev")
public class DatasourceConfigForDev
Nun ist das Profil dev
Hinweis: Wenn das Profil als angegeben
@Profile("!dev")
wird, schließt das Profil dev aus und gilt für alle anderen.
Verwenden Sie das Profilattribut in XML
<beans profile="dev">
<bean id="DatasourceConfigForDev" class="org.skoolguy.profiles.DatasourceConfigForDev"/>
</beans>
Legen Sie den Wert für das Profil fest:
Programmatisch über die WebApplicationInitializer-Schnittstelle
In Webanwendungen kann WebApplicationInitializer verwendet werden, um den ServletContext programmgesteuert zu konfigurieren
@Configuration
public class MyWebApplicationInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
servletContext.setInitParameter("spring.profiles.active", "dev");
}
}
Programmatisch über ConfigurableEnvironment
Sie können Profile auch direkt in der Umgebung festlegen:
@Autowired
private ConfigurableEnvironment env;
env.setActiveProfiles("dev");
Kontextparameter in web.xml
Profile können auch in der Datei web.xml der Webanwendung mithilfe eines Kontextparameters aktiviert werden:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/app-config.xml</param-value>
</context-param>
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>dev</param-value>
</context-param>
JVM-Systemparameter
Die als Parameter übergebenen Profilnamen werden beim Start der Anwendung aktiviert:
-Dspring.profiles.active=dev
In IDEs können Sie die Umgebungsvariablen und -werte festlegen, die beim Ausführen einer Anwendung verwendet werden sollen. Das Folgende ist die Run-Konfiguration in Eclipse:
Jede Bean, die kein Profil angibt, gehört zum Standardprofil.
Die Prioritätsreihenfolge lautet:
- Kontextparameter in web.xml
- WebApplicationInitializer
- JVM-Systemparameter
- Umgebungsvariable