[英]Basic Controller Configuration Not working in Spring Boot
I am creating a sample project using Spring Boot and tried to map /
with a simple String message. 我正在使用Spring Boot创建一个示例项目,并尝试使用简单的String消息映射
/
。 I have used @Controller
annotation for this purpose. 为此,我使用了
@Controller
批注。 But for some reason the mapping is not working. 但是由于某种原因,映射无法正常工作。 I have also included
@ComponentScan
and @EnableWebMvc
with no luck. 我还包括
@ComponentScan
和@EnableWebMvc
,没有运气。
I have used maven spring-boot:run
goal to run. 我已经使用了maven
spring-boot:run
目标来运行。 Uploaded the project at https://github.com/tejact/SpringBasicsTreeHouse . 将项目上传到https://github.com/tejact/SpringBasicsTreeHouse 。
Here is the controller: 这是控制器:
package Controller;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Component
@Controller
public class GifController {
@RequestMapping("/")
@ResponseBody
public String listAllGifs() {
return "Listing all gifs : Madhu";
}
}
The main application entry: 主要应用程序条目:
package com.teja;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
@EnableAutoConfiguration
@ComponentScan
@EnableWebMvc
public class AppConfig {
public static void main(String args[]) {
SpringApplication.run(AppConfig.class, args);
}
}
And Spring Boot logs: 和Spring Boot日志:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building SpingBasicsTreeHouse 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) > test-compile @ SpingBasicsTreeHouse >>>
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ SpingBasicsTreeHouse ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ SpingBasicsTreeHouse ---
[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 2 source files to C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse\target\classes
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ SpingBasicsTreeHouse ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ SpingBasicsTreeHouse ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] <<< spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) < test-compile @ SpingBasicsTreeHouse <<<
[INFO]
[INFO] --- spring-boot-maven-plugin:1.4.0.RELEASE:run (default-cli) @ SpingBasicsTreeHouse ---
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.4.0.RELEASE)
2016-07-31 13:18:24.593 INFO 11084 --- [ main] com.teja.AppConfig : Starting AppConfig on Teja-PC with PID 11084 (C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse\target\classes started by Teja in C:\Users\Teja\git\SpringBasicsTreeHOuse\SpingBasicsTreeHouse)
2016-07-31 13:18:24.598 INFO 11084 --- [ main] com.teja.AppConfig : No active profile set, falling back to default profiles: default
2016-07-31 13:18:24.712 INFO 11084 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@ae4a4a3: startup date [Sun Jul 31 13:18:24 EDT 2016]; root of context hierarchy
2016-07-31 13:18:26.868 INFO 11084 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2016-07-31 13:18:26.885 INFO 11084 --- [ main] o.apache.catalina.core.StandardService : Starting service Tomcat
2016-07-31 13:18:26.886 INFO 11084 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.4
2016-07-31 13:18:27.002 INFO 11084 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2016-07-31 13:18:27.003 INFO 11084 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 2297 ms
2016-07-31 13:18:27.184 INFO 11084 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2016-07-31 13:18:27.191 INFO 11084 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2016-07-31 13:18:27.434 INFO 11084 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@ae4a4a3: startup date [Sun Jul 31 13:18:24 EDT 2016]; root of context hierarchy
2016-07-31 13:18:27.582 INFO 11084 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2016-07-31 13:18:27.587 INFO 11084 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2016-07-31 13:18:28.004 INFO 11084 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2016-07-31 13:18:28.082 INFO 11084 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2016-07-31 13:18:28.087 INFO 11084 --- [ main] com.teja.AppConfig : Started AppConfig in 4.278 seconds (JVM running for 12.677)
Also my pom.xml
looks like the following: 我的
pom.xml
也如下所示:
<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>TreeHouse</groupId>
<artifactId>SpingBasicsTreeHouse</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.4.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
By default @ComponentScan
scans the the current package and all the sub packages. 默认情况下,
@ComponentScan
扫描当前程序包和所有子程序包。
In your case AppConfig
class is in package com.teja
and the GifController
is in Controller
package, so it's not scanned. 在您的情况下,
AppConfig
类在com.teja
包中,而GifController
在Controller
包中,因此不进行扫描。
Move GifController
to com.teja.controller
for example, or any other sub package of com.teja
and it will work. 移动
GifController
到com.teja.controller
例如,或任何其他子包com.teja
,它会工作。
Usually I keep the bootstraping class and all the configuration classes in package named <com|org|etc>.<myCompany>.<myProject>
and then create the other packages as sub packages of this one. 通常,我将引导类和所有配置类保留在名为
<com|org|etc>.<myCompany>.<myProject>
的程序包中,然后将其他程序包创建为该程序包的子程序包。
Also you don't need both @Component
and @Controller
. 另外,您不需要
@Component
和@Controller
。 Remove @Component
- @Controller
already inherits @Component
. 删除
@Component
@Controller
已经继承了@Component
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.