spring 相关

spring注解--自动注入

2019-01-01  本文已影响0人  aix91

自动装配

  1. @Autowired自动注入(Spring自动装配)
  1. @Resource(java规范)
  1. @Inject注解 (java规范)

实例

  1. 使用@ComponentScan方式注入BookDao 实例
@Repository
@Primary
public class BookDao {
    private String label;
    public BookDao() {
        this.label = "1";
    }
    public String getLabel() {
        return label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    @Override
    public String toString() {
        return "BookDao{" +
                "label='" + label + '\'' +
                '}';
    }
}
  1. 使用@Bean方式注入另一个BookDao实例
@Configuration
@ComponentScan(basePackages = {"com.test.tornesol.util.spring.spring_autowire"})
public class MainConfig {
    @Bean(name = "bookDao2")
    public BookDao bookDao() {
        BookDao bookDao = new BookDao();
        bookDao.setLabel("2");
        return bookDao;
    }
}
  1. 在service类里面注入BookDao
@Service
public class BookService {
    @Autowired
    @Qualifier("bookDao2")
    public BookDao bookDao;
}
  1. 打印注入的BookDao
public class AutowireDemo {
    public static void main(String[] args) {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);
        BookService bookService = context.getBean(BookService.class);
        Arrays.stream(context.getBeanDefinitionNames()).forEach(p -> System.out.println(p));
        System.out.println(bookService.bookDao);
    }
}
  1. 输出结果:注入的是bookDao2
BookDao{label='2'}

Note:

  1. 在注入bean时,被注入bean的class要有无参构造器。
上一篇 下一篇

猜你喜欢

热点阅读