@Bean在@Component里面
时间: 2024-10-27 22:09:31 浏览: 12
在Spring MVC或Spring Boot项目中,`@Component`是一个非常常用的注解,它用于标记那些需要被Spring自动管理的类,比如POJO(Plain Old Java Object)类、DAO(Data Access Object)等。当你在一个`@Component`注解的类里使用`@Bean`注解时,意味着你希望Spring将该类的一个特定实例注册到IoC(Inversion of Control)容器中,并且可以直接通过名字来获取。
例如:
```java
import org.springframework.stereotype.Component;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@Component
public class AppConfig {
@Autowired
private MyService myService; // 这里的myService会被自动注入
@Bean
public MyRepository repository() {
return new MyRepository();
}
public static void main(String[] args) {
SpringApplication.run(AppConfig.class, args);
}
}
```
在这个例子中,`AppConfig`既是`@Component`也是`@SpringBootApplication`,因此Spring会自动扫描它的所有公共方法,寻找是否有`@Bean`注解的方法。`repository()`方法返回的是一个MyRepository的实例,然后被注册到Spring的bean容器中。
当你在其他地方想要使用MyRepository的时候,只需要注入`appConfig.repository()`这个名称即可。
阅读全文