我正在构建一个简单的Spring应用程序,目的是返回" Hello world"作为建立在基础上的基础。我昨晚在this指南之后设置了一个干净的项目,该指南有效,现在我试图将现有的项目带到相同的功能。
我有两个名为ApplicationConfig.java
和Controller.java
的文件,其任务是在遇到某个网址时返回一个字符串。当我访问localhost:8080
时,它会向我的index.html
呈现指向我希望返回字符串的URL的链接。当我访问网址localhost:8080/home/greet
时,它会返回404。
我的ApplicationConfig.java
:
package application;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ApplicationConfig {
public static void main(String[] args) {
SpringApplication.run (ApplicationConfig.class, args);
}
}
和我的Controller.java
package controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/home")
public class Controller {
@RequestMapping("/greet")
public String greeting() {
return "Hello";
}
}
据我所知/home/greet/
应该生成一个只读取" Hello"但事实并非如此。有什么问题?
这是我的pom.xml
以及我的项目结构,如果它们相关的话。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework</groupId>
<artifactId>gs-rest-service</artifactId>
<version>0.1.0</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>spring-releases</id>
<url>https://repo.spring.io/libs-release</url>
</pluginRepository>
</pluginRepositories>
</project>
答案 0 :(得分:3)
您的入口点类application
位于Controller.java
个包中,controller
位于application
个包中。
SpringBoot扫描EntryPoint类所在的包(和子包)中的Spring组件。
然后将您的控制器移至application
或using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication14
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
string name = "P:class1.clsPerson.isAlive";
XElement person = doc.Descendants("member").Where(x => (string)x.Attribute("name") == name).FirstOrDefault();
person.Add(new object[] {
new XElement("Description", "Whether the object is alive or dead"),
new XElement("StandardValue", false)
});
}
}
}
下的任何嵌套包。
答案 1 :(得分:0)
第1步:在package abc.app;
第2步:在package abc.app.controller;
中添加 Controller.java 。
第3步:在 ApplicationConfig.java 中添加@ComponentScan("abc.app")
。
例如:
<强> ApplicationConfig.java:强>
package abc.app;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@ComponentScan("abc.app")
public class ApplicationConfig {
public static void main(String[] args) {
SpringApplication.run (ApplicationConfig.class, args);
}
}
Controller.java:
package abc.app.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Controller {
@RequestMapping("/greet")
public String greeting() {
return "Hello";
}
}
我希望你在这里找到合适的解决方案。