1. 通过DEBUG查看自动配置的组件
在resources/application.properties中添加如下,开启DEBUG功能:
debug=true
然后启动springboot应用,就可以看到DEBUG的日志。Positive表示生效,Negative表示不生效。如下所示:
============================
CONDITIONS EVALUATION REPORT
============================
Positive matches:
-----------------
AopAutoConfiguration matched:
- @ConditionalOnProperty (spring.aop.auto=true) matched (OnPropertyCondition)
AopAutoConfiguration.ClassProxyingConfiguration matched:
- @ConditionalOnMissingClass did not find unwanted class 'org.aspectj.weaver.Advice' (OnClassCondition)
- @ConditionalOnProperty (spring.aop.proxy-target-class=true) matched (OnPropertyCondition)
......省略部分......
Negative matches:
-----------------
ActiveMQAutoConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'javax.jms.ConnectionFactory' (OnClassCondition)
AopAutoConfiguration.AspectJAutoProxyingConfiguration:
Did not match:
- @ConditionalOnClass did not find required class 'org.aspectj.weaver.Advice' (OnClassCondition)
......省略部分......
Exclusions:
-----------
None
Unconditional classes:
----------------------
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration
org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration
org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration
org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration
2. springboot启动图标修改
下载百度的logo到resouces目录下,然后在resources/application.properties添加如下内容:
spring.banner.image.location=classpath:baidu.png
最后启动springboot应用。打印的日志如下,小图标已经改成百度了
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ #@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@8 @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@ &@@@@@@@@@@@@ :@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@: @@@@* @@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@ @@ @@ @@@ &@ @@
@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@@@@@@ @@@@@@@ @ @@@@ @
@@@@@ @: @ @@@@@ @@ @@@@@o @@ @ @@@@ @
o@@@@@@@@8 @ @@@& @@#&@@ @@ @@ @@@o @@@@@@@ @@ @ *@
@@@@@ @ @ @@@ @@ @@ @@ @@ @@o @@ . 8
&&&& @ @@@@8 @ @@@ @@@@@ o@@@@@ @@@o @@@@@@@ @@ @@ *@@
@@@@ @ @@@@. @@@@o @@o @ *@@
2022-11-03 14:47:18.614 INFO 10600 --- [ main] com.hh.springbootTest.MyApplication : Starting MyApplication using Java 11.0.15
......省略部分......
也可以使用配置spring.main.banner-mode=off
,对banner进行关闭
在线banner生成工具戳我
3. Lombok
Lombok是一个简化Java Bean开发的小工具。自动在编译时生成getter、setter等方法
还有Slf4j的日志注解
在pom.xml添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
然后IDEA安装lombok插件(新版IDEA已集成)
lombok针对Java Bean的注解,常用的如下:
- @NoArgsConstructor:无参构造器
- @AllArgsConstructor:全参构造器
- @Getter:getter方法
- @Setter:setter方法
- @Data:等同于@NoArgsConstructor + @Getter + @Setter + @EqualsAndHashCode + @ToString
- @ToString:toString方法
- @EqualsAndHashCode:hashCode方法
如果构造参数即不是无参构造,也不是全参构造,可以按常规方法定义构造器
package com.hh.springbootTest.myBean;
import lombok.*;
// 如果构造参数即不是无参构造,也不是全参构造,可以按常规方法定义构造器
@NoArgsConstructor // 无参构造器
@AllArgsConstructor // 全参构造器
@Data // getter、setter方法
@ToString // toString方法
@EqualsAndHashCode // hashCode方法
public class User {
private String name;
}
lombok针对日志的注解有@Slf4j
可以看到可以直接使用全参构造器,创建一个User类对象
package com.hh.springbootTest.myController;
import com.hh.springbootTest.myBean.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j // 日志
public class HelloController {
@RequestMapping("user")
public User userName1(@RequestParam("name") String name) {
log.info("======user的请求进来了======");
// 可以直接使用全参构造器
return new User(name);
}
}
访问http://localhost:8080/user?name=user1,效果如下:
同时也会打印如下的日志
......省略部分......
2022-11-03 15:12:18.809 INFO 31128 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2022-11-03 15:12:18.809 INFO 31128 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2022-11-03 15:12:18.810 INFO 31128 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms
2022-11-03 15:12:18.842 INFO 31128 --- [nio-8080-exec-1] c.h.s.myController.HelloController : ======user的请求进来了======
4. devtools
在pom.xml添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
然后修改代码,再在IDEA按CTRL + F9,进行项目的重新编译。devtools就会自动重新进行加载。修改就会自动生效
不需要按CTRL + F9的,有付费的Jrebel插件
5. 通过IDEA的Spring Initializr快速创建新项目
如下所示:
创建完项目,resources目录下的static是放CSS、JS静态资源的,templates是放html页面的