若想在IDEA中来看源码,需要在pom文件中引入如下配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-loader</artifactId>
<scope>provided</scope>
</dependency>
找到org.springframework.boot.loader.JarLauncher类
// JarLauncher.java
public class JarLauncher extends ExecutableArchiveLauncher {
// BOOT-INF/classes/
static final String BOOT_INF_CLASSES = "BOOT-INF/classes/";
// BOOT-INF/lib/
static final String BOOT_INF_LIB = "BOOT-INF/lib/";
public JarLauncher() {
}
protected JarLauncher(Archive archive) {
super(archive);
}
@Override
protected boolean isNestedArchive(Archive.Entry entry) {
if (entry.isDirectory()) {
return entry.getName().equals(BOOT_INF_CLASSES);
}
return entry.getName().startsWith(BOOT_INF_LIB);
}
// main方法
public static void main(String[] args) throws Exception {
new JarLauncher().launch(args);
}
}
debug技巧
通过debug来进一步加深一下理解呢?通常我们在IDEA里启动时是直接运行main方法,因为依赖的Jar都让IDEA放到classpath里了,所以spring boot直接启动就完事了,并不会通过上面的方式来启动。不过我们可以通过配置IDEA的 run/debug configurations 配置 JAR Application 来实现通过Jar方式启动。
当我们做了以上设置后,就可以来方便的在IDEA里来dubug源码了。