黑马SSM学习日记|day01

受到一位名叫程序员牛肉的前辈的影响,我开始写学习博客,主要目的是为了帮助自己巩固所学知识,与诸君共勉!

先简单介绍一下本人情况。本人大三,目前学习了javase,javaweb,mysql,黑马点评苍穹外卖jvm,目前未找到实习,自己太拉了。但是在仅有的几次面试中,我发现了自己在看视频跟着学的时候,虽然能看懂,明白其中的弯弯绕绕,但是真正到自己上手做的时候,总是难以下手。总结来说,就是自己以为自己明白了,但是其实只是瞬时记忆,所以我想通过博客记录的方式来总结每天所学知识。

SSM课程简介

这套课程主要是为了讲清楚spring、springmvc、springboot、maven、mybatisplus这些框架工具。

Spring 

​​​​Spring通常指代整个庞大的Spring生态系统(全家桶),常见的包括:SpringBoot SpringCloud SpringMVC等等,而构成这些现成的项目的一个基石,就是SpringFrameWork。它是核心框架,核心是提供一个容器,实现控制反转依赖注入来管理对象。不仅如此,它还具有AOP,数据库,事务管理等功能。之后的spring进化路线就是在这个Spring FrameWork的分支上不断演化升级,经过多次迭代,spring已经占据了极大的市场,十分牛逼。

控制反转(IOC)

在未系统学习spring之前,我通过其他课程了解了IOC的意义,但是真正地学了之后,还是发现自己之前就属于一知半解的迷糊状态。

控制反转,就是把创建对象这个new操作交由spring的容器来实现,它可以帮你执行创建对象这个操作。具体就是,通过反射获取类,然后通过类获取构造器,然后构造实例。

Class<?> clazz = Class.forName("com.example.UserService");
Constructor<?> constructor = clazz.getDeclaredConstructor();
constructor.setAccessible(true);
Object instance = constructor.newInstance();  

那为什么要用容器来帮我们创建对象呢?咱自己创建不香吗?这有一个问题,如果是自己手动new一个对象,那么一旦想要更改逻辑,那么就必须改代码,比如

public class OrderService{

    private PaymentService payment = new AlipayService();
    //假设想要换微信支付,那么必须修改代码
    .....
}

这就导致了代码高耦合的问题,牵一发而动全身。

依赖注入(DI)

我理解的依赖注入,就是如果放入IOC容器的bean对象存在互相调用的关系的话,IOC容器会帮程序员处理好这个调用关系。

IOC容器通过扫描XML文件来读取哪个类需要哪个类的实例(在xml中添加bean的属性,ref为依赖的bean对象的名称,这是手动注入)。在spring中,bean默认为单例,但是可以手动修改

依赖注入的方式

  1. 依赖注入的方式分为setter注入构造器注入,但是注入的类型分为引用类型(ref属性注入)和简单类型(value属性注入)
  2. 依赖自动装配:
  • 使用autowired属性设置自动装配的类型
  • 推荐使用byType
  • 如果使用byName,需要和程序输入的对象名耦合,不推荐
  • 自动装配的优先级低于setter注入和构造器注入

bean的实例化

bean的实例化有三种:构造方法、静态工厂、实例工厂

  • 构造方法:在xml文件中配置好bean对象就行了,IOC容器会调用默认构造器来创建对象
  • 静态工厂:创建一个工厂类,在里面返回需要的对象类型,并且要在xml文件中声明factory-method(这里就出现耦合了)
  • 实例工厂中的FactoryBean:实现FactoryBean<T>接口,并实现getObject、getObjectType方法,这样就可以降低耦合度,因为这些方法名都已经被固定了

bean的生命周期控制

  • 初始化容器
  • 创建对象,分配内存
  • 执行构造方法
  • 执行属性注入
  • 执行bean初始化方法
  • 使用bean
  • 执行业务操作
  • 关闭/销毁容器
  • 执行销毁方法

这里涉及到bean的initbean和destroybean的方法,以及开启钩子,就不细说了。

创建容器

两种获取容器的方法:类路径加载 文件路径加载

获取bean的方法:1.通过bean的名称来获取 2.通过bean的名称并指定类型来获取 3.通过指定类型来获取

今天就学了20集。虽然这些代码都需要手动注入显得很麻烦,以后都被注解替代了,但是我觉得了解这种原始的方法也是非常有意思的,就像弹幕里说的,SpringBoot开始冒芽了hhh,给人一种熟悉又陌生的感觉。顺着spring的迭代路线来学习,让我真正知道了这些注解背后的一些东西,confidence upup

第一次发文章,文笔和思路逻辑都还需要打磨,但是我争取把我想说的东西捋清楚再说出来,希望给大家营造正常的观感。我觉得一开始不能太深入理论,这样容易陷入一种无底洞(发现这也是新东西,那儿也没学过),最好浅尝辄止,必须要了解,但是不必太深入,只当为以后铺垫一些。

希望大家能给我这种学习模式提提意见

#找实习##java#
全部评论

相关推荐

点赞 评论 收藏
分享
2025-12-29 22:36
武汉大学 Java
点赞 评论 收藏
分享
2025-12-24 20:46
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务