springboot如何bean注入实例。如何使用多实例

  1. 提前创建好实例能够节约内存空间,使用起来也更加方便。

  2. 静态数据和配置信息适合使用提前创建实例模式

springboot 如何创建实例?

springboot 使用@Bean 创建实例

@Bean是一个方法级别的注解,主要在@Configuration注解的类里,也可以用在@Component注解的类里

示例:

  1. 创建一个Java实体类
package com.admin.util.fileUpload;

import lombok.Data;

/**
 * 开发公司:个人
 * 版权:刘志强
 * <p>
 * OSSModle
 *
 * @author 刘志强
 * @created Create Time: 2019/2/18
 */
@Data
public class OSSModle {
    /**
     * 端点服务地址
     */
    private String endpoint;
    /**
     * accessKeyId
     */
    private String accessKeyId;
    /**
     * accessKeySecret
     */
    private String accessKeySecret;
    /**
     * 包名
     */
    private String bucketName;

    /**
     * 文件名策略 日期格式,
     */
    private String fileName;

    /**
     * 文件夹策略 日期格式,
     */
    private String dirName;
}

使用@Bean创建实例

@Configuration
public class FileProcessingConfig {
    
    @Bean(name = "ossModle")
    @ConfigurationProperties(prefix = "file.ossModel")
    @Primary
    public OSSModle ossModle() {
        OSSModle ossModle = new OSSModle();
        return  ossModle;
    }
    
    @Bean(name = "ossModleTwo")
    public OSSModle ossModleTwo() {
        OSSModle ossModle = new OSSModle();
        ossModle.setAccessKeyId();
        ossModle.setAccessKeySecret();
        ossModle.setBucketName();
        ossModle.setDirName();
        ossModle.setEndpoint();
        ossModle.setFileName();
        return  ossModle;
    }
}

@Primary 默认加载实例,当多实例时,自动装配不知道装配哪个实例时,会选用@Primary的实例

@ConfigurationProperties 可以将application.yml里对应的信息封装成实体类

此示例中application.yml文件对应的是

file:
  ossModel:
    endpoint: https://oss-cn-beijing.aliyuncs.com
    accessKeyId: LTAIMERFHF6oGT4m
    accessKeySecret: tr4hpwmK0byGBJ8ERF8wm5O6QTWu3
    bucketName: yun-cunchu
    dirName: yyyy-MM-dd
    fileName: yyyy-MM-dd-HH-mm-ss

如何使用

使用 @Autowired 来装配实例

使用 @Qualifier 来指定装配哪个实例,当不指定时装配@Primary声明的实例

@Autowired
public OSSModle ossModle

@Autowired
@Qualifier("ossModleTwo")
public OSSModle ossModleTwo


@GetMapping("/getOSSModle")
public Map<String,OSSModle>  getOSSModle() {
    Map<String,OSSModle> map = new HashMap<>();
    map.put("ossModle",ossModle) // 此实例是@Bean(name = "ossModle") 的实例
    map.put("ossModleTwo",ossModleTwo) // 此实例是@Bean(name = "ossModleTwo") 的实例
    return map;
}

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值