当前位置: 首页 > article >正文

SpringBoot 创建对象常见的几种方式

SpringBoot 创建对象常见的几种方式

在 Spring Boot 中,将 Bean 对象添加到 IOC 容器中,通用的有下面几种方式:

  1. 使用 @Component@Service@Repository@Controller 注解
  2. 使用 @Configuration@Bean 注解
  3. 使用 @Import 注解导入其他配置类
  4. 通过 ApplicationContext 编程方式手动注册 Bean

1. 使用 @Component(或 @Service@Repository@Controller)注解

最常见的方式,Spring 会自动扫描并将带有这些注解的类注册为 Bean。

import org.springframework.stereotype.Component;

@Component
public class User {
    public void say() {
        System.out.println("Hello User!");
    }
}

配置扫描路径(通常在 @SpringBootApplication 上已经启用了扫描,如果需要指定包路径,可以使用 @ComponentScan 注解):

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

在 Spring Boot 启动时,@Component 注解的类会自动注册为 Bean,并添加到 IOC 容器中。

2. 使用 @Configuration@Bean 注解

通过在 @Configuration 注解的配置类中使用 @Bean 注解,可以手动将对象添加到 Spring 容器中。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class BeanConfig {

    @Bean
    public User user() {
        return new User();
    }
}

User 类

public class user {
    public void say() {
         System.out.println("Hello User!");
    }
}

BeanConfig 类使用 @Bean 注解注册了一个 user 实例,Spring 会将其自动加入到 IOC 容器中。

3. 使用 @Import 注解导入配置类

@Import 注解可以导入其他配置类,将其配置的 Bean 添加到当前应用的 IOC 容器中。

import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(BeanConfig.class)
public class MainConfig {
    // 通过 @Import 导入 BeanConfig 中的 Bean
}

MainConfig 类通过 @Import(BeanConfig.class) 导入了 BeanConfig 中定义的所有 Bean,这样 MyBean 也会被注册到 IOC 容器中。

4. 使用 ApplicationContext 编程方式手动注册 Bean

在某些特殊的场景中,可能需要手动编程注册 Bean,这时可以使用 AnnotationConfigApplicationContextGenericWebApplicationContext 类。

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class ManualBeanRegistration {

    public static void main(String[] args) {
        // 创建 Spring 容器
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();

        // 注册配置类
        context.register(BeanConfig.class);

        // 启动容器
        context.refresh();

        // 获取并使用 Bean
        MyBean myBean = context.getBean(MyBean.class);
        myBean.printMessage();

        // 关闭容器
        context.close();
    }
}

通过 AnnotationConfigApplicationContext 显式地手动注册了 BeanConfig 配置类,并启动了 Spring 容器。

总结

  1. @Component 注解(及其衍生注解 @Service@Repository@Controller)是最常用的方式,通过自动扫描自动将 Bean 注册到 IOC 容器中。
  2. @Configuration@Bean 注解 可以在配置类中手动注册 Bean。
  3. @Import 注解 可以将其他配置类中的 Bean 导入到当前配置类中。
  4. 手动注册 通过 ApplicationContext 等类可以编程方式注册 Bean。

http://www.kler.cn/a/398229.html

相关文章:

  • mysql中mvcc如何处理纯读事务的?
  • 代码版本管理艺术
  • SAFETY LAYERS IN ALIGNED LARGE LANGUAGEMODELS: THE KEY TO LLM SECURITY
  • 【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测
  • 深度学习:transpose_qkv()与transpose_output()
  • Qt 项目架构设计
  • UEFI学习(五)——启动框架
  • web-02
  • DB-GPT系列(六):数据Agent开发part1-光速创建AWEL Agent应用
  • Java 全栈知识体系
  • Oracle Instant Client 23.5安装配置完整教程
  • django框架-settings.py文件的配置说明
  • 【C语言】前端未来
  • 公开一下我的「个人学习视频」!
  • 【系统架构设计师】真题论文: 论基于 REST 服务的 Web 应用系统设计(包括解题思路和素材)
  • SQL面试题——日期交叉问题
  • PMP–一、二、三模、冲刺–分类–5.范围管理–技巧–引导
  • 三种网络模式固定IP
  • python关键字和内置函数有哪些?
  • AIGC学习笔记(5)——AI大模型开发工程师
  • Scala-迭代器
  • 31-Shard Allocation Awareness(机架感知)
  • 渑池县中药材产业党委莅临河南广宇企业管理集团有限公司参观交流
  • C++和OpenGL实现3D游戏编程【连载18】——加载OBJ三维模型
  • Elasticsearch 查询时 term、match、match_phrase、match_phrase_prefix 的区别
  • UNIAPP发布小程序调用讯飞在线语音合成+实时播报