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的构造函数中。

发表评论

后才能评论