Springboot如何将一个未使用任何将该类注入Bean容器的注解,注入到bean容器中,并且能够在该类使用@Autowired的注解来调用其它类

通常我们使用JPA来操作mysql数据库时,会使用@Service来注解service类,这样我们就可以在使用@Controller注解的controller里使用@Autowired来调用service类下的方法

但是在一些情况下我们不需要在一个类上@Service之类的注解

而是使用@Configuration+@Bean把一个类注入到bean容器

配置类

@Configuration
public class BlockChainServiceConfig {

    @Bean
    BlockChainService blockChainService(){
        return new BlockChainService();
    }
}

service类上没有使用任何注解,但是在该service里使用了@Autowired,如果没有上述config类,@Autowired下的类为null,有了上述config类,就成功在bean容器中找到需要的类,

注意:bean容器里的bean都是唯一的,名称不能重复

public class BlockChainService {

    @Autowired
    private RedisService redisService;

    @Autowired
    private BlockchainConfig blockchainConfig;

    public BlockChainService() {
、   
    }

    public void init() {
        redisService.create("test2", "你好");
        this.difficuty = blockchainConfig.getDifficuty();
    }

}

当项目启动后可以使用

@Autowired
private BlockChainService blockChainService;

能够在bean容器里找到注入进去的blockChainService   bean,成功实现调用blockChainService下的方法

blockChainService.init();

注意:BlockChainService类不需要在使用@Service(或者@Component、@Controller、@Repository、@Configuration这些用来定义Bean的注解)注解,这样会重复向bean容器中注入blockChainService,而且在BlockChainService的构造方法里不能使用该类下使用 @Autowired注解的类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值