Spring Bean注解是Spring框架提供的一组用于控制Spring Bean生命周期和行为的注解。这些注解简化了传统的XML配置,使得开发者能够以声明式的方式在Java类中定义和管理Bean。核心注解包括@Component
(泛指组件)、@Service
、@Repository
、@Controller
(定义服务、数据访问、Web层控制器)、@RestController
(用于RESTful API控制器)、@Autowired
(自动依赖注入)、@Qualifier
(解决依赖注入中的歧义)、@Primary
(指定首选Bean)、@Lazy
(延迟加载Bean)、@DependsOn
(定义Bean初始化的依赖顺序)、@Profile
(根据环境激活Bean)、@Configuration
(定义配置类)、@Bean
(方法上声明一个Bean)、@Import
(导入其他配置类或XML文件)。这些注解共同构成了Spring依赖注入的基础,使得Spring应用的配置更加灵活和易于管理。
肖哥弹架构 跟大家“弹弹” 代码设计技巧,需要代码关注
欢迎 点赞,关注,评论。
关注公号Solomon肖哥弹架构获取更多精彩内容
历史热点文章
- 28个验证注解,通过业务案例让你精通Java数据校验(收藏篇)
- Java 8函数式编程全攻略:43种函数式业务代码实战案例解析(收藏版)
- 功能强大,代码优雅:Java8真实案例Stream大数据集高效之旅(收藏版)
- MySQL索引完全手册:真实业务图文讲解17种索引运用技巧(必须收藏)
- 一个项目代码讲清楚DO/PO/BO/AO/E/DTO/DAO/ POJO/VO
1、基础组件注解
1.1 @Component
- 注解作用介绍: 标识一个类作为Spring的通用组件,可以被自动扫描并注册为Spring应用上下文中的Bean。
- 注解属性介绍:
- 无属性。
- 业务请求案例:
- 无特定请求参数。
- 注解业务案例:
@Component
public class MyComponent {
// ...
}
1.2 @Service
- 注解作用介绍: 专门用于标识一个类作为服务层组件,通常包含业务逻辑。
- 注解业务案例:
@Service
public class MyService {
// ...
}
1.3 @Repository
- 注解作用介绍: 标识一个类作为数据访问对象,通常用于数据库操作。
- 注解业务案例:
@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {
// ...
}
1.4 @Controller
- 注解作用介绍: 标识一个类作为Web应用程序的控制器,处理HTTP请求。
- 注解业务案例:
@Controller
public class MyController {
// ...
}
1.5 @RestController
- 注解作用介绍: 用于标识RESTful Web服务的控制器,通常与@ResponseBody结合使用。
- 注解业务案例:
@RestController
public class MyRestController {
// ...
}
1.6 @Scope
- 注解作用介绍: 用于指定Bean的作用域,如singleton、prototype等。
- 注解属性介绍:
- value: 作用域名称。
- 注解业务案例:
@Scope("prototype")
public class MyPrototypeBean {
// ...
}
2、依赖注入与生命周期管理
2.1 @Autowired
- 注解作用介绍: 自动装配依赖项到Bean的字段、构造函数或setter方法。
- 注解属性介绍:
- required: 是否必须进行自动装配,默认为true。
- 注解业务案例:
@Autowired
private DependencyBean dependency;
2.2 @Qualifier
- 注解作用介绍: 当有多个同类型的Bean时,用于指定具体要注入哪一个Bean。
- 注解属性介绍:
- value: 指定Bean的名称。
- 注解业务案例:
@Autowired
@Qualifier("specificBean")
private SomeBean someBean;
2.3 @Primary
- 注解作用介绍: 当有多个Bean可以实现同一个接口时,指定优先自动装配的Bean。
- 注解业务案例:
@Primary
@Service
public class PrimaryServiceImpl implements MyService {
// ...
}
2.4 @Lazy
- 注解作用介绍: 延迟加载Bean,直到它被实际使用。
- 注解业务案例:
@Component
@Lazy
public class LazyLoadedBean {
// ...
}
2.5 @DependsOn
- 注解作用介绍: 指定Bean初始化的依赖顺序,确保在当前Bean创建前先创建指定的Bean。
- 注解业务案例:
@Component
@DependsOn("otherBean")
public class BeanWithDependency {
// ...
}
2.6 @PostConstruct
- 注解作用介绍: 标记在Bean初始化之后执行的方法,用于执行Bean的初始化逻辑。
- 注解业务案例:
@Component
public class MyBean {
@PostConstruct
public void init() {
// 初始化逻辑
}
}
2.7 @PreDestroy
- 注解作用介绍: 标记在Bean销毁之前执行的方法,用于执行清理逻辑。
- 注解业务案例:
@Component
public class MyBean {
@PreDestroy
public void cleanup() {
// 清理逻辑
}
}
3、配置与元数据
3.2 @Profile
- 注解作用介绍: 根据激活的配置文件来激活或禁用Bean。
- 注解属性介绍:
- value: 指定一个或多个激活的配置文件名称。
- 注解业务案例:
@Component
@Profile("dev")
public class DevSpecificBean {
// 仅在开发环境激活
}
3.3 @PropertySource
- 注解作用介绍: 指定一个属性文件的位置。
- 注解属性介绍:
- value: 属性文件的路径。
- 注解业务案例:
@Configuration
@PropertySource("classpath:app.properties")
public class PropertyConfig {
// ...
}
3.4 @PropertySources
- 注解作用介绍: 指定多个属性文件的位置。
- 注解业务案例:
@Configuration
@PropertySources({
@PropertySource("classpath:app.properties"),
@PropertySource("classpath:db.properties")
})
public class MultiplePropertyConfig {
// ...
}
3.5 @ConfigurationProperties
- 注解作用介绍: 用于将外部配置属性绑定到一个Java对象。
- 注解属性介绍:
- prefix: 指定属性的前缀。
- 注解业务案例:
@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {
private String name;
// 其他配置属性...
}
3.6 @ConfigurationProperty
- 注解作用介绍: 用于指定配置属性的元数据。
- 注解属性介绍:
- name: 属性名称。
- value: 默认值。
- 注解业务案例:
public class AppConfig {
@ConfigurationProperty("name")
private String appName;
// 其他配置属性...
}
4、导入与事件
4.1 @Import
- 注解作用介绍: 导入额外的配置类。
- 注解属性介绍:
- value: 被导入配置类的类名。
- 注解业务案例:
@Configuration
@Import({DatabaseConfig.class, SecurityConfig.class})
public class AppConfig {
// ...
}
4.2 @ImportResource
- 注解作用介绍: 导入XML配置文件。
- 注解属性介绍:
- value: XML配置文件的路径。
- 注解业务案例:
@Configuration
@ImportResource("classpath:database-config.xml")
public class AppConfig {
// ...
}
4.3 @ComponentScans
- 注解作用介绍: 指定多个组件扫描的包路径。
- 注解业务案例:
@Configuration
@ComponentScans(value = {"com.example.service", "com.example.repository"})
public class AppConfig {
// ...
}
4.4 @EventListener
- 注解作用介绍: 标记方法作为事件监听器,用于处理应用程序事件。
- 注解属性介绍:
- value: 监听的事件类型。
- 注解业务案例:
@Component
public class EventListenerBean {
@EventListener
public void handleEvent(AppEvent event) {
// 处理事件
}
}
4.5 @Order
- 注解作用介绍: 指定组件的顺序,特别是在存在多个相同类型的Bean时。
- 注解属性介绍:
- value: 指定顺序的整数值。
- 注解业务案例:
@Component
@Order(1)
public class FirstComponent {
// ...
}
4.6 @Indexed
- 注解作用介绍: 提供额外的索引信息,以便在某些Spring工具中更好地识别和管理。
- 注解属性介绍:
- value: 索引值。
- 注解业务案例:
@Component
@Indexed
public class MyComponent {
// ...
}