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