无法自动装配。未找到“int”类型的 bean

我正在使用 Spring Boot,但在理解 Beans 时遇到了一些麻烦。我相信 Beans 取代了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;

        }

    }

}


开心每一天1111
浏览 459回答 2
2回答

狐的传说

当 Spring 尝试创建一个 bean 时,它需要知道 int uid 值。其他答案的建议可能会解决异常。但是您试图做的是对 Spring 的不当使用。我建议您阅读有关春豆的信息,例如。这,这在进一步之前。你的getUser方法不需要是一个 bean,你的 dao 是 bean,这就足够了。你UserService看起来不错,如果你对不同的 URL 得到相同的结果,你应该在UserService.getUser方法中调试 uid 值。如果 uid 在那里很好,那么在 Dao 中检查您的查询。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java