-
-
Save arnabmitra/506f066c2d5461d85d4a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package spring; | |
import org.springframework.beans.factory.annotation.Autowired; | |
import org.springframework.beans.factory.annotation.Qualifier; | |
import org.springframework.context.annotation.AnnotationConfigApplicationContext; | |
import org.springframework.context.annotation.ComponentScan; | |
import org.springframework.context.annotation.Configuration; | |
import org.springframework.stereotype.Component; | |
import javax.annotation.PostConstruct; | |
import java.lang.annotation.ElementType; | |
import java.lang.annotation.Retention; | |
import java.lang.annotation.RetentionPolicy; | |
import java.lang.annotation.Target; | |
import static application.Spring.Platform; | |
@Configuration | |
@ComponentScan | |
public class Spring { | |
public static void main(String[] args) { | |
new AnnotationConfigApplicationContext(Spring.class); | |
} | |
@Autowired | |
@Platform(Platform.OperatingSystems.ANDROID) | |
private MarketPlace android; | |
@Autowired | |
@Platform(Platform.OperatingSystems.IOS) | |
private MarketPlace ios; | |
@PostConstruct | |
public void qualifyTheTweets() { | |
System.out.println("ios:" + this.ios); | |
System.out.println("android:" + this.android); | |
} | |
// the type has to be public! | |
@Target({ElementType.FIELD, | |
ElementType.METHOD, | |
ElementType.TYPE, | |
ElementType.PARAMETER}) | |
@Retention(RetentionPolicy.RUNTIME) | |
@Qualifier | |
@Component | |
public static @interface Platform { | |
OperatingSystems value(); | |
public static enum OperatingSystems { | |
IOS, | |
ANDROID | |
} | |
} | |
} | |
interface MarketPlace { | |
} | |
@Spring.Platform(Platform.OperatingSystems.IOS) | |
class AppleMarketPlace implements MarketPlace { | |
@Override | |
public String toString() { | |
return "apple"; | |
} | |
} | |
@Spring.Platform(Platform.OperatingSystems.ANDROID) | |
class GoogleMarketPlace implements MarketPlace { | |
@Override | |
public String toString() { | |
return "android"; | |
} | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment