声明式事务5
WAR 包目录结构解剖
解压后:
webapps/library/
├─ META-INF/
│ └─ MANIFEST.MF // Maven 自动生成
├─ WEB-INF/
│ ├─ web.xml // 若用 xml 配置
│ ├─ classes/ // 当前项目编译 class
│ ├─ lib/ // 所有 *jar 依赖(spring-*.jar, h2.jar...)
│ └─ views/ // 若有 JSP
└─ static/ // 可放 html, css(可选)
关键点:
WEB-INF/classes
由 Maven 把target/classes
拷过来WEB-INF/lib
由 Maven 把依赖拷过来外部 Tomcat 只会加载
WEB-INF/{classes,lib}
中的类;不会用到系统 CLASSPATH 下的同名 jar → 避免冲突。
7. Tomcat 类加载层次
Bootstrap↑ JVM 原生 ($JAVA_HOME/jre/lib)
Extension↑ 扩展 ($JAVA_HOME/jre/lib/ext)
Common↑ $CATALINA_HOME/lib (servlet-api, tomcat-jdbc...)
WebApp↑ 每个 WAR 自己的 WEB-INF/classes + WEB-INF/lib