Java-Spring入门指南(一)Spring简介

发布于:2025-09-03 ⋅ 阅读:(15) ⋅ 点赞:(0)


前言

刚开始学Java开发时,你是不是也遇到过这些头疼的问题?

  • 写项目时要手动创建一大堆对象(比如UserServiceOrderDao),每个都要new,万一漏了或者创建错了,程序就崩了;
    在这里插入图片描述

  • 模块之间粘得太死,比如改了“用户模块”的代码,“订单模块”突然就报错了,因为它们直接互相调用,牵一发而动全身;

  • 每次做新项目,都要重复写日志、数据库连接、异常处理这些“通用工具”,明明别人已经写过了,却还要自己再造一遍轮子

Spring,就是为了解决这些问题而生的。它就像Java开发的“全能助手”,帮我们解决这些繁琐的事情,让我们能专注于写核心业务逻辑

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的Java-Spring入门指南知识文章专栏
欢迎来阅读指出不足
https://blog.csdn.net/2402_83322742/category_13040333.html?spm=1001.2014.3001.5482

在这里插入图片描述


一、Spring能干什么?

简单说,Spring是Java生态里最常用的对象管家+工具集合

1. 管理 Java 对象

  • 以前我们创建对象要自己写User user = new User(),如果 User 类的构造方法变了(比如加了个参数),所有写new User()的地方都得改

例如

在这里插入图片描述

  • 后来需求变化,User 类的构造方法需要增加 age 参数(并且移除了原来的构造方法):

在这里插入图片描述
在这里插入图片描述

有了 Spring,我们只需要告诉 Spring “我要一个 User 对象”,Spring 就会帮我们创建好,不用自己管 “怎么创建”“什么时候创建”—— 这就是 Spring 最核心的 “控制反转(IOC)” 思想

2. 提供实用开发工具

  • 开发中常用的功能(比如处理数据库、记录日志、控制事务、接收网页请求),Spring 都帮我们封装好了现成的工具,不用自己从零写。
  • 比如连接数据库,不用手动写 “加载驱动、创建连接、关闭连接” 这些重复代码,Spring 的相关模块直接搞定。

二、Spring的优缺点

Spring不是完美的,但优点远大于缺点,尤其适合企业级项目(比如公司用的管理系统、电商平台)。

1. 优点

  1. 不用写繁琐的代码
    比如连接数据库,以前要写“加载驱动→创建连接→处理异常”一大堆代码,现在Spring直接给你一个JdbcTemplate,几行代码就能搞定查询,省了很多重复工作。

    举个例子

手动写数据库查询(繁琐):

// 手动加载驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 手动创建连接
Connection conn = DriverManager.getConnection("url", "user", "password");
// 手动创建Statement
Statement stmt = conn.createStatement();
// 手动执行查询
ResultSet rs = stmt.executeQuery("select * from user");

用Spring的JdbcTemplate(简洁):

@Autowired // Spring自动注入JdbcTemplate
private JdbcTemplate jdbcTemplate;

// 直接查数据,不用管连接、驱动
List<User> userList = jdbcTemplate.query("select * from user", new BeanPropertyRowMapper<>(User.class));
  1. 模块之间解耦

    以前“用户模块”和“订单模块”是直接绑在一起的,比如OrderService里直接new UserService(),一旦UserService改了,OrderService也要跟着改。
    现在通过Spring,OrderService不用自己new UserService,而是让Spring把UserService“送过来”(依赖注入),就算UserService改了,OrderService也不用动——就像两个积木不是用胶水粘死,而是用弹簧连接,动一个不影响另一个。

  2. 兼容性强
    我们开发时可能会用其他工具:比如用MyBatis操作数据库用Redis存缓存……Spring就是一个万能接口,能和这些工具无缝配合,不用你手动写“对接代码”。

    • 比如MyBatis和Spring整合后,直接用@Autowired就能获取MyBatis的Mapper接口,特别方便。
  3. 自带“安全防护”和“日志本”
    开发项目时,有些功能是必须的但很麻烦:比如“事务管理”(转账时如果中途出错,要把钱退回去,不能只扣不转)、“日志记录”(谁登录了、谁付了钱,要记下来)。
    Spring直接帮你做好了:用@Transactional注解标注方法,Spring就会自动处理事务;用AOP(后面会讲)配置一下,就能自动记录所有操作日志,不用你在每个方法里写日志代码。

