Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

With Spring wiring, if I have multiple implementations of an interface, I can use @Qualifier to specify which one I want.

E.g., assuming that I have a

@Component
@Qualifier("Toyota")
public class Toyota implements Car

and a

@Component
@Qualifier("Bmv")
public class Bmv implements Car

Then I can select a specific implementation with:

  @Qualifier("Toyota") Car car 

But is there a way to select the implementation based on an environment?

I.e. if I have spring.profiles.active set to local, then I will select the 'Toyota' implementation of Car, but if spring.profiles.active is set to dev or stage, then I will select the 'Bmv' implementation of Car?

An example of the exact syntax would be appreciated.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
458 views
Welcome To Ask or Share your Answers For Others

1 Answer

Ah, the solution is actually quite simple:

@Component
@Qualifier("Bmv")
@Profile("!dev")
public class Bmv implements Car

and

@Component
@Qualifier("Toyota")
@Profile("dev")
public class Toyota implements Car

This way, the wiring of Car will use Toyota for dev environment, and Bmv otherwise.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...