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

 更新时间:2024年11月15日 09:28:32   作者:昔我往昔  
Spring Boot中创建对象的几种常见方式包括使用@Component、@Service、@Repository或@Controller注解,本文就来详细的介绍一下,感兴趣的可以了解一下

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

  • 使用 @Component@Service@Repository 或 @Controller 注解
  • 使用 @Configuration 和 @Bean 注解
  • 使用 @Import 注解导入其他配置类
  • 通过 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,这时可以使用 AnnotationConfigApplicationContext 或 GenericWebApplicationContext 类。

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 容器。

总结

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

到此这篇关于SpringBoot 创建对象常见的几种方式小结的文章就介绍到这了,更多相关SpringBoot 创建对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • SpringBoot普通类获取spring容器中bean的操作

    SpringBoot普通类获取spring容器中bean的操作

    这篇文章主要介绍了SpringBoot普通类获取spring容器中bean的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • JAVA查询MongoDB的几种方法小结

    JAVA查询MongoDB的几种方法小结

    本文主要介绍了JAVA查询MongoDB的几种方法小结,通过阅读本文,读者可以了解如何使用Java查询MongoDB,并在实际应用中应用这些技能,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • java8新特性之日期时间API

    java8新特性之日期时间API

    这篇文章主要介绍了java8新特性之日期时间API,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • Java通俗易懂系列设计模式之建造者模式

    Java通俗易懂系列设计模式之建造者模式

    这篇文章主要介绍了Java通俗易懂系列设计模式之建造者模式,对设计模式感兴趣的读者,一定要看一下
    2021-04-04
  • Java平台调试体系原理分析和实践整理 远程Debug

    Java平台调试体系原理分析和实践整理 远程Debug

    这篇文章主要介绍了Java平台调试体系原理分析和实践整理 远程Debug,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 基于SPRINGBOOT配置文件占位符过程解析

    基于SPRINGBOOT配置文件占位符过程解析

    这篇文章主要介绍了基于SPRINGBOOT配置文件占位符过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • java项目实现统一打印入参出参等日志

    java项目实现统一打印入参出参等日志

    这篇文章主要介绍了java项目实现统一打印入参出参等日志方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • java判断字符串是正整数的实例

    java判断字符串是正整数的实例

    今天小编就为大家分享一篇java判断字符串是正整数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Java Web中常用的分页组件(Java端实现)

    Java Web中常用的分页组件(Java端实现)

    本文通过使用场景分析给大家介绍了Java Web中常用的分页组件(Java端实现),非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-05-05
  • Springboot中项目的属性配置的详细介绍

    Springboot中项目的属性配置的详细介绍

    很多时候需要用到一些配置的信息,这些信息可能在测试环境和生产环境下会有不同的配置,本文主要介绍了Springboot中项目的属性配置的详细介绍,感兴趣的可以了解一下
    2022-01-01

最新评论