Bean Definition Profiles i Spring 3.1
Chris Beams bloggar om nya features från milestone-release nummer ett av kommande Spring Framework 3.1. I den första artikeln visar han ”Bean Definition Profiles”. Ett användningsområde för profiler är att kunna scopa in och ut komponenter beroende på om du exekverar din applikation i utvecklingsmiljön eller i produktionsmiljön. Han exemplifierar med klassikern att använda olika datakällor för utveckling och produktion:
<beans profile="dev">
<jdbc:embedded-database id="dataSource">
<jdbc:script
location="classpath:com/bank/config/sql/schema.sql"/>
<jdbc:script
location="classpath:com/bank/config/sql/test-data.sql"/>
</jdbc:embedded-database>
</beans>
<beans profile="production">
<jee:jndi-lookup
id="dataSource"
jndi-name="java:comp/env/jdbc/datasource"/>
</beans>
Det finns olika sätt att aktivera dessa profiler – exempelvis via web.xml, direkt i javakoden eller som en system-property.
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<init-param>
<param-name>spring.profiles.active</param-name>
<param-value>production</param-value>
</init-param>
</servlet>
ctx.getEnvironment().setActiveProfiles("test");
-Dspring.profiles.active="active"
Den andra artikeln visar hur man snyggt kan använda profiler mha annoteringen @Profile
och visar lite exempel javabaserad konfiguration via @Configuration
.
Läsvärt!