定义BlockChainServiceConfig类时
@Configuration
public class BlockChainServiceConfig {
@Bean
BlockChainService blockChainService(){
return new BlockChainService();
}
}
BlockChainService 类如下
public class BlockChainService {
@Autowired
private RedisService redisService;
public BlockChainService() {
redisService.create("test2", "你好");
}
}
我在BlockChainServiceConfig类中用@Configuration和@Bean注入BlockChainService的构造方法,但是报错Error creating bean with name 'blockChainService' defined in class path resource ,后来我发现在BlockChainService的的构造方法里不能使用
@Autowired
private RedisService redisService;
所以不要在构造方法里使用@Autowired注解导入的bean
如果需要这么做,就把@Autowired的bean在config里导入
@Configuration
public class BlockChainServiceConfig {
@Autowired
private RedisService redisService;
@Bean
BlockChainService blockChainService(){
return new BlockChainService(redisService);
}
}
public class BlockChainService {
public BlockChainService(RedisService redisService) {
redisService.create("test2", "你好");
}
}
这样就能正确处理了。
同时注意@Service(或者@Component、@Controller、@Repository、@Configuration这些用来定义Bean的注解)注解一定要注释掉或者删掉,这样才能够让自己手动构建的Bean起作用。