spring笔记

spring

1 了解ssm框架的过渡

1.1 ssm框架是什么

分别代表的是spring MVC + spring + MyBatis三个框架。

  • springMVC框架是一个表现层框架,技术实现主要还是jsp+servlet,代表三层架构里面的表现层。
  • spring框架是服务层框架,进行业务逻辑处理。
  • MyBatis框架是数据访问层框架,对数据库操作。

1.2分清楚一个设计模式和三层架构和实现技术之间的关系

  • 设计模式用的是MVC设计模式

    jsp model2模型就是使用mvc设计模式。下面以jsp model2的模型来介绍。包括三个模块。
    M:model:模型
    	实现技术是javaBean,(javaBean:bean:咖啡豆)其中有两种Bean:
    	1.实体类bean:用于封装用户数据的实体类。
    	2.业务bean:service层和dao层的类:用于业务逻辑处理和数据库访问操作的类。
    
    V:view:视图,视野
    	实现技术是jsp。
    	
    C:controller:控制
    	实现技术是servlet:用于三层之间的流程控制。
    
  • 三层架构是是一种思想,它实现了MVC设计模式。开发中也用这种架构进行开发。

    三层架构中,分为表现层、服务层、数据访问层。
    	表现层对应设计模式中的V和C两个模块。这一层实现技术是jsp+servlet。
    	服务层和数据访问层对应设计模式中的M:模型。模块。这两层实现技术是JavaBean,包括两类bean,不过实体类bean在三层都有联系使用。controller层中将用户提交的数据封装为实体类对象,service层和dao层可能会传递实体类对象。
    

1.3 ssm框架优势在哪

来袭,接好这波新技能!

  • springMVC是实现MVC设计模式的一个表现层牛逼框架,十分轻量级。

    牛逼体现在:
    	原来javaweb里面学的是jsp+servlet+javabean开发。
    	springmvc实现了mvc设计模式,所以,springmvc框架实现了model、view、controller、三个模块的功能。
    	不过要注意两点:
    		1.model中是封装的用户数据对象数据,而不包括业务逻辑处理类。
    		2.servlet实现技术换为了controller类,不过功能和servlet一样,jsp技术正常使用。
        3.springmvc就是代表了原来的jsp+servlet技术实现的表现层。
    
  • spring框架是服务层的框架,主要用来业务逻辑处理。

    spring框架主要通过管理service对象和dao层对象来实现处理的。具体后续学习后再补充。
    

    MyBatis框架是数据访问层的框架,主要用进行数据库的操作。

    MyBatis框架和spring框架里面的实现技术好像还是业务bean的类技术。

2 mybatis框架

2.1 mybatic框架的映射的理解

image-20250219163426546

2.2 mybatis框架的优势

image-20250219163632252

2.3 maven新总结

2.3.1 maven的三种仓库

导入坐标后,如果自己电脑的本地仓库没有从maven的中央仓库下载。第三方仓库先了解。

image-20250220194802395

3 spring入门小记

学习框架的使用,一定要知道大概的流程,每个流程怎么操作,每个流程的功能是干什么,这样才能根据理解去写代码。这都是学习框架的使用要掌握的。而深入学习框架,是分析每个流程的源码,分析他是怎么实现的,然后再分析他为什么这样写代码。

1.spring重要两个概念:

  • IOC控制反转、依赖注入
  • AOC

控制反转:由自己new对象变为IOC容器创建和管理对象。

依赖注入:就是给属性赋值。

3.依赖注入方法:

  • 构造器注入:标签中用标签赋值
  • set方法注入:标签中用标签赋值

3.1 spring中关键的理解处

1.spring<bean id= “">标签中的id核心作用是唯一标识一个实体类的定义(也叫做实体类的配置元数据),单例模式下,因为一个实体类只有一个bean对象,所以id间接唯一标识对象。但是多例模式下,一个标签的id只唯一标识一个实体类的定义,因为多里模式通过这个id会产生多个实例对象。

