淘先锋技术网

首页 1 2 3 4 5 6 7

PS:自动装配,完成的是各个组件之间的依赖关系的赋值。至于基本数据的赋值可以通过其他赋值方式比如@Value实现。

1 @Autowired注解:

     1.1  使用:Controller层调用Service层,然后调用Dao层。由于表示了@Controller相关注解,注册到了容器中,通过@Autowired注解,可以实现自动装配。

@Controller
public class BookController {
	@Autowired
	private BookService bookService;
}
@Service
public class BookService {
	@Autowired
	private BookDao bookDao;
}
@Repository
public class BookDao {
}

    1.2 原理。

         自动装配的时候,默认按照类型去容器中找对应的类型。《====》app.getBean(BookController.class);

          如果该类型只存值一个bean,那么就自动装配。

         如果同一个类型存在多个bean,首先按照类型匹配,存在多个,按照属性名匹配

2 @Qualifier注解

      PS:通常和@Autowired搭配使用。

       使用背景:自动装配时候,默认在按照类型自动装配,如果存在一个就自动装配。如果存在多个,解决方法有二。

       方法一:按照属性名匹配

       方法二:使用@Qualifier注解明确地指明想要标注的是哪个组件。

@Qualifier("bookService")
private BookService bookService;

3 @Primary注解

      作用:使用该注解在容器中,同一个类型存在多个组件时,默认装配哪个组件。

      背景:容器中存在BookService 类型bookService1和bookService2,就可以使用@Primary注解,指定默认装配bookService2。

     PS:然后,还是可以通过@Qualifier注解指定最终装配哪个bean。

	@Bean
	@Primary
	public BookService bookService2() {
		BookService bookService = new BookService();
		bookService.setLable("lable2");
		return bookService;
	}