Java 核心资源

全面涵盖 Java SE 基础、Spring Boot 框架、微服务架构以及高并发实战处理的优质学习资源。无论你是初学 Java 面向对象,还是进阶 JVM 调优、Spring Cloud 微服务部署,都能在这里找到详尽的指南。

Java 学习路线与开发工具速查

Java 核心进阶路线图

Java 核心进阶

集合框架、JUC 并发编程、JVM 调优

数据库与持久层

MySQL 调优、Redis 缓存、MyBatis Plus

核心业务框架

Spring Boot、Spring Security 鉴权

高并发中间件

RabbitMQ / Kafka、ElasticSearch、分布式锁

微服务与云原生

Spring Cloud Alibaba、Docker 集群与 K8s

2. SSM 框架 (Spring + SpringMVC + MyBatis) 配置要点

xml
<!-- 1. SpringMVC 核心入口配置 (web.xml) -->
<!-- 拦截所有请求,交由 DispatcherServlet 分发 -->
<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
  </init-param>
</servlet>

<!-- 2. MyBatis 整合 Spring 核心注入要点 (applicationContext.xml) -->
<!-- 1. 配置 DataSource 数据源连接池 (如 Druid 或 HikariCP) -->
<!-- 2. 配置 SqlSessionFactoryBean,将数据源注入并指定 mapper.xml 路径 -->
<!-- 3. 配置 MapperScannerConfigurer,扫描 DAO/Mapper 接口自动生成代理对象 -->

3. Spring Boot 常用配置与知识点速查

yaml
# 1. 多环境配置 (application.yml)
spring:
  profiles:
    active: dev                   # 激活 application-dev.yml 配置文件
  datasource:
    url: jdbc:mysql://localhost:3306/db_name?useUnicode=true&characterEncoding=utf-8
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver

# 2. Spring Boot 核心注解说明
# @SpringBootApplication          启动类注解,包含了 @Configuration 等
# @RestController                 相当于 @Controller + @ResponseBody
# @RequestMapping("/api")         用于类或方法上,统一路由前缀映射
# @Autowired                      自动按类型注入依赖 (Spring提供)
# @Resource                       自动按名称注入依赖 (JDK提供)

4. Kotlin 结合 Spring Boot 开发要点

kotlin
// 1. 解决 Kotlin 类默认为 Final 导致 AOP 代理失效的问题
// 在 pom.xml 的 kotlin-maven-plugin 中必须引入 spring 插件
<compilerPlugins>
  <plugin>spring</plugin>
  <plugin>jpa</plugin>  <!-- 若使用 Spring Data JPA,还需 jpa 插件以生成无参构造 -->
</compilerPlugins>

// 2. JPA 实体类声明示例 (利用 Kotlin Data Class 特性)
@Entity
@Table(name = "users")
data class User(
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    val id: Long? = null,
    var username: String,
    var email: String
)