image.png 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。
  • 注解属性介绍:
    • 无属性。
  • 业务请求案例:
    • 无特定请求参数。
  • 注解业务案例:
@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 {
    // ...
}