Springboot如何将一个未使用任何将该类注入Bean容器的注解,注入到bean容器中,并且能够在该类使用@Autowired的注解来调用其它类
通常我们使用JPA来操作mysql数据库时,会使用@Service来注解service类,这样我们就可以在使用@Controller注解的controller里使用@Autowired来调用service类下的方法但是在一些情况下我们不需要在一个类上@Service之类的注解而是使用@Configuration+@Bean把一个类注入到bean容器配置类@Configuratio...
通常我们使用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注解的类。
更多推荐
所有评论(0)