1.开发流程
A.引入适合的场景依赖--starter
可以参照SpringBoot官方文档:https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot.html#using-boot-starter
B.查看已有的自动配置、添加缺失的
前面我们说过,SpringBoot的自动配置依赖于xxAutoConfiguration.class,以spring-boot-starter-web为例,导入该依赖后,自动配置类里web相关的自动配置类一般就会启用,可以通过源码分析哪些启用哪些不启用。
SpringBoot还可以开启debug模式,开启自动配置的报告,就会打印出生效的类(包括原因)、没生效的类(包括原因)等等:
C.通过配置文件修改参数
例如数据库连接信息:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/study_mybatis?serverTimezone=GMT%2B8
username: ****
password: ****
可以参考官方文档的可修改属性:https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html#common-application-properties。
当然也可以通过阅读源码内部自动配置类绑定了哪些prefix来确定属性名称。
D.自定义组件或替换组件
还记得我们之前分析的SpringBoot的charasetEncodingFilter吗,在容器内部有字符集编码过滤器的时候,是不会生效的;SpringBoot对于同类型的组件,以用户的优先。当然我们如果觉得SpringBoot的组件不够齐全,还可以自定义并加入容器。
SpringBoot还提供了xxCustomizer自定义器,让我们自定义个性化功能。
2.lombok简化JavaBean
lombok安装后,在编写JavaBean的时候,我们使用几个注解就可以替代 无参构造、全参构造、Getter、Setter、ToString方法、日志:
A.引入依赖(SpringBoot管理了版本)
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
B.在ideal中装好相应插件
C.使用lombok简化JavaBean
Student.java
@NoArgsConstructor //无参
@AllArgsConstructor //全参
@ToString // toString方法
@Data // 所有属性的 getter and setter
@Slf4j //日志
public class Student {
private String name;
private Integer age;
private Pet pet;
private int[] Arr;
public Student(String name, Integer age) { // lombok 不支持部分参数构造器
this.name = name;
this.age = age;
}
public void printLog(){
log.info("----这是日志打印输出----");
}
}
MySpringConfiguration.java
@Configuration(proxyBeanMethods = true)
public class MySpringConfiguration {
@Bean
public Pet pet(){
return new Pet("小黑");
}
@Bean
public Student Stu(){
return new Student("zzt",18,pet(),new int[]{1,2,3,4});
}
}
DemoApplication.java
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(DemoApplication.class, args);
Student student = ctx.getBean(Student.class);
System.out.println(student);
student.printLog();
}
}
执行输出:
当然,lombok还是有缺陷的,尽管用它开发简单,可也正因为他是写死的,想要个性化的定制还是需要自动手动改;比如只含有部分参数的构造器、自定义的toString(我们可能不是对复杂对象的直接打印)等等。
3.开发者工具dev-tools
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
引入dev-tools后,ctrl+F9就可以帮我们自动检查程序是否有改变,如果有就重新编译并重启,它不是真正意义上的热部署热更新。
4.热部署插件JRebel-解决项目修改时需要重启的问题
方式一:搜索自动安装(会比较慢,有梯子可尝试)
方式二:下载压缩包,解压在ideal的plugins目录下
需要激活,可参考:http://www.cicoding.cn/other/jrebel-activation/(可能还是需要梯子)
现在我们使用Rebel启动项目:
若代码发生了改变,我们只需要重新build一下即可。
[注]:如果觉得XRebel(与JRebel绑定下载的)激活弹窗很麻烦,也可以选择激活它~