news 2026/5/11 20:13:35

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/5/7 13:12:01

初次上手如何快速开发基于大模型+function call的agent应用?

初次上手如何快速开发基于大模型function call的agent应用&#xff1f; 最近主导了一款ai agent系统的开发&#xff0c;在定架构的时候选择了MCP协议&#xff0c;在期间遇到不少坑点&#xff0c;记录顺分享一下相关内容。此篇是系列的第四篇&#xff1a;读完预计能对怎么快速搭…

作者头像 李华
网站建设 2026/4/17 18:18:39

GISer必看系列⑦|地信测绘就业单位类型

专业GIS公司专业GIS公司跟GIS从业者比较对口的&#xff0c;既有GIS平台研发单位&#xff0c;如&#xff1a;中地数码、易智瑞、超图&#xff1b;还有专门做项目的企业&#xff0c;像数据公司、系统平台、数字城市公司比比皆是。这些单位进去的门槛相对低些&#xff0c;薪资不高…

作者头像 李华
网站建设 2026/4/30 11:31:19

域名过期多久会被删除?完整时间线说明

很多人发现心仪的域名显示“已过期”&#xff0c;却不知道什么时候才能重新注册。实际上&#xff0c;域名从过期到真正删除&#xff0c;有一套相对固定的流程&#xff0c;不同阶段的操作空间也不一样。第一阶段&#xff1a;到期日&#xff08;Expiration Date&#xff09;域名到…

作者头像 李华
网站建设 2026/5/1 11:15:00

【短视频效率提升300%】:Open-AutoGLM自动化生成实战全解析

第一章&#xff1a;Open-AutoGLM与短视频创作的融合趋势随着人工智能技术的快速发展&#xff0c;大语言模型在内容生成领域的应用不断深化。Open-AutoGLM作为一种具备自动化推理与多模态理解能力的开源语言模型&#xff0c;正逐步渗透至短视频创作流程中&#xff0c;推动内容生…

作者头像 李华