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

Categories

0 votes
485 views
in Technique[技术] by (71.8m points)

java - Spring wiring conditional to an environment

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

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

1 Answer

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...