springboot注册bean的三种方法

以下是详细讲解“Spring Boot注册Bean的三种方法”的攻略。

简介

在Spring Boot应用程序中,可以使用三种方法注册Bean:

  1. @ComponentScan + @Component 注册:使用注解扫描机制,标记bean组件并创建自动扫描Spring Boot应用程序中的bean。可以在类上使用@Component@Service@Repository@Controller等注解标记bean。这些注解被统称为@Component注解。@ComponentScan注解则是指定扫描的包路径。
  2. @Bean 注册:使用@Bean注解来指定bean的创建逻辑,可以在任意配置类上使用该注解来定义bean。
  3. @Configuration + @Import 注册:创建配置类,并使用@Import注解将配置类注入到Spring Boot应用程序中。该注解同时会激活配置类中标注了@Bean注解的bean的创建逻辑。

详细步骤

1. @ComponentScan + @Component 注册

步骤1:创建一个标记为@Component的bean组件

package com.example.demo.bean;

import org.springframework.stereotype.Component;

@Component
public class UserService {
    public void printName() {
        System.out.println("Hello, I'm a user!");
    }
}

步骤2:创建一个配置类并扫描bean组件

package com.example.demo.config;

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

@Configuration
@ComponentScan("com.example.demo.bean")
public class AppConfig {
}

步骤3:启动Spring Boot应用程序并测试

package com.example.demo;

import com.example.demo.config.AppConfig;
import com.example.demo.bean.UserService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        UserService userService = context.getBean(UserService.class);
        userService.printName();
    }
}

2. @Bean 注册

步骤1:创建一个@Bean实例化的bean组件

package com.example.demo.bean;

public class Student {
    private String name;

    public void printName() {
        System.out.println("Hello, My name is " + name);
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.example.demo.config;

import com.example.demo.bean.Student;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig {
    @Bean
    public Student student() {
        Student student = new Student();
        student.setName("Tom");
        return student;
    }
}

步骤2:启动Spring Boot应用程序并测试

package com.example.demo;

import com.example.demo.config.AppConfig;
import com.example.demo.bean.Student;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        Student student = context.getBean(Student.class);
        student.printName();
    }
}

3. @Configuration + @Import 注册

步骤1:创建需要注入的Bean组件

package com.example.demo.bean;

public class Course {
    private String name;

    public void printName() {
        System.out.println("Hello, My course name is " + name);
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.example.demo.config;

import com.example.demo.bean.Course;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CourseConfig {
    @Bean
    public Course java() {
        Course java = new Course();
        java.setName("Java");
        return java;
    }
}

步骤2:在主配置类中使用@Import注解注入CourseConfig配置类

package com.example.demo.config;

import com.example.demo.bean.Student;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import({CourseConfig.class})
public class AppConfig {
    @Bean
    public Student student() {
        Student student = new Student();
        student.setName("Tom");
        return student;
    }
}

步骤3:启动Spring Boot应用程序并测试

package com.example.demo;

import com.example.demo.config.AppConfig;
import com.example.demo.bean.Student;
import com.example.demo.bean.Course;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        ApplicationContext context = SpringApplication.run(DemoApplication.class, args);
        Course course = context.getBean(Course.class);
        course.printName();
        Student student = context.getBean(Student.class);
        student.printName();
    }
}

以上就是Spring Boot注册Bean的三种方法的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot注册bean的三种方法 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • Java Mybatis数据源之工厂模式

    Java Mybatis数据源之工厂模式 概述 在Java Mybatis中使用工厂模式可以有效地避免配置数据源时的硬编码及大量的重复代码,提高了代码的可维护性和可读性。 工厂模式的实现 工厂模式中通常有三个抽象角色,分别是工厂接口、具体工厂和产品接口。 在Java Mybatis中,可以将DataSource抽象为产品接口,将DataSourceProvi…

    Java 2023年5月20日
    00
  • 一篇文章带你深入了解Java线程池

    一篇文章带你深入了解Java线程池 什么是线程池? 线程池是一个线程队列管理器,大大提高了多线程的处理效率。在开发中使用线程池可以避免多次创建和销毁线程带来的性能开销,提高程序的稳定性和性能表现。 Java中的线程池 Java中的线程池是由ThreadPoolExecutor和Executors来实现的,其中Executors是一个线程池的工厂类,提供了很多…

    Java 2023年5月18日
    00
  • java压缩文件与删除文件的示例代码

    让我来介绍一下如何使用Java对文件进行压缩和删除。 压缩文件 Java中提供了zip压缩格式的支持,在使用时只需要使用java.util.zip包中的相关类即可。下面提供两个示例: 示例一:压缩单个文件 import java.io.*; import java.util.zip.*; public class ZipDemo { public stati…

    Java 2023年5月19日
    00
  • Java Web监听器Listener接口原理及用法实例

    下面是针对“Java Web监听器Listener接口原理及用法实例”的完整攻略。 Listener接口原理 Listener是Java Web中用于监听某些事件的接口。它是一种观察者模式,可以用于处理请求和响应中的事件。其原理如下: Listener是一个接口,实现了多种不同类型的监听器。 监听器必须由开发者实现和注册在相应的事件中(例如:初始化、请求、会…

    Java 2023年6月15日
    00
  • JSP 中文字符处理代码

    JSP 中文字符处理是Web开发中一个常见问题,本文针对JSP中文字符处理提供一些攻略。 一、确保JSP页面编码和文件编码一致 JSP页面的编码格式需要和文件编码格式一致,包括jsp文件本身的编码、jsp引用的外部文件(如CSS、JS等)和JSP应用程序中的所有文件。可以使用以下代码在JSP页面中指定编码格式: <%@ page contentType…

    Java 2023年6月15日
    00
  • Mybatis中强大的resultMap功能介绍

    Mybatis是一款非常流行的ORM框架,它的resultMap功能可以帮助我们将查询结果映射到Java对象中,大大提高了开发效率。下面就来详细介绍一下Mybatis中强大的resultMap功能。 什么是resultMap resultMap是Mybatis中一个非常强大的功能,它可以帮助我们将查询结果映射到Java对象中。通常情况下,我们使用Mybati…

    Java 2023年5月20日
    00
  • Java集合List与Array的相互转换

    下面就为你详细讲解Java集合List与Array的相互转换。 List转Array 1.使用toArray()方法 将List转为数组最简单的方式就是使用List提供的toArray()方法。该方法返回一个持有此列表元素的数组。 List<String> list = new ArrayList<>(); list.add(&quo…

    Java 2023年5月26日
    00
  • 利用spring-data-redis实现incr自增的操作

    下面就是“利用spring-data-redis实现incr自增的操作”的完整攻略: 1. 环境准备 在开始之前,你需要确保已经具备以下条件: JDK 1.8以上 Maven Redis数据库 Spring Boot 2以上版本 如果还没有安装Redis数据库,你可以到官网下载安装包进行安装。在安装完成之后,你需要启动Redis服务,在配置文件中修改Redi…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部