¿Cómo se crean datos ficticios cuando se inicia la aplicación sólo en el perfil dev?
Estoy siguiendo este artículo para trabajar con perfiles de arranque primavera. Necesito crear ficticias datos cuando se inicia la aplicación, pero sólo en el perfil prog. ¿Cómo logro esto?
Mis implementa la clase ApplicationRunner
y anula el run
método para crear los datos. He intentado utilizar la @Profile("dev")
anotación como en el artículo, pero los datos se crea con independencia del perfil activo.
@SpringBootApplication
public class DemoApplication implements ApplicationRunner {
@Autowired
private UserService userService; //handles user saving
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Profile("dev")
@Override
public void run(ApplicationArguments arg0) throws Exception {
User user = new User();
user.setName("Dummy User");
userService.save(user);
}
}
En application.properties
, tengo
spring.profiles.active=test
Un usuario maniquí debe crearse sólo cuando el perfil activo es dev
pero está siendo creado en test
el perfil también.
@Profile
deben ser marcados con @Bean
o @Component
o su estereotipo (es decir @Serivce
, @Controller
, @Repository
etc.)
Basta con cambiar a:
@SpringBootApplication
public class DemoApplication {
@Autowired
private UserService userService; //handles user saving
@Profile("dev")
@Bean
public ApplicationRunner devApplicationRunner(){
return arg->{
User user = new User();
user.setName("Dummy User");
userService.save(user);
};
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
El código de DEV ApplicationRunner sólo se ejecutará si el perfil DEV está habilitada como a través de application.properties:
spring.profiles.active=dev