2.javabean和spring bean的术语区分

  • javabean定义是:Java类的的一种标准规范。但是开发术语中,提到javabean一般指的是普通的java对象。
  • spring bean:源码中,bean包括bean注册和实例化为bean对象两个阶段,他们是两个不同阶段。但是术语和开发中,spring bean就指的是spring容器管理的bean对象。类比一下,用户注册就是根据用户的信息进行注册,这时候只是注册,注册信息还存在系统中,还没有检验成功将用户信息保存到数据库中。用户就是对象。Bean注册就是根据Bean的实体类信息进行注册,Bean就是实体类对象,只不过这时候只是保存注册信息在容器中,还没有创建对象。
  • @Controller、@Service、@Repository这些注解是进行Bean注册(也叫Bean对象注册,术语Bean就指的是Bean对象),注册指的是将标记的实体类的元数据(属性,方法)封装为BeanDefination对象,然后将这个对象传给BeanRegister,保存起来,后续进行实例化做准备。这个注解就是向spring传递信息,传递需要Bean注册的信息。我只要知道这个注解的作用就可以使用这个注解去实现什么功能,他扫描到后会根据他的机制去执行这个要求来实现功能,我只是一个使用者。

3.spring容器指的是IOC控制反转容器,他是spring框架的一个模块,然后spring容器本身是一个接口,BeanFactory和ApplicationContext两个接口都代表spring容器,注意,这是java里面的一种思想。

第一种理解,不太好理解

容器是一个接口,用接口定义容器的基本功能,但不实现,具体功能实现由实现类去完成,创建实现类的对象就是创建容器,因为实现类对象包含了容器的所有功能,实现类对象就是容器的具体体现实体,而容器只是一种抽象体,

第二种理解,可以接受

spring开发了两个接口定义容器的功能(相当于说明要创建容器,必须要做什么)然后接口实现类就根据接口的要求实现了容器的功能,所以实现类的对象就是具体的一个容器。

4.注解名称和标签id的意思

@Service(value = "userService2")
/*这里的bean名称指的是bean定义的名称(就是一个配套信息的名称)
*   这个地方主注意:
*   1.不是唯一标识一个bean对象。(多例模式,多个对象id一样,矛盾)
*   2.不是唯一标识一个实体类,多个<bean>标签,id不一样,实现类一样,矛盾
*   3.唯一标识一个bean定义的配置信息,也就是一套配置的名称,同一个实现类可以有多个配置*/

4 spring的启动与配置流程

4.1 spring的启动过程(xml方式)

xml注解配置方式的启动流程下面这个启动流程图,包含了我三天以来的感悟与思考。

image-20250328093107069

spring的启动过程(注解方式)

注意注解方式普通类型的依赖注入和xml方式不同。

主要是这个地方滤清楚:

  1. 扫描到@Component注解后,只将id,class等基本属性放到beandefination对象中,接着扫描其他注解,像懒加载,作用域@scope,初始化方法,销毁方法等注解,把这些注解信息放到bean定义对象中,之后放完了,才创建对象,之后进行赋值,基本类型赋值是从内存中取或者直接字符串赋值,引用类型则是从ioc容器中取。

image-20250328163430750

5.spring AOP

5.1 基于注解的切面配置小记

总结AOP基于注解的编程
    一句话:在切面中配置切入点和增强的关系。
    切面:@Aspect标记的类
    切入点:
    @Pointcut("execution(* cn.edu.huuc.demo2.Service02.*(..))")execution里面的包名下的能够被增强的方法
     public void exceptionMsg() {
        }
        /* public void exceptionMsg() {
        }这是一个空方法,作为切入点的载体,让后面切面中增强的方法进行引用*/

    增强:具体的增强方法:msgMethod就是一个增强
      @Around("exceptionMsg()")
        public Object msgMethod(ProceedingJoinPoint thisJoinPoint) throws Throwable {
        }

    关系:@Around,@Before @after里面要引用切点载体。

最后注意:
切入点和增强不是一个方法,切入点是被拦截到的可以被增强的方法,增强是要进行什么方法增强(是另外一个方法),
然后连接点是所有可以被增强的方法,切入点只是表达式里面的包下以Service开头的方法进行增强,连接点包含切入点。
posted @ 2025-04-28 21:04  JSESSIONID  阅读(6)  评论(0)    收藏  举报