当前位置: 首页 > 知识库问答 >
问题:

Spring Boot在配置中定义bean的问题

谢选
2023-03-14

我正在工作的一个项目在我的业余时间,在这个项目我已被要求与Spring靴工作。我以前对Spring Boot并不熟悉,我试着在stackoverflow和Google上搜索这里,但我似乎无法理解针对我的问题的不同解决方案是如何工作的。

首先,这是我的错误信息:

com.project.example.controller.VerverController中的构造函数参数0需要类型为“com.project.example.dao.Ververdao”的bean,但找不到该bean。

所以,如果有人能帮助我理解错误信息,这将使我的一天。

这是我的结构:

这是我的代码:

@ComponentScan("com.gambinomafia")
@SpringBootApplication
public class Main extends SpringBootServletInitializer {
    public static void main(String[] args) {
        new Main().configure(new SpringApplicationBuilder(Main.class)).run(args);
        }
    }
@Component
public class Configuration extends ResourceConfig {
    public Configuration() {
        register(VerverResourceImpl.class, VerverResource.class);
        register(VerverController.class);
        register(VerverDao.class);
    }
}
@Resource
@Path("verver")
public interface VerverResource {
    @GET
    @Path("/{userid}")
    @Produces(MediaType.APPLICATION_JSON)
    String getRefferingUrl(@PathParam("userid") int userid);
}
@AllArgsConstructor(onConstructor = @__({@Inject}))
public class VerverResourceImpl implements VerverResource {
    private VerverController controller;

    @Override
    public String getRefferingUrl(int userid) {
        log.info("Collection reciever url for user id: {}", userid);
        return controller.getRefferingUrl(userid);
    }
}
@Controller
@AllArgsConstructor
public class VerverController {
    private VerverDao ververDao;

    public String getRefferingUrl(int userid) {
        User user = ververDao.getUsername(userid);

        if (user.getUsername().isEmpty()) {
            throw new NotFoundException("Did not find any user with id " + userid);
        }

        return "<url-to-site>/?verv=" + user.getUsername();
    }
}
@AllArgsConstructor
public class VerverDao {
    @Value("spring.datasource.url")
    private String dbcon;

    public User getUsername(int userid) {
        Jdbi jdbi = Jdbi.create(dbcon);

        return jdbi.withHandle(handle -> handle.createQuery(
                "SELECT id, brukernavn FROM t_user WHERE id = :id")
                .bind("id", userid)
                .mapToBean(User.class)
                .findOnly());
    }
}

共有1个答案

慕麒
2023-03-14

首先,您在应用程序类中使用错误的包设置@componentscan

@ComponentScan("com.gambinomafia")
@SpringBootApplication

而且,根据图片,它必须是:

@ComponentScan("com.project.example")
@SpringBootApplication

编辑:@m.deinum对@componentscan的使用

@Controller
public class VerverController
    private VerverDao ververDao;

    @Autowired
    public VerverController(VerverDao ververDao) {
        this.ververDao = ververDao;
    }
}
 类似资料:
  • 角色JAVA 任务JAVA 使用者JAVA RoleRepository.java TaskRepository。JAVA 用户库 登录注册应用程序。JAVA application.properties http://maven.apache.org/xsd/maven-4.0.0.xsd" 波姆。xml [错误]测试运行:1,失败:0,错误:1,跳过:0,耗时:2.941秒

  • 本机Spring Boot自动配置(例如one)也可以检测主类中声明的bean(例如注释的方法)。 如何对主类中声明的bean进行正确的bean检测? 编辑

  • 我试图在Spring Boot中创建一个简单的REST服务。在我使用CrudRepository之前,一切都很好。现在我得到了这个错误- ***应用程序启动失败 描述: 公司中的现场er。Spring靴。io。受雇者EmployeeService需要“company”类型的bean。Spring靴。io。受雇者找不到EmployeeRepo“”。 措施: 考虑定义一个“company”类型的bea

  • 我正在做SpringBoot项目,并遵循一些测试SpringBoot的说明。 当我尝试将mysql DB与项目连接时,服务找不到映射器。 我不知道为什么它找不到映射器... 这是服务代码和 这是映射程序代码 下面的错误是 我将发布我的包裹设置的图片。。。

  • 我在Spring boot配置(用@Configuration注释)类中定义了这样一个Bean: MyRegistry如下所示: 现在,在另一个带有@Component的类中,我有@Autowired myRegistry,并按如下方式使用它: 启动Spring-Boot应用程序时我没有收到任何错误,但当应用程序运行时,Handler1的方法无法访问。 想知道我在这里做错了什么。我可能搞砸了注释的