(转)Spring Boot(二) & lombok
【课程五】springb...mbok.xmind0.1MB
【课程五预习】spr...mbok.xmind0.1MB
springboot的版本!!!2.0.1.RELEASE
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
第一步、导入mybatis plus的pom坐标,驱动包
<!-- mybatis plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
第二步、配置数据库连接信息
# DataSource Config
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/homework
username: root
password: admin
集成完毕~
代码生成工具MyGenerator.java,用于生成代表的增删改查
MyGenerator.java4.1KB
在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示。
@ExceptionHandler可用于控制器中,表示处理当前类的异常。
@ExceptionHandler(Exception.class)
public String exceptionHandler(Exception e) {
log.error("---------------->捕获到局部异常", e);
return "index";
}
如果单使用@ExceptionHandler,只能在当前Controller中处理异常。但当配合@ControllerAdvice一起使用的时候,就可以摆脱那个限制了。
可通过@ExceptionHandler的参数进行异常分类处理。
步骤:
第一步、自定义异常
public class MyException extends Exception {
public MyException(String message) {
super(message);
}
}
第二步、定义全局处理器,主要是@ControllerAdvice和@ExceptionHandler注解的运用
@Slf4j
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
log.error("------------------>捕捉到全局异常", e);
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName("error");
return mav;
}
@ExceptionHandler(value = MyException.class)
@ResponseBody
public R jsonErrorHandler(HttpServletRequest req, MyException e) throws Exception {
//TODO 错误日志处理
return R.fail(e.getMessage(), "some data");
}
}
直接运行命令 mvn clean install
第一步、修改packing,从jar改成war
<packaging>war</packaging>
第二步、springboot的web模块移除内嵌的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
第三步、添加tomcat的servlet-api的依赖
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
<scope>provided</scope>
</dependency>
第四步、修改启动方法,继承SpringBootServletInitializer 并重写configure方法。
@SpringBootApplication
public class SpringBootFrameApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(SpringBootFrameApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向原先用main方法执行的Application启动类
return builder.sources(SpringBootFrameApplication.class);
}
}
第五步、mvn clean package打包部署即可。
- 什么是lombok
连官网都懒得废话,只给出了一句广告词:给你的java加点料(spice up your java)。
我们自己来总结一下:
lombok是一个ide插件,它可以让我们写更少的代码,而编译出更多的字节码。
我们可以让我们编译出一个复杂的.class文件,而我们的.java文件很干净清爽。
lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过通用对应的注解,在编译源码的时候生成对应的方法。
- lombok有点和缺点
优点
- 省事,少些写很多模板代码;减少修改属性带来的错误。
缺点
- 可读性差;不支持多种参数构造器的重载。
- lombok安装
- 先装插件
IDEA
eclipse
由于eclipse的默认编译器并不是javac,所以,需要额外安装,基本就是改下引导参数,可以直接运行jar包,或者手动在eclipse.ini里加上参数
-Xbootclasspath/a:lombok.jar
-javaagent:lombok.jar
maven使用步骤
- 导入pom包
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
- lombok常用注解
@Slf4j
Creates private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);
@Log4j
Creates private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class);
@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Setter:注解在属性上;为属性提供 setting 方法
@Getter:注解在属性上;为属性提供 getting 方法
样例::
http://codepub.cn/2015/07/30/Lombok-development-guidelines/
- lombok使用场景
- 尤其适合pojo类,如普通的javabean、orm的实体类、json的实体类等。
- 有些功能如Log相关,适用于任意类。
而且由于他相当于是在编译期对代码进行了修改,因此从直观上看,源代码甚至是语法有问题的。
一个更直接的体现就是,普通的包在引用之后一般的IDE都能够自动识别语法,但是Lombok的这些注解,一般的IDE都无法自动识别。
像spring那种注解是通过反射来获得注解对应的元素并实现业务逻辑,但是我们显然不希望在使用Lombok这种功能的时候还要编写其他的调用代码,况且用反射也获取不到编译期才存在的注解。
幸运的是Java早已支持了JSR269的规范,允许在编译时指定一个processor类来对编译阶段的注解进行干预。
public abstract class AbstractProcessor implements Processor{
#通过ProcessingEnvironment来获取编译阶段的一些环境信息
public synchronized void init(ProcessingEnvironment var1){}
#实现具体逻辑的地方,也就是对AST进行处理的地方
public abstract boolean process(Set<? extends TypeElement> var1, RoundEnvironment var2);
}
init的主要用途是通过ProcessingEnvironment来获取编译阶段的一些环境信息;process主要是实现具体逻辑的地方,也就是对AST进行处理的地方。
https://juejin.im/entry/5a390ba76fb9a0451e3fed7c
http://blog.didispace.com/java-lombok-how-to-use/
(转)Spring Boot(二) & lombok的更多相关文章
- Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控
Spring Boot(二十):使用spring-boot-admin对spring-boot服务进行监控 Spring Boot Actuator提供了对单个Spring Boot的监控,信息包含: ...
- Spring Boot 二十个注解
Spring Boot 二十个注解 占据无力拥有的东西是一种悲哀. Cold on the outside passionate on the insede. 背景:Spring Boot 注解的强大 ...
- Lombok安装及Spring Boot集成Lombok
文章目录 Lombok有什么用 使用Lombok时需要注意的点 Lombok的安装 spring boot集成Lombok Lombok常用注解 @NonNull @Cleanup @Getter/@ ...
- spring boot(二):启动原理解析
我们开发任何一个Spring Boot项目,都会用到如下的启动类 @SpringBootApplication public class Application { public static voi ...
- Spring Boot(二):数据库操作
本文主要讲解如何通过spring boot来访问数据库,本文会演示三种方式来访问数据库,第一种是JdbcTemplate,第二种是JPA,第三种是Mybatis.之前已经提到过,本系列会以一个博客系统 ...
- spring boot(二十)使用spring-boot-admin对服务进行监控
上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...
- Spring Boot(二) 配置文件
文章导航-readme 一.配置Spring Boot热部署 技术的发展总是因为人们想偷懒的心理,如果我们不想每次修改了代码,都必须重启一下服务器,并重新运行代码.那么可以配置一下热部署.有了 ...
- spring boot(二):web综合开发
上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门.了解实践Spring boot特性:本篇文章接着上篇内容继续为大家介绍spring boot的其它 ...
- (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控
http://www.ityouknow.com/springboot/2018/02/11/spring-boot-admin.html 上一篇文章<Spring Boot(十九):使用 Sp ...
- (转)Spring Boot(二):Web 综合开发
http://www.ityouknow.com/springboot/2016/02/03/spring-boot-web.html 上篇文章介绍了 Spring Boot 初级教程:Spring ...
随机推荐
- 获取数据库连接对象Connection
2018-11-04 19:50:52 开始写 public Connection getConn() {//返回类型为Connection try { Class.forName("co ...
- 【Hbase学习之一】Hbase 简介
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-2.1.3 ...
- python 什么是位置参数?
位置参数是必选参数 ----不能不传, ----不能传一部分, ---必须按顺序传 ----必须传全部参数
- webpack4.0 实战记录
从零配置webpack4.0 搭建React工程. 基本环境:Node(v8.1.2)+ webpack(v4.16.2) 1.在项目目录 命令窗口 执行 npm init 初始化项目,执行完后项 ...
- 关于Weex你需要知道的一切
QCon第一天,GMTC全球移动技术大会联席主席.手淘技术老大庄卓然(花名南天)在Keynote上宣布跨平台开发框架Weex开始内测,并将于6月份开源,同时他们也放出官网:http://alibaba ...
- CSS 选择器权重计算规则
其实,CSS有自己的优先级计算公式,而不仅仅是行间>内部>外部样式:ID>class>元素. 一.样式类型 1.行间 <h1 style="font-size: ...
- javascript判断对象是否为domElement
我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否DOM对象,首先想到的无非就是它是否具有D ...
- vue-router基本使用
路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮 => home 内容, ...
- 自学Java第三个星期的总结
在这一周里我在网上学习了java的分支结构.Number&Matht类.Character类.string类.String Buffer和String Builder类以及数组和日期时间等有关 ...
- git push跳过用户名和密码认证配置教程
在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构. 新 ...