我最近开发了一个Web应用程序,在过去的两周里,当我最终测试它的时候,可能是出于某种原因a a似乎甚至没有进入我必须返回JSON对象列表的方法。和一个允许我访问JSP文件的库。index.jsp出现了,但我几乎感觉Sping Boot 是免费提供的,因为它甚至没有输入that方法。这个问题我已经遇到几天了,但是我尝试自己解决它-我找到了另一个答案,建议在Spring类中放置一个断点,但是当我通过Eclipse“调试”它时,它甚至没有在该类中停止-关于模式匹配-一个答案建议在www. example中添加一个上下文 www.example.com :https://github.com/sfulmer/Scheduler.git
这是我的控制器:
package net.draconia.schedule.controllers;
import java.util.List;
import net.draconia.schedule.beans.Event;
import net.draconia.schedule.dao.EventDAO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ScheduleController
{
private static final Logger logger = LoggerFactory.getLogger(ScheduleController.class);
@Autowired
private EventDAO mObjDAO;
protected EventDAO getDAO()
{
return(mObjDAO);
}
//@GetMapping("/events")
@RequestMapping(value = "events", method = RequestMethod.GET)
public @ResponseBody List<Event> getEvents()
{
logger.debug("I got here");
return(getDAO().getList());
}
@GetMapping("/")
public String index()
{
return("index");
}
}
下面是DAO接口-如果需要,我将显示类,但这是控制器所查看的内容:
package net.draconia.schedule.dao;
import java.util.List;
import javax.persistence.EntityNotFoundException;
import net.draconia.schedule.beans.Event;
public interface EventDAO
{
public Event getEventById(final long lId) throws EntityNotFoundException;
public List<Event> getList();
public void remove(final Event objEvent);
public void removeById(final long lId);
public Event save(final Event objEvent);
}
Event类很长,但如果我需要包含它,我会包含它。application.properties文件在这里:
spring.datasource.url = jdbc:mysql://localhost:3306/schedule
spring.datasource.username = root
spring.datasource.password = R3g1n@ M1lL$ 1$ My Qu3eN!
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
server.servlet.contextPath=/scheduler
下面是我的Application类(带有SpringBootApplication注解):
package net.draconia.schedule;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@SpringBootApplication(scanBasePackages = {"net.draconia.schedule.controller"})
public class ScheduleApp implements WebMvcConfigurer
{
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder)
{
return(builder.sources(ScheduleApp.class));
}
public static void main(String[] args)
{
SpringApplication.run(ScheduleApp.class, args);
}
}
我对Sping Boot 比较陌生,但以前从未遇到过这个问题,因为我在工作中使用它,它工作正常,但我们完全使用REST服务,我使用JSP文件以及用JSON响应的某种端点,但您无法通过JSP视图从REST服务响应,因此不幸的是,我无法复制工作项目以使其工作,否则我会 * 叹气 * 有什么想法,我可以让这个工作或什么我省略了?
2条答案
按热度按时间tjrkku2a1#
我的猜测是,您将Spring和Sping Boot 中的内容混合在一起,这会在加载bean时遇到问题,因为您可能更改了注解加载顺序,或者加载了其他bean,而不是预期的Spring引导默认值。
我的建议是遵循以下指南:https://spring.io/guides/gs/spring-boot/
如果使用spring boot,则仅使用spring Boot 中的注解;如果使用spring,则仅使用spring中的注解(它们类似,但不完全相同,配置不同)。
无论如何,您可以使用
ctx.getBeanDefinitionNames()
方法检查Spring应用程序上下文中加载的bean(将其注入Application类),并查看您的控制器是否在那里(我猜没有)。hfsqlsce2#
通过查看代码,我的第一印象是,您在这里有一些打字错误:
您的控制器类软件包名称为
net.draconia.schedule.controllers
。因此,请使用正确的软件包名称更正您的
scanBasePackages
。如果不是这样,请更新完整的堆栈跟踪以及您提交到应用程序中的GET
请求。我们将查看并相应地更新答案。