一边学习公司用到的技术,一边重构小程序后端,从而更好的理解公司搭建的框架。此处记录一个用idea+gradle+springboot的基础实现。
所用环境
IntelliJ IDEA 2017.1.1 JDK1.8 Gradle4.3 Spring Boot1.5.8.RELEASE
如图在gradle中选择java和web
填写GroupId、ArtifactId、Version三项,和maven中一样。
此处是如图选择,具体含义见下面名词解释:
相关名词
执行完成后需等待一会gradle的自动创建过程,然后可看到如图所示的目录结构
在build.gradle文件中的dependencies 中添加springboot依赖:
compile("org.springframework.boot:spring-boot-starter-web:1.5.8.RELEASE")
创建含main函数的AppLicationController类:
package com.windcoder.nightbook.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Description:
* User: WindCoder
* Date: 2017-11-12
* Time: 22:30 下午
*/
@Controller
@EnableAutoConfiguration
public class AppLicationController {
@ResponseBody
@RequestMapping("/helloMain")
public String home(String name){
return "Hello "+name+"! This is Spring-boot test One";
}
public static void main(String[] args){
SpringApplication.run(AppLicationController.class,args);
}
}
在AppLicationController类处右键-执行run即可。此时不需要管存不存在web.xml,也不需要创建application.properties文件。
到现在为止依旧是spingBoot官方的实例,但此时若自己建一个自定义的controller类,如HelloController 类:
package com.windcoder.nightbook.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Description:
* User: WindCoder
* Date: 2017-11-12
* Time: 22:32 下午
*/
@Controller
@RequestMapping("/api")
public class HelloController {
@ResponseBody
@RequestMapping(value ="/hello",method = RequestMethod.GET)
public String home(String name){
return "Hello "+name+"! This is Spring-boot test";
}
}
重启执行发现会报如下错误:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
此时需要略作修改才能让程序找到——将@EnableAutoConfiguration替换为@SpringBootApplication:
package com.windcoder.nightbook.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* Description:
* User: WindCoder
* Date: 2017-11-12
* Time: 22:30 下午
*/
@Controller
@SpringBootApplication
public class AppLicationController {
@ResponseBody
@RequestMapping("/helloMain")
public String home(String name){
return "Hello "+name+"! This is Spring-boot test One";
}
public static void main(String[] args){
SpringApplication.run(AppLicationController.class,args);
}
}
若是该类中没有访问路径,可以将@Controller注解去掉。
还有一种实现方式是对含main的类增加注解,ComponentScan方式:
@Configuration
@EnableAutoConfiguration
@ComponentScan
此处暂且不再重贴代码。
之后重新运行便可访问到自定义Controller中的路径。
弦外音: 很多Spring Boot开发者经常使用
@Configuration
,@EnableAutoConfiguration
,@ComponentScan
注解他们的main类,由于这些注解如此频繁地一块使用,Spring Boot就提供了一个方便的@SpringBootApplication
注解作为代替。@SpringBootApplication
注解等价于以默认属性使用@Configuration
,@EnableAutoConfiguration
和@ComponentScan
@SpringBootApplication
注解也提供了用于自定义@EnableAutoConfiguration
和@ComponentScan
属性的别名(aliases)。
[Gradle中文教程系列]-跟我学Gradle-14.1:IDEA中Gradle插件的使用
使用Intellij Idea+Gradle 搭建Java 本地开发环境
SpringBoot配置非含main类的Controller的注解
spring boot 自定义Controller,不能被扫描