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 创建对象内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Java中Redis存储String类型会有乱码的问题及解决方案

    Java中Redis存储String类型会有乱码的问题及解决方案

    在java中使用Redis存储String类型的数据时,会出现乱码,我写了一条存储key为name,值为虎哥的字符串,然后获取一下这个key为name的值,打印得到的值,下面通过实例代码介绍Java中Redis存储String类型会有乱码的问题及解决方案,一起看看吧
    2024-04-04
  • 详解SpringMVC的url-pattern配置及原理剖析

    详解SpringMVC的url-pattern配置及原理剖析

    这篇文章主要介绍了SpringMVC的url-pattern配置及原理剖析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java读取.properties配置文件方法示例

    Java读取.properties配置文件方法示例

    这篇文章主要介绍了Java读取.properties配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • springboot中如何通过main方法调用service或dao

    springboot中如何通过main方法调用service或dao

    这篇文章主要介绍了springboot中如何通过main方法调用service或dao,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java基础之详解基本数据类型的使用

    Java基础之详解基本数据类型的使用

    今天给大家带来的是关于Java基础的相关知识,文章围绕着基本数据类型的使用展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java开发中的23种设计模式详解(推荐)

    Java开发中的23种设计模式详解(推荐)

    本篇文章主要介绍了Java开发中的23种设计模式详解,现在分享给大家,也给大家做个参考。感兴趣的小伙伴们可以参考一下。 设计模式(Design Patterns)
    2016-11-11
  • 详解json在SpringBoot中的格式转换

    详解json在SpringBoot中的格式转换

    这篇文章主要介绍了详解json在SpringBoot中的格式转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • 在Eclipse中更改maven项目名的方法

    在Eclipse中更改maven项目名的方法

    今天小编就为大家分享一篇关于在Eclipse中更改maven项目名的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SpringBoot项目部署到阿里云服务器的实现步骤

    SpringBoot项目部署到阿里云服务器的实现步骤

    本文主要介绍了SpringBoot项目部署到阿里云服务器的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • SpringBoot集成Redis及Redis使用方法

    SpringBoot集成Redis及Redis使用方法

    Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库,这篇文章主要介绍了SpringBoot集成Redis及Redis使用方法,需要的朋友可以参考下
    2023-08-08

最新评论