我正在使用Spring Boot,但在理解Bean时遇到了一些麻烦。我被认为可以将Beans替换为new
关键字。
我确定仅使用Autowire时,我的Bean不会在对象上创建新实例,并且我的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;
}
}
}
谢谢:)
答案 0 :(得分:0)
@Bean
注释告诉spring运行方法以实例化某些对象。
Spring需要创建参数uid来调用您的方法,但是它不知道如何实例化uid。所以:
答案 1 :(得分:0)