Java 在@SpringBootApplication中找不到Bean

Java 在@SpringBootApplication中找不到Bean,java,compilation,microservices,Java,Compilation,Microservices,我对JAVA中的微服务有一个问题。我不明白为什么我的代码不想编译 我跟随一个教程,法语视频创建了一个简单的项目来熟悉微服务 我创建了一个控制器、dao和一个模型。当我编译控制器以访问127.0.0.1.1port/Produits时,它必须返回我在代码中定义的产品列表,但在编译时,它显示我曾经有一只手: 错误:在类中找不到main方法 正常情况下,启动项目时,我不需要手动,因为它必须告诉我Ok,您可以使用127.0.0.1/端口,端口在应用程序中定义。物业及物业尚未占用 以下是我的项目的体系结构

我对JAVA中的微服务有一个问题。我不明白为什么我的代码不想编译

我跟随一个教程,法语视频创建了一个简单的项目来熟悉微服务

我创建了一个控制器、dao和一个模型。当我编译控制器以访问127.0.0.1.1port/Produits时,它必须返回我在代码中定义的产品列表,但在编译时,它显示我曾经有一只手:

错误:在类中找不到main方法

正常情况下,启动项目时,我不需要手动,因为它必须告诉我Ok,您可以使用127.0.0.1/端口,端口在应用程序中定义。物业及物业尚未占用

以下是我的项目的体系结构:

下面是我要编译的控制器代码:

package com.ecommerce.microcommerce.controller;

import com.ecommerce.microcommerce.dao.ProductDao;
import com.ecommerce.microcommerce.model.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class ProductController {

    @Autowired
    private ProductDao productDao;

    //Produits
    @GetMapping(value = "Produits")
    public List<Product> listeProduits() {
        return productDao.finAll();
    }

    //Produits/{id}
    @GetMapping(value = "Produits/{id}")
    public Product afficherUnProduit(@PathVariable int id) {
        Product product = new Product(1, new String("aspirateur"), 100);
        return product;
    }

}
我看到很多人在其他帖子上有编译问题,但没有回答我的问题


提前感谢,代码很长,但非常简单。我永远不知道我投入的是太多还是不够。我把所有的东西都放进去了。谢谢

尝试将MicrocommerceApplication类移动到package

com.ecommerce.microcommerce

另外,默认地址是localhost127.0.0.1

由于MicrocommerceApplication主类和其他bean(如ProductDaoImpl和ProductController)位于不同的包中,因此Spring无法发现它们

@SpringBootApplication=@Configuration+@ComponentScan+@EnableAutoConfiguration

@SpringBootApplication注释相当于使用@Configuration、@EnableAutoConfiguration和@ComponentScan及其默认属性:[……]

默认值仅用于搜索当前包中的bean

如果需要自定义配置,请根据需要提供自己的@configuration、@EnableAutoConfiguration和@ComponentScan

您问题的解决方案:

您可以使用hack在同一个包中移动微通信应用程序和所有其他bean

代替@SpringBootApplication,您可以使用:

package com.ecommerce.microcommerce.model;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Configuration
@EnableAutoConfiguration
@ComponentScan({
                 "com.ecommerce.microcommerce.controller",
                 "com.ecommerce.microcommerce.dao"
                 "com.ecommerce.microcommerce.model"})
public class MicrocommerceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicrocommerceApplication.class, args);
    }
}

如果希望主类位于另一个包中,也可以实现自定义运行器来运行应用程序,如:

@Component
public class ApplicationRunner implements CommandLineRunner {

        @Autowired
        private ProductController productController;

        @Override
        public void run() {
            //TODO
        }
    }

我希望它能起作用

请阅读如何创建。然后使用链接改进您的问题,不要通过评论添加更多信息。否则,我们无法回答您的问题并帮助您。意思:请将收到的错误信息作为文本包含在内。不要期望我们按照那个教程去做,下载所有的资料,试着自己编译,这可能会导致与你所面临的问题完全不同的问题。你没有阅读这个主题。我把他给我看的错误放在了主题中,但隐藏在那一大段中。但仍然很难理解。我将撤销我的投票,结束我的请求,但我仍然认为你们应该花一些时间看看……谢谢你们,我感谢你们的这个姿态。我会努力写下一篇博文谢谢你的回答,我刚搬家,但我还是犯了同样的错误。我还更新了这个类以适应它的新文件夹,但没有成功。我会让你知道:
package com.ecommerce.microcommerce.model;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MicrocommerceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicrocommerceApplication.class, args);
    }
}
package com.ecommerce.microcommerce.model;

public class Product {

    private int id;
    private String name;
    private int prix;

    public Product(int id, String name, int prix) {
        this.id = id;
        this.name = name;
        this.prix = prix;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrix() {
        return prix;
    }

    public void setPrix(int prix) {
        this.prix = prix;
    }

    @Override
    public String toString() {
        return "Product [id=" + id + ", name=" + name + ", prix=" + prix + "]";
    }

}
package com.ecommerce.microcommerce.model;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@Configuration
@EnableAutoConfiguration
@ComponentScan({
                 "com.ecommerce.microcommerce.controller",
                 "com.ecommerce.microcommerce.dao"
                 "com.ecommerce.microcommerce.model"})
public class MicrocommerceApplication {

    public static void main(String[] args) {
        SpringApplication.run(MicrocommerceApplication.class, args);
    }
}
@Component
public class ApplicationRunner implements CommandLineRunner {

        @Autowired
        private ProductController productController;

        @Override
        public void run() {
            //TODO
        }
    }