一、spring boot 特点
spring boot 是spring为简化spring程序开发,减少spring配置、开发、部署错误而开发spring开发框架,他提供了一系列的依赖打包,采用习惯替代依赖的方式解决依赖问题。对于web 开发,Spring Boot默认使用tomcat作为服务器,使用logback提供日志记录。
二、spring boot 编程初步
1、环境配置
spring默认采用maven或gradle作为构建工具,针对采用maven作为构建工具的环境,可自动根据spring-boot初始化包设置,下载相应依赖包。简单的web应用,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>cn.larry.spring</groupId>
<artifactId>larry-spring-demo4</artifactId>
<version>0.0.1-SNAPSHOT</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>
</dependencies>
</project>
在该pom.xml文件中,需设置spring-boot-starter-parent项作为依赖父项,添加spring-boot-starter-web作为依赖项,spring boot会自动下载spring 开发相关的springframework、spring web 以及spring web mvc的jar包
2、编程初步
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
Object[] objs=new Object[]{HelloController.class,TestController.class};
SpringApplication.run(objs,args);
}
}
spring boot 在main 函数中加载代码类,如:restfult 应用,在main函数中加载相应对的controller类;
当然还可以通过ComponentScan注释的方式加载Controller类,具体实现方式如下例子:
@SpringBootApplication
@ComponentScan(basePackages = {"com.example.controller"})
public class DemoApplication {public static void main(String[] args) {
SpringApplication.run(DemoApplication.class,args);
}
}
三、实现json格式参数输入和返回
在实现restful形式的控制器时,接收客户端json格式的参数以及象客户端返回json格式的参数都非常简单,即为方法添加@Resonsebody注释即可返回json格式的数据,在方法的参数中增加Requestbody 类型的参数即可,代码示例如下:
@RequestMapping(value="/errorIndex",method = RequestMethod.GET)
@ResponseBody
public List<String> errorTest(HttpServletRequest request)
{
String id=request.getParameter("id");
Integer inx=Integer.parseInt(id);
List<String> listMsg=new ArrayList<>();
listMsg.add(inx.toString());
return listMsg;
}
备注:为方法添加@Responsebody注释后,系统会自动将返回参数转换为json格式,List集合自动添加id参数依次为0:xxx,1:xxx等,当返回参数为Map类型时,系统自动将Key和value转化json格式
四、Spring boot 的全局异常处理
如果代码未经任何异常处理,将在客户端直接显示500服务器内部错误,将给客户非常不好的用户体验,java提供了全局异常处理方式:即实现全局异常处理类,自动捕获程序运行过程中的异常信息,实现友好的异常提示,示例代码如下:
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
@RequestMapping("/dataerror")
public Map<String,Object> exceptionHandler(Exception ex, HttpServletRequest request){
Map<String,Object> errorMap=new HashMap<String,Object>();
errorMap.put("error path:",request.getServletPath());
errorMap.put("errorMessage",ex.getMessage());
return errorMap;
}
}
备注:
1)、全局异常处理类一定要添加:@ControllerAdvice注释,这样当控制器发生异常时才会自动把异常提交处理类;
2)、异常处理方法一定要使用@ExceotionHandler(RuntimeException.class)注释,表示方法处理来自运行时的异常信息;