JavaEE框架程序设计核心知识点入门:从Maven到Spring Boot实战指南
摘要:本文系统梳理JavaEE企业级开发中必备的主流框架与工具链,涵盖Maven、MyBatis、Spring(IoC/AOP/事务)、Spring MVC、Spring Boot等核心技术,帮助初学者快速构建完整的SSM/SSB开发体系,掌握现代Java Web应用的分层架构与工程实践。
第1章 Maven项目构建工具
Maven 是 Java 项目管理和构建自动化的核心工具,其核心价值在于标准化项目结构与依赖管理。
核心要点:
- 基础概念:Maven 基于 POM(Project Object Model)模型,通过
pom.xml描述项目信息。 - 标准目录结构:
src/ ├── main/ │ ├── java/ # Java源码 │ └── resources/ # 配置文件(如application.properties) └── test/ ├── java/ # 测试代码 └── resources/ # 测试配置 - 生命周期:三大生命周期——
clean(清理)、default(构建)、site(生成文档)。- 常用命令:
mvn compile、mvn test、mvn package、mvn install
- 常用命令:
- 坐标(GAV):唯一标识一个构件
<groupId>com.example</groupId><artifactId>my-app</artifactId><version>1.0.0</version> - 依赖管理:
<dependencies>:直接依赖<dependencyManagement>:统一版本控制(常用于父POM)- 传递性依赖:自动引入间接依赖,但可能引发依赖冲突
- 冲突解决策略:
- 排除依赖:
<exclusions> - 使用
mvn dependency:tree分析依赖树
- 排除依赖:
✅最佳实践:优先使用
<dependencyManagement>管理版本,避免“Jar Hell”。
第2章 MyBatis框架基础
MyBatis 是一款半自动 ORM 框架,强调 SQL 与 Java 代码分离,灵活性高。
核心组件:
SqlSessionFactory:创建SqlSession的工厂(单例)SqlSession:执行 SQL、获取 Mapper(非线程安全)Mapper:接口 + XML/注解映射
入门配置:
<!-- mybatis-config.xml --><configuration><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="com.mysql.cj.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/test"/><propertyname="username"value="root"/><propertyname="password"value="123456"/></dataSource></environment></environments><mappers><mapperresource="mapper/UserMapper.xml"/></mappers></configuration>日志集成:
- 添加 Log4j 依赖,MyBatis 自动识别日志实现
- 别名配置:
<typeAliases><package name="com.example.entity"/></typeAliases>
第3章 MyBatis映射文件与注解
动态SQL(强大特性!)
<selectid="findUsers"resultType="User">SELECT * FROM user<where><iftest="name != null">AND name = #{name}</if><iftest="age > 0">AND age = #{age}</if></where></select>常用标签:<if>、<choose>、<where>、<set>、<foreach>
关联查询
- 一对一:
<association property="profile" javaType="Profile"> - 一对多:
<collection property="orders" ofType="Order"> - 嵌套查询 vs 嵌套结果:前者 N+1 查询,后者单次 JOIN(推荐)
注解开发(适合简单SQL)
@Select("SELECT * FROM user WHERE id = #{id}")@Results({@Result(property="userName",column="user_name"),@Result(property="profile",column="id",one=@One(select="com.example.mapper.ProfileMapper.selectByUserId"))})UserfindById(Longid);缓存机制
- 一级缓存:SqlSession 级别(默认开启)
- 二级缓存:Mapper 级别(需手动开启
<cache/>,实体类实现Serializable)
第4章 Spring IoC容器
Spring 的核心是IoC(控制反转),将对象创建与依赖关系交由容器管理。
Bean装配方式
| 方式 | 示例 |
|---|---|
| XML | <bean id="userService" class="com.example.service.UserServiceImpl"/> |
| 注解 | @Service,@Component,@Repository,@Controller |
| Java Config | @Configuration+@Bean |
依赖注入(DI)
@Autowired:按类型注入(Spring 特有)@Resource:按名称注入(JSR-250 标准)
Bean作用域
singleton(默认):整个容器共享一个实例prototype:每次请求新建实例- Web作用域:
request、session(需 Web 环境)
生命周期回调
publicclassUserServiceimplementsInitializingBean,DisposableBean{publicvoidafterPropertiesSet(){/* 初始化 */}publicvoiddestroy(){/* 销毁 */}}// 或使用 @PostConstruct / @PreDestroy第5章 Spring AOP与声明式事务
AOP核心概念
- 切面(Aspect):横切关注点(如日志、事务)
- 通知(Advice):
@Before、@After、@Around等 - 切入点(Pointcut):匹配方法的表达式,如
execution(* com.example.service.*.*(..))
代理机制
- JDK 动态代理:目标类必须实现接口
- CGLIB 代理:通过继承生成子类(无接口也可)
声明式事务(重点!)
@Service@Transactional(rollbackFor=Exception.class)publicclassOrderService{// 方法内抛异常自动回滚}- 传播行为:
REQUIRED(默认)、REQUIRES_NEW等 - 隔离级别:
READ_COMMITTED、REPEATABLE_READ等 - 配置事务管理器:
<beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><propertyname="dataSource"ref="dataSource"/></bean>
Spring + MyBatis整合
- 使用
SqlSessionFactoryBean创建SqlSessionFactory @MapperScan("com.example.mapper")自动注册 Mapper 接口
第6章 Spring MVC基础
MVC 架构分离关注点:Model(数据)、View(视图)、Controller(控制)
请求处理流程
浏览器 → DispatcherServlet → HandlerMapping → Controller → ViewResolver → JSP/Thymeleaf → 响应控制器开发
@Controller@RequestMapping("/user")publicclassUserController{@RequestMapping(value="/list",method=RequestMethod.GET)publicStringlist(Modelmodel){model.addAttribute("users",userService.findAll());return"user/list";// 逻辑视图名}}视图跳转
- 转发:
return "forward:/other";(URL不变) - 重定向:
return "redirect:/success";(URL改变,避免重复提交)
第7章 Spring MVC数据绑定
自动绑定
- 支持基本类型、String、Date(配合
@DateTimeFormat) - 对象绑定:
public String save(User user)→ 表单字段user.name自动映射
JSON交互(前后端分离关键)
@RestController// = @Controller + @ResponseBodypublicclassApiUserController{@PostMapping("/save")publicResultsave(@RequestBodyUseruser){// 接收JSON并转为User对象returnResult.ok();}}需引入
jackson-databind或gson
数据校验(JSR-303)
publicStringupdate(@Valid@RequestBodyUseruser,BindingResultbr){if(br.hasErrors()){// 处理校验错误}}常用注解:@NotNull、@Min(18)、@Email、@Pattern
第8章 Spring MVC进阶
拦截器(Interceptor)
publicclassLoginInterceptorimplementsHandlerInterceptor{publicbooleanpreHandle(HttpServletRequestreq,HttpServletResponseres,Objecthandler){// 登录校验returntrue;// false 中断请求}}// 注册@ConfigurationpublicclassWebConfigimplementsWebMvcConfigurer{publicvoidaddInterceptors(InterceptorRegistryregistry){registry.addInterceptor(newLoginInterceptor()).addPathPatterns("/admin/**");}}全局异常处理
@ControllerAdvicepublicclassGlobalExceptionHandler{@ExceptionHandler(Exception.class)publicResponseEntity<Result>handle(Exceptione){returnResponseEntity.status(500).body(Result.error(e.getMessage()));}}文件上传/下载
- 上传:
MultipartFile file - 下载:
ResponseEntity<Resource>+Content-Disposition
SSM整合架构
Controller(Spring MVC) ↓ Service(Spring + @Transactional) ↓ Mapper(MyBatis)配置文件分工:
web.xml:DispatcherServlet、ContextLoaderListenerspring-context.xml:Service、DataSource、事务spring-mvc.xml:Controller、视图解析器mybatis-config.xml:别名、插件等
第9章 Spring Boot基础
Spring Boot =约定优于配置+自动装配
核心特性
- 起步依赖(Starter):
spring-boot-starter-web - 内嵌 Tomcat/Jetty
- 无 XML 配置
主启动类
@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[]args){SpringApplication.run(Application.class,args);}}配置方式
application.properties/application.yml- 多环境:
application-dev.yml、application-prod.yml - 绑定配置:
@ConfigurationProperties(prefix="app.user")@ComponentpublicclassUserConfig{privateStringname;// getter/setter}
第10章 Spring Boot进阶
整合 MyBatis
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency>- 自动配置
SqlSessionFactory、SqlSessionTemplate @MapperScan扫描接口- 开启 SQL 日志:
logging.level.com.example.mapper=debug
Thymeleaf模板
<!-- user/list.html --><divth:each="user : ${users}"><spanth:text="${user.name}"></span></div>Spring Security(安全控制)
@Configuration@EnableWebSecuritypublicclassSecurityConfig{@BeanpublicUserDetailsServiceuserDetailsService(){// InMemory / JDBC 实现}@BeanpublicSecurityFilterChainfilterChain(HttpSecurityhttp)throwsException{http.authorizeHttpRequests(auth->auth.requestMatchers("/admin/**").hasRole("ADMIN").anyRequest().authenticated()).formLogin(withDefaults());returnhttp.build();}}第11章 Spring Boot项目实践
工程结构建议
project/ ├── pom.xml ├── common/ # 工具类、异常、枚举 ├── entity/ # 实体类 ├── mapper/ # MyBatis Mapper ├── service/ # 业务逻辑 ├── controller/ # REST API └── config/ # 配置类关键实践
- 统一异常处理:
@ControllerAdvice - RESTful API 设计:资源化 URL(
/users/{id})、HTTP 方法语义化 - 日志规范:使用 SLF4J + Logback,记录关键操作
- 部署:
mvn clean package java -jar target/app.jar --spring.profiles.active=prod
结语
从 Maven 到 Spring Boot,JavaEE 开发已进入高效、简洁、自动化的新时代。掌握上述核心知识点,不仅能应对企业级项目开发,也为深入微服务(Spring Cloud)打下坚实基础。
📌学习建议:动手搭建一个用户管理系统(CRUD + 登录 + 权限),贯穿所有技术栈!