Один из вариантов - использовать Spring Profiles. Это основано на абстракции среды Spring и позволяет указать, какие компоненты должны использоваться в какой среде, т. Е. На основе каких профилей являются активными в данном окружающая среда.
Документация здесь (или здесь для Spring Boot). Но, по сути, вы должны использовать аннотацию @Profile, чтобы указать, когда (т.е. в какой среде) активен класс конфигурации, например:
@Configuration
@Profile("dev")
@Aspect
@Component
@ConditionalOnExpression("${test.enable_loggable:true}")
public class LoggingAspect {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Around("@annotation(Loggable)")
public Object around(ProceedingJoinPoint point) {
long start = System.currentTimeMillis();
}
}
Идея в том, что вы можете сделать bean-компоненты "осведомленными об окружающей среде". Например, в зависимости от того, где запущено приложение, будут выбраны соответствующие классы конфигурации (например, «dev», «staging», «prod» или все, что вы укажете).
Как описано в документации, существует несколько способов активировать профиль. Но, пожалуй, самым простым является использование свойства spring.profiles.active Environment. Аннотированные классы профиля будут выбраны, если они соответствуют значению этого свойства:
spring.profiles.active=dev