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!