Spring注册Bean系列--方法3:@Import+@Bean

news/2025/1/11 11:42:51/

原文网址:Spring注册Bean系列--方法3:@Import+@Bean_IT利刃出鞘的博客-CSDN博客

简介

        本文介绍Spring注册Bean的方法:@Import+@Bean。

         注册Bean的方法我写了一个系列,见:Spring注册Bean(提供Bean)系列--方法大全_IT利刃出鞘的博客-CSDN博客

方法概述

  1. 写一个不加@Configuration的配置类
    1. 里边有@Bean标记的方法,返回值为bean对应的类
  2. 在启动类上添加:@Import(上一步要导入到容器中的配置类)
    1. 也可以放在在其他@Configuration标记的类上

@Import是Spring的注解。

实例

注解类

package com.knife.annotation;import com.knife.config.MyBeanConfiguration;
import org.springframework.context.annotation.Import;import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import({MyBeanConfiguration.class})
public @interface EnableMyBean {
}

配置类(内部包含Bean)

无需加@Configuration

package com.knife.config;import com.knife.entity.MyBean;
import org.springframework.context.annotation.Bean;public class MyBeanConfiguration {@Beanpublic MyBean myBean() {return new MyBean();}
}

导入配置

法1:启动类

启动类上加自定义的注解。

package com.knife;import com.knife.annotation.EnableMyBean;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableAsync;@SpringBootApplication
@EnableMyBean
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}

法2:@Configuration 标记的类

其实,只要是注册到Spring容器中的类就可以,但一般用@Configuration。

package com.knife.config;import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.stereotype.Component;@Configuration
@Import({MyBeanConfiguration.class})
public class MyBeanImportConfiguration {}

测试

package com.knife.controller;import com.knife.entity.MyBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@Autowiredprivate MyBean myBean;@GetMapping("/test")public String test() {return myBean.sayHello();}
}

结果


http://www.ppmy.cn/news/6943.html

相关文章

canal中间件集成springboot实战落地

目录 一、数据库开启相关权限功能: 二、canal 服务端配置启动:从官网下载程序和源码到本地环境 三、canal客户端配置启动: canal中间件集成springboot实战落地开始分享,这是目前互联网很常见的中间件,监听数据库变化…

Android 10.0 修改LocalOnlyHotspot默认的SSID和密码

目录 1.概述 2.修改LocalOnlyHotspot默认的SSID和密码的核心代码 3.修改LocalOnlyHotspot默认的SSID

微信小程序 | 小程序组件化开发

🖥️ 微信小程序 专栏:小程序组件化开发 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ &#x1f44…

20 个常用的 pandas 使用技巧

大家好,我是小寒。 今天来分享 20 个常用的 pandas 使用技巧。如果觉得不错,点赞、转发安排起来。 1、以 Markdown 格式输出 DataFrame import pandas as pddf pd.DataFrame({a: [1, 2, 3, 4],b: [5, 6, 7, 8]})# You can control the printing of th…

YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统

本文紧接前文: 《基于yolov5s实践国际象棋目标检测模型开发》 《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》 首先来看下最终效果: 在我棋类检测系统开发之——五子棋检测那篇博文写完之后就萌生了想做一下基于目标…

有效操作:Ubuntu上已经安装最新node但是node -v返回的版本号确实错的;ubuntu第一次启动vue项目报npm版本错误

** 如已经安装过最新版的node话可直接跳到操作6: 1.查看node版本,没安装的请先安装; node -v 如果安装成功的话会返回版本号: 2.如果nodejs包出错需要重新安装的话,删除不干净会有可能出现问题,下面就介…

国考省考行测:细节理解,对错判断,要素查找,问什么,找什么,对比分析

国考省考行测:细节理解,对错判断,要素查找,问什么,找什么,对比分析 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带行测和申论,而常规国考省考最重要…

c++算法基础必刷题目——模拟

文章目录模拟算法1、字符串的展开2、多项式输出3、机器翻译模拟算法 模拟算法是一种最基本的算法思想,是对程序员基本编程能力的一种考查,其解决方法就是根据题目给出的规则对题目要求的相关过程进行编程模拟。在解决模拟类问题时,需要注意字…