刚工作那会用的还是tomcat、springMVC、hibernate、mybatis、html、jsp……搭个项目可真是麻烦,各种复杂的结构还得打个war包配置web.xml,启动tomcat……后来也没做网站开发了,最近又看了看springboot,比之前那种开发web项目简单多了,开发效率高;一边学习一边做笔记;
maven导入:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.2.0.RELEASE</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><type>pom</type></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.2.0.RELEASE</version></dependency>
为了方便开发学习,还导入了:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><version>2.2.0.RELEASE</version></dependency>
devtools可以在一些代码变动时自动编译重启项目,也可以手动修改配置指定代码变动生效或者禁用;
启动springboot
在main方法里调用SpringApplication.run()方法,并传入一个class,并在这个class类前加上@SpringBootApplication注解,就可以启动一个没有controller的默认配置的web服务;(通常情况main方法也放在这个class类里启动)
/*** 2022年10月20日下午3:50:18*/
package testspringboot.test1;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author XWF**/
@SpringBootApplication
public class Test1Main {/*** @param args*/public static void main(String[] args) {SpringApplication.run(Test1Main.class, args);}}
启动服务:
默认端口是8080,默认项目上下文路径是“/”,没有controller访问返回错误页:
添加配置文件
默认配置文件名字是application.properties或者application.yml,默认可以放在四个位置:classpath/下、classpath/config/下、根目录/下、根目录/config/下;(也可以通过@PropertySource指定位置和自定义配置文件名字)
最简单的在application.properties里指定端口和上下文路径:
server.port=8888
server.servlet.context-path=/testspringboot
再次启动,端口和上下文路径改变了:
增加controller:
@SpringBootApplication是个组合注解,默认扫描当前类包下以及子包的bean;(也可以用@ComponentScan设置扫描路径)
需要在controller类前加@Controller或者@RestController注解;(@RestController的controller返回字符串或者json数据,@Controller默认返回视图,在@Controller下使用@ResponseBody等同于@RestController功能)
/*** 2022年10月21日下午3:01:39*/
package testspringboot.test1;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author XWF**/
@RestController
public class Test1Controller {@RequestMapping("/test1")public String test1() {return "Test1Controller.test1()";}}
访问结果:
也可以在controller类前再加一个总的@RequestMapping
/*** 2022年10月21日下午3:01:39*/
package testspringboot.test1;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** @author XWF**/
@RestController
@RequestMapping("/Test1Controller")
public class Test1Controller {@RequestMapping("/test1")public String test1() {return "HELLO";}}