news 2026/6/18 16:44:07

JavaEE框架程序设计核心知识点入门:从Maven到Spring Boot实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JavaEE框架程序设计核心知识点入门:从Maven到Spring Boot实战指南

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 compilemvn testmvn packagemvn 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作用域:requestsession(需 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_COMMITTEDREPEATABLE_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-databindgson

数据校验(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、ContextLoaderListener
  • spring-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.ymlapplication-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>
  • 自动配置SqlSessionFactorySqlSessionTemplate
  • @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 + 登录 + 权限),贯穿所有技术栈!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 21:26:37

本地大模型部署难题,Ollama + Open-AutoGLM组合真的能一键解决吗?

第一章&#xff1a;本地大模型部署难题&#xff0c;Ollama Open-AutoGLM组合真的能一键解决吗&#xff1f;在本地部署大语言模型&#xff08;LLM&#xff09;长期面临环境配置复杂、依赖冲突频繁、显存管理困难等痛点。传统方式需手动编译源码、配置Python虚拟环境、安装CUDA驱…

作者头像 李华
网站建设 2026/6/15 12:11:23

学长亲荐9个AI论文工具,专科生毕业论文轻松搞定!

学长亲荐9个AI论文工具&#xff0c;专科生毕业论文轻松搞定&#xff01; AI工具助力论文写作&#xff0c;专科生也能轻松应对 对于许多专科生来说&#xff0c;撰写毕业论文无疑是一项既紧张又复杂的任务。面对繁重的写作压力和时间限制&#xff0c;如何高效地完成一篇结构严谨、…

作者头像 李华
网站建设 2026/6/15 16:34:33

2025大模型一体机全攻略:从技术选型到行业落地实战指南

《大模型一体机应用研究报告》全面解析了这一"硬件软件模型应用"的全栈集成系统&#xff0c;涵盖定义特点、四大行业实践案例、六步选型法及未来趋势。报告显示2025年市场规模将突破千亿&#xff0c;2027年有望达5000亿元&#xff0c;为政企提供智能化转型的实用指南…

作者头像 李华
网站建设 2026/6/11 4:35:39

Open-AutoGLM本地部署性能优化秘籍(提升3倍响应速度的4种方法)

第一章&#xff1a;Open-AutoGLM本地部署概述Open-AutoGLM 是一个开源的自动化代码生成与语言建模框架&#xff0c;支持基于自然语言描述生成高质量代码片段。本地部署该系统可确保数据隐私、提升响应速度&#xff0c;并便于与企业内部开发流程集成。部署过程涉及环境准备、依赖…

作者头像 李华
网站建设 2026/6/17 14:48:15

大模型秋招冲刺指南:大模型应用开发岗位最强面试经验分享!~

今天来给大家分享一份热乎的大模型应用开发层次的面经&#xff0c;希望能够帮到近期冲击大模型秋招的同学&#xff0c;时间跨度不大&#xff0c;都是近半年面试的&#xff0c;面试公司也涉及了一众大厂&#xff0c;非常具有参考意义~ 配套面经整理打包成册&#xff0c;要的可以…

作者头像 李华
网站建设 2026/6/7 9:31:16

国产大模型部署门槛高吗?,深度拆解Open-AutoGLM对算力的真实依赖

第一章&#xff1a;国产大模型部署门槛高吗&#xff1f;——从Open-AutoGLM说起近年来&#xff0c;随着国产大语言模型的快速发展&#xff0c;如何高效部署这些模型成为企业和开发者关注的核心问题。以开源项目 Open-AutoGLM 为例&#xff0c;它基于 AutoGLM 技术架构&#xff…

作者头像 李华