@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;@Autowiredpublic 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 {@Beanpublic UserService userService() {return new UserService();}
}@Component
public class UserService {// ...
}