Sobes.tech
Junior — Middle

É possível definir um Bean específico para injeção no Spring com base em certas condições?

sobes.tech IA

Resposta da IA

No Spring, pode definir um Bean específico para injeção com base em condições usando as anotações @Conditional, @Profile ou através da configuração do código Java.

Por exemplo, com @Profile, pode criar diferentes implementações de Bean para diferentes ambientes:

@Profile("dev")
@Bean
public MyService devService() {
    return new DevServiceImpl();
}

@Profile("prod")
@Bean
public MyService prodService() {
    return new ProdServiceImpl();
}

Ao iniciar a aplicação, o perfil necessário é ativado e o Bean correspondente é injetado.

Também pode usar @Conditional com condições personalizadas, por exemplo, verificar a existência de uma propriedade ou classe:

@ConditionalOnProperty(name = "feature.enabled", havingValue = "true")
@Bean
public MyService conditionalService() {
    return new ConditionalServiceImpl();
}

Assim, o Spring permite gerir de forma flexível a escolha do Bean para injeção dependendo das condições do ambiente ou da configuração.