java无法自动连线。找不到类型为“int”的bean
我在和Spring Boot合作,我在理解Bean方面有点困难。我开始相信bean会取代new
关键字
我发现,当使用Autowire时,我的Beans不会在对象上创建新实例,我的REST应用程序将返回用户最初要求的相同响应,不管是什么(即,如果我最初访问了url/id/1,然后访问了url/id/2,那么REST响应将与url/id/1相同)
我试图通过创建@Configuration文件来定义bean来解决这个问题
@Configuration
public class UserConfig {
@Autowired
UserDAO DAO;
@Bean
public User getUser(int uid) {
try {
return DAO.getUser(uid);
} catch (SIDException e) {
return null;
}
}
}
但我在运行时不断遇到这个错误:Parameter 0 of method getUser in com.application.Config.UserConfig required a bean of type 'int' that could not be found.
我不明白这一点,因为我试图在配置文件中定义Bean
在我的主文件中,我有以下注释:
@SpringBootApplication(scanBasePackages = {"com.application.Config","com.application"})
@ComponentScan({"com.application.Config","com.application"})
我在这里使用我的bean,如果它有帮助的话:
@Service
public class UserService {
@Autowired
private UserDAO DAO;
public User getUser(int uid) {
try {
return DAO.getUser(uid);
} catch (SIDException e) {
return null;
}
}
}
谢谢:)
# 1 楼答案
@Bean
注释告诉spring运行方法来实例化某个对象。 Spring需要创建参数uid来调用您的方法,但它不知道如何实例化uid。所以:# 2 楼答案
当Spring试图创建bean时,它需要知道int-uid值。其他答案可能会解决这个例外
但你试图做的是对弹簧的不当使用。我建议你在继续之前先读一读关于spring bean的书,例如this,this
你的
getUser
方法不需要是bean,你的dao就是bean,这就足够了。你的UserService
看起来不错,如果你对不同的URL得到相同的结果,你应该在UserService.getUser
方法中调试uid值。如果uid很好,那么在Dao中检查您的查询