Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
487 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 Reply

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...