一、定义接口
package cn.edu.tju.domain;
public interface MovieCatalog {
}
二、定义步骤一中接口的实现类
package cn.edu.tju.domain;
public class SimpleMovieCatalog implements MovieCatalog{
}
三、定义标记性注解
package cn.edu.tju.anno;
import org.springframework.beans.factory.annotation.Qualifier;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Offline {
}
四、定义bean,注入步骤一中的接口,并使用标记性注解
package cn.edu.tju.anno;
import cn.edu.tju.domain.MovieCatalog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class MovieRecommender {
@Autowired
@Offline
public MovieCatalog offlineCatalog;
}
五、配置文件beans18.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<bean class="cn.edu.tju.domain.SimpleMovieCatalog">
<qualifier type="Offline"/>
</bean>
<context:component-scan base-package="cn.edu.tju.anno"/>
</beans>
六、主类
package cn.edu.tju;
import cn.edu.tju.anno.MovieRecommender;
import cn.edu.tju.study.service.anno.domain.MyValueCalculator;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Start18 {
public static void main(String[] args) {
ApplicationContext applicationContext = new
ClassPathXmlApplicationContext("beans18.xml");
MovieRecommender movieRecommender = applicationContext.getBean("movieRecommender", MovieRecommender.class);
System.out.println(movieRecommender.offlineCatalog);
}
}