Spring 中的 @Autowired 注解默认按什么方式装配?
在Spring框架中,@Autowired
注解是用来进行自动依赖注入的。默认情况下,@Autowired
注解按照类型(by type)进行装配。
这意味着Spring容器会查找和需要被注入的属性匹配的bean类型,然后自动进行装配。如果找到多个相同类型的bean,那么Spring会按照bean的id(或名字)进行装配。
如果Spring容器中没有找到匹配的bean,那么在默认情况下,Spring会抛出一个异常。不过,你可以通过设置@Autowired
注解的required
属性为false
来改变这种行为。如果required
设置为false
,那么当没有找到匹配的bean时,Spring会将该属性设置为null
。
举个例子,假设我们有一个BookService
类,它需要一个BookRepository
的实例。我们可以使用@Autowired
注解来让Spring自动注入BookRepository
:
@Service
public class BookService {
private final BookRepository bookRepository;
@Autowired
public BookService(BookRepository bookRepository) {
this.bookRepository = bookRepository;
}
//...
}
在这个例子中,Spring会查找容器中的BookRepository
类型的bean,然后自动注入到BookService
的构造函数中。