@Component
是Spring
注解,用于标记Java类为Spring容器管理的一个Bean
(组件)
当Spring
通过类路径扫描机制
发现带有 @Component
注解的类时,会自动将其纳入到Spring IoC容器
中进行实例化
、配置
和管理
。
基本的@Component注解使用
import org.springframework.stereotype.Component;
@Component
public class UserService {
public String greet(String name) {
return "Hello, " + name;
}
}
配合@Autowired注解进行依赖注入
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component
public class UserService {
private final Logger logger;
@Autowired
public UserService(Logger logger) {
this.logger = logger;
}
public void logUserGreeting(String username) {
logger.info("User greeted: {}", username);
}
}
配合@Configuration和@Bean注解一起使用
在这个例子中,虽然 UserService 本身被标记为 @Component,但我们在配置类 AppConfig 中通过 @Bean 明确地定义了如何创建它的实例。这种方式通常用于需要更多定制化初始化逻辑或参数的情况。尽管如此,由于 UserService 已经是组件,Spring依然可以识别并管理它。
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
@Configuration
public class AppConfig {
@Bean
public UserService userService() {
return new UserService();
}
}
@Component
public class UserService {
// ...
}