我是一名spring boot学习者,所以我一直在尝试创建一些基本的spring boot应用程序。我试图运行开发的应用程序时出错。
我的错误是[[https://i.stack.imgur.com/oyQDi.png][1]][1]
java:
package io.ajithan.springbootstarter;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan({"io.ajithan.springbootstarter"})
public class StoreApiAPP {
public static void main(String[] args) {
SpringApplication.run(StoreApiAPP.class, args);
}
}
ItemDetails.java:[软件包名称:io.ajithan.springbootstarter.model]
package io.ajithan.springbootstarter.model;
public class ItemDetails {
private Integer itemId;
private String itemName;
private Double itemPrice;
private String itemCategory;
public ItemDetails() {
}
public ItemDetails(Integer itemId, String itemName, Double itemPrice, String itemCategory) {
this.itemId = itemId;
this.itemName = itemName;
this.itemPrice = itemPrice;
this.itemCategory = itemCategory;
}
public Integer getItemId() {
return itemId;
}
public void setItemId(Integer itemId) {
this.itemId = itemId;
}
public String getItemName() {
return itemName;
}
public void setItemName(String itemName) {
this.itemName = itemName;
}
public Double getItemPrice() {
return itemPrice;
}
public void setItemPrice(Double itemPrice) {
this.itemPrice = itemPrice;
}
public String getItemCategory() {
return itemCategory;
}
public void setItemCategory(String itemCategory) {
this.itemCategory = itemCategory;
}
}
ItemResponse.java:[软件包名称:io.ajithan.springbootstarter.model]
package io.ajithan.springbootstarter.model;
public class ItemResponse {
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private String message;
}
StoreController。java:[包名:io.ajithan.springbootstarter.controller]
package io.ajithan.springbootstarter.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import io.ajithan.springbootstarter.model.ItemDetails;
import io.ajithan.springbootstarter.model.ItemResponse;
import io.ajithan.springbootstarter.service.StoreService;
@RestController
public class StoreController {
@Autowired
private StoreService storeService;
@RequestMapping("/getAllItems")
public List<ItemDetails> getItemDetailsList(){
return storeService.getItemDetails();
}
@RequestMapping("/getSingleItem/{idNumber}")
public ItemDetails getSingleItem(@PathVariable("idNumber") Integer id) {
return storeService.getSingleItem(id);
}
@RequestMapping(method=RequestMethod.POST,value="/addItem")
public ItemResponse addSingleItem(@RequestBody ItemDetails itemDetails) {
return storeService.addSingleItem(itemDetails);
}
}
商店ervice.java:[软件包名称:io.ajithan.springbootstarter.service]
package io.ajithan.springbootstarter.service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import io.ajithan.springbootstarter.model.ItemDetails;
import io.ajithan.springbootstarter.model.ItemResponse;
@Service
public class StoreService {
@Autowired
private ItemResponse itemResponse;
private List<ItemDetails> itemDetailsList = new ArrayList<>(Arrays.asList(
new ItemDetails(1,"5Rs GOODDAY Biscuit",5.00,"SWEET"),
new ItemDetails(2,"10Rs GOODAY Biscuit,",10.00,"SALTY"),
new ItemDetails(3,"25Rs GOODAY Biscuit",25.00,"CREAMY")
));
public List<ItemDetails> getItemDetails()
{
return itemDetailsList;
}
public ItemDetails getSingleItem(Integer id) {
return itemDetailsList.stream().filter(n->n.getItemId().equals(id)).findFirst().get();
}
public ItemResponse addSingleItem(ItemDetails itemDetails) {
itemDetailsList.add(itemDetails);
itemResponse.setMessage("Item added successfully");
return itemResponse;
}
}
有人能给我这个问题的解决方案吗?
您必须在应用程序中定义ItemACK bean:
首先在ItemACK类中添加@Component表示法,如下所示:
@Component
public class ItemResponse {
private String message;
//** Default Constructor
public ItemResponse() {
}
//** getter and setter
}
在类配置的某个地方,您必须告诉spring ItemResponse是一个需要注入的bean。如果您有一个带有@配置符号的类,请声明bean,否则创建一个配置类,例如在名为“config”的包中:
@Configuration
public class AppConfig {
@Bean
public ItemResponse itemResponse() {
return new ItemResponse() ;
}
}
不要忘记在bean中放置默认构造函数。祝你好运
在这种情况下,自动连接项目响应(ItemResponse)没有任何意义,实际上很危险。
默认情况下,Spring中的bean是单例的,所以现在只有一个ItemResponse的实例。现在想象一下,50个并发线程更改了ItemResponse的单个实例,您认为每个线程将有什么输出?
在您的情况下,唯一正确的解决方案是删除autowired字段,只需在addSingleItem方法中构造一个新的ItemResponse并返回它。这样就没有共享状态。
@Service
public class StoreService {
private List<ItemDetails> itemDetailsList = new ArrayList<>(Arrays.asList(
new ItemDetails(1,"5Rs GOODDAY Biscuit",5.00,"SWEET"),
new ItemDetails(2,"10Rs GOODAY Biscuit,",10.00,"SALTY"),
new ItemDetails(3,"25Rs GOODAY Biscuit",25.00,"CREAMY")
));
public List<ItemDetails> getItemDetails()
{
return itemDetailsList;
}
public ItemDetails getSingleItem(Integer id) {
return itemDetailsList.stream().filter(n->n.getItemId().equals(id)).findFirst().get();
}
public ItemResponse addSingleItem(ItemDetails itemDetails) {
itemDetailsList.add(itemDetails);
ItemResponse itemResponse = new ItemResponse();
itemResponse.setMessage("Item added successfully");
return itemResponse;
}
}
结构没有问题。spring boot可以扫描UserMapper,但不能扫描UserService。我试着给我的UserService@Mapper组件,然后它就可以被扫描了。但我不知道如何使用其他方法进行扫描。我尝试了@服务,但不起作用。
我是Spring新来的,所以我有一个这样的问题:描述: 字段templateEngine在com.diet4you。拉普科·叶卡捷琳娜。MailComponent需要找不到类型org.thymeleaf.TemplateEngine的bean。 注入点具有以下注释:-@org。springframework。豆。工厂注释。自动连线(必需=真) 已找到以下候选项,但无法注入:-“ThymeleafA
我有一个java项目,它将Spring Boot与JPA结合使用,并将Hibernate用于数据库。我正在尝试建立一个访问数据库的微服务。(我不熟悉微服务和Spring Boot)。 以下是主要课程: IGmCircularsDAO. class: GMCircularsDAOImpl。类别: ParentDAO。班 循环服务。班 当我运行这段代码时,我遇到了以下错误,我已经陷入其中一段时间了。
我是spring boot的新手,一直在尝试制作简单的REST web应用程序。我遵循了不同指南中所示的步骤,但当我尝试运行应用程序时,仍然会遇到同样的问题。 这是我每次尝试运行代码时看到的输出 项目类别:
问题内容: 每当启动应用程序spring启动时,我都会收到以下错误。 申请开始失败 描述: com.base.model.AbstractDao中的现场会话需要找不到“ org.hibernate.SessionFactory”类型的Bean。 行动: 考虑在配置中定义类型为“ org.hibernate.SessionFactory”的bean。 我添加了我的应用程序的实现: POM.xml 应
我已经提到了为什么在Spring Boot期间找不到bean?和“字段需要找不到类型的bean。”使用mongodb的spring restful API出错 CustomerService只是一个接口,充当CustomerController和CustomerService实施之间的中间人,它实际上在CustomerRepository的帮助下对数据库执行操作。 我正在尝试从MYSQL数据库中检