写点什么

24 个 Spring bean 全部注解:真实业务使用案例说明 (必须收藏)

作者:肖哥弹架构
  • 2024-08-17
    河北
  • 本文字数:2950 字

    阅读完需:约 10 分钟

24 个Spring bean 全部注解:真实业务使用案例说明(必须收藏)

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 肖哥弹架构获取更多精彩内容

历史热点文章

1、基础组件注解

1.1 @Component


  • 注解作用介绍: 标识一个类作为 Spring 的通用组件,可以被自动扫描并注册为 Spring 应用上下文中的 Bean。

  • 注解属性介绍:

  • 无属性。

  • 业务请求案例:

  • 无特定请求参数。

  • 注解业务案例:


@Componentpublic class MyComponent {    // ...}
复制代码


1.2 @Service


  • 注解作用介绍: 专门用于标识一个类作为服务层组件,通常包含业务逻辑。

  • 注解业务案例:


@Servicepublic class MyService {    // ...}
复制代码


1.3 @Repository


  • 注解作用介绍: 标识一个类作为数据访问对象,通常用于数据库操作。

  • 注解业务案例:


@Repositorypublic interface MyRepository extends JpaRepository<MyEntity, Long> {    // ...}
复制代码


1.4 @Controller


  • 注解作用介绍: 标识一个类作为 Web 应用程序的控制器,处理 HTTP 请求。

  • 注解业务案例:


@Controllerpublic class MyController {    // ...}
复制代码


1.5 @RestController


  • 注解作用介绍: 用于标识 RESTful Web 服务的控制器,通常与 @ResponseBody 结合使用。

  • 注解业务案例:


@RestControllerpublic class MyRestController {    // ...}
复制代码


1.6 @Scope


  • 注解作用介绍: 用于指定 Bean 的作用域,如 singleton、prototype 等。

  • 注解属性介绍:

  • value: 作用域名称。

  • 注解业务案例:


@Scope("prototype")public class MyPrototypeBean {    // ...}
复制代码

2、依赖注入与生命周期管理

2.1 @Autowired


  • 注解作用介绍: 自动装配依赖项到 Bean 的字段、构造函数或 setter 方法。

  • 注解属性介绍:

  • required: 是否必须进行自动装配,默认为 true。

  • 注解业务案例:


@Autowiredprivate DependencyBean dependency;
复制代码


2.2 @Qualifier


  • 注解作用介绍: 当有多个同类型的 Bean 时,用于指定具体要注入哪一个 Bean。

  • 注解属性介绍:

  • value: 指定 Bean 的名称。

  • 注解业务案例:


@Autowired@Qualifier("specificBean")private SomeBean someBean;
复制代码


2.3 @Primary


  • 注解作用介绍: 当有多个 Bean 可以实现同一个接口时,指定优先自动装配的 Bean。

  • 注解业务案例:


@Primary@Servicepublic class PrimaryServiceImpl implements MyService {    // ...}
复制代码


2.4 @Lazy


  • 注解作用介绍: 延迟加载 Bean,直到它被实际使用。

  • 注解业务案例:


@Component@Lazypublic class LazyLoadedBean {    // ...}
复制代码


2.5 @DependsOn


  • 注解作用介绍: 指定 Bean 初始化的依赖顺序,确保在当前 Bean 创建前先创建指定的 Bean。

  • 注解业务案例:


@Component@DependsOn("otherBean")public class BeanWithDependency {    // ...}
复制代码


2.6 @PostConstruct


  • 注解作用介绍: 标记在 Bean 初始化之后执行的方法,用于执行 Bean 的初始化逻辑。

  • 注解业务案例:


@Componentpublic class MyBean {    @PostConstruct    public void init() {        // 初始化逻辑    }}
复制代码


2.7 @PreDestroy


  • 注解作用介绍: 标记在 Bean 销毁之前执行的方法,用于执行清理逻辑。

  • 注解业务案例:


@Componentpublic 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: 监听的事件类型。

  • 注解业务案例:


@Componentpublic 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@Indexedpublic class MyComponent {    // ...}
复制代码


发布于: 刚刚阅读数: 3
用户头像

智慧属心窍之锁 2019-05-27 加入

擅长于通信协议、微服务架构、框架设计、消息队列、服务治理、PAAS、SAAS、ACE\ACP、大模型

评论

发布
暂无评论
24 个Spring bean 全部注解:真实业务使用案例说明(必须收藏)_spring_肖哥弹架构_InfoQ写作社区