2. 缺点

  1. 入门容易,深入难
    基础用法很简单(比如用@Component让Spring管理对象),但如果想搞懂“Spring怎么记住所有对象的?”“AOP是怎么自动加日志的?”这些底层原理,就需要花点时间

三、Spring的核心模块

我们先了解Spring的核心模块是什么,后面再逐步掌握

模块名称 核心作用
Core(核心容器) 管理所有Java对象(IOC控制反转)
AOP(面向切面编程) 不改代码,给程序加通用功能(日志、事务
DAO(数据访问) 简化数据库操作,避免重复写连接代码
ORM(对象关系映射) 让Java对象和数据库表“对应”起来
Web模块 支持Web开发,处理浏览器请求
Spring MVC 把Web开发分成“三部分”,分工明确

1. Core(核心容器):Spring的“对象仓库”

这是Spring最基础、最核心的模块,负责“保管”和“分发”Java对象——专业叫法是IOC(控制反转),简单说就是“对象的创建权从你手里交给了Spring”。

以前你要自己创建对象:

// 自己new对象,创建权在你手里
UserService userService = new UserService();
OrderDao orderDao = new OrderDao();

现在Spring帮你创建和保管:


@Component
public class UserService {
    // 不用自己new,Spring会自动把OrderDao“送过来”
    @Autowired
    private OrderDao orderDao;
}

// 2. 从Spring的“仓库”里拿对象
public class Test {
    public static void main(String[] args) {
        
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = context.getBean(UserService.class);
    }
}

2. AOP(面向切面编程)

AOP的作用是:在不修改原有代码的情况下,给多个方法“批量加功能”——就像你有10本笔记本,想在每本封面贴一个“姓名贴”,不用一本本手动贴,用机器批量贴(AOP)就行。

3. DAO(数据访问):Spring的“数据库小助手”

操作数据库是Java开发的高频需求,但手动写代码很麻烦:要加载驱动、创建连接、处理异常、关闭连接……稍有不慎就会出错(比如忘记关连接,导致数据库卡死)。

Spring的DAO模块(比如JdbcTemplate)把这些“繁琐工作”全封装了,你只需要告诉它“查什么数据”,不用管“怎么连数据库”。

4. ORM(对象关系映射)

你有没有发现:Java里的User类(有id、name、age属性)和数据库里的user表(有id、name、age字段)长得几乎一样?但操作它们却要两套逻辑:操作User对象用Java代码,操作user表用SQL——很麻烦。

Spring的ORM模块就是帮你“打通”这两套逻辑:让User对象和user表“一一对应”,你操作User对象,就相当于操作user表数据。

5. Web模块

如果要开发网页后端(比如用户登录、商品展示),就需要处理浏览器发来的HTTP请求(比如用户输入账号密码后,点击登录,浏览器会发一个请求给后端)。

Spring的Web模块就是帮你“接好线”:整合Java的Web技术(比如Servlet),让你不用手动写“接收请求→解析参数→返回响应”的代码,直接用Spring的注解就能处理请求。

6. Spring MVC

当Web项目变复杂时(比如有登录、注册、购物、支付多个功能),如果所有代码都写在一个Controller里,会很乱,不好维护。

Spring MVC就是帮你“分工”的:把Web开发分成Model(模型)、View(视图)、Controller(控制器) 三部分,各司其职

  • Controller(控制器)
    负责接收浏览器的请求(比如用户点了“登录”),然后告诉后厨(Model)要做什么,最后把做好的“菜”(数据)交给前厅(View)。
    比如上面的LoginController就是控制器,接收登录请求,调用业务逻辑,返回页面。

  • Model(模型)
    负责处理核心业务逻辑(比如查数据库、判断账号密码、计算订单金额),然后把结果(数据)交给服务员(Controller)。
    比如UserServiceUserMapper就是模型,负责查用户数据、判断登录是否成功。

  • View(视图)
    负责把Model处理好的数据展示给用户(比如网页、APP界面)。
    比如登录成功后的success.html页面,就是视图,展示“登录成功,欢迎您!”的文字。


网站公告

今日签到

点亮在社区的每一天
去签到