spring自我提升--我要变秃,不秃不会变强

1 篇文章 0 订阅
1 篇文章 0 订阅

spring个人的理解

spring是什么,你该怎么回答。

答:是一个轻量开源一站式框架,在三层架构中都有自己的一个技术支持。其中最重要的2个概念aop,ioc。控制反转,面向切面。

mvc和三层架构的区别

(表示层(web层)、业务逻辑层(service层)、数据访问层(dao层))
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层,也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分,控制器完成页面逻辑,通过实体来与界面层完成通话;而C层直接与三层中的BLL进行对话。

MVC可以是三层中的一个表现层框架,属于表现层。三层和MVC可以共存。

三层是基于业务逻辑来分的,而MVC是基于页面来分的。

什么是ioc(你对ioc有什么理解)

答: 控制反转,控制对象的创建,对象的管理。通过依赖注入,装配对象,管理对象的周期,举个例子,以前是我给你打电话,现在是我等你给我打电话。也就是说原来我们需要new去创建对象,现在将对象的创建交给spring来管理。

能说下ioc是怎么创建对象的?(DI依赖注入的方式)

答:调用无参构造方法,调用有参构造方法,使用工厂(静态和非静态)类创建

DI依赖注入

指Spring创建对象的过程中,将对象依赖的对象通过注入的形式添加到对象bean组件中

beanfactory和ApplicationContext有什么区别

applicationcontext接口继承beanfactory
Spring核心工厂是BeanFactory,采用的是延迟加载,在第一次加载getbean的时候初始化,而applicationContext在加载配置的时候初始化。ApplicationContext是对BeanFactory扩展。

spring是怎么解决多线程安全问题的呢

使用threadlocal,和scope属性设置为prototype,一般这两种方式。
如果bean的作用域是singleton,也就单例的时候。spring通过threadlocal,给每个线程提供一个线程独立的变量空间,讲到这也已经大概了解spring怎么通过threadlocal来实现安全性,以及为什么不使用同步锁,作用域为prototype,表示每次线程创建bean的时候都是不同的实例,就不会存在数据被篡改。因为都不是同一实例,数据存放的地址也不相同。

什么是aop

aop面向切面,面向对象通过继承,接口来实现从上往下的关系,aop关注的是横向的,比如日志,日志往往分布在不同的对象中,并且与所在的对象的核心功能没有任何的交集。降低代码的重复。
(个人的理解,就是当我们执行某一个方法时候,在此方法之前执行另一个方法(打一个日志),或者之后等等,在不修改原来的方法,加强方法,我理解成装饰模式,(个人联想认为))

aop怎么实现的

通过动态代理模式,创建代理对象,增强调用用目标对象方法。
(如果不清楚动态代理,可以百度看看静态代理是怎么写的。)
动态代理方法有2种,如果都实现了相同的接口,叫jdk实现,如果是继承相同的父类,叫gclib实现

aop能做些什么呢

日志和事务管理,日志的解释就不说了,什么是事务管理呢,
先说下数据库事务,如果我要修改表中的一条记录的话,如果我的sql有问题,那么我这个还能成功?答案是不能的。要么不成功,事务回滚,要么成功,数据修改
分享一个网站 https://blog.csdn.net/chinacr07/article/details/78817449
aop事务管理,就是对数据的一系列的操作,要不全部提交,只要有一条有错误,就事务回滚之前的操作。有分为编程式和声明式,声明式简单,就在配置文件配置,然后使用@Transactional

spring bean 的生命周期

1.定义bean,在配置文件中。
在配置文件里面用来进行定义。
2.初始化bean,实例化bean
A.在配置文件中通过指定init-method属性来完成
B.bean类实现org.springframwork.beans.factory.InitializingBean接口
3.bean调用
有4种方式可以得到bean实例,并进行调用(无参数(setter),有参数(构造方法),工厂类)。
(4)bean销毁
销毁有两种方式
A.使用配置文件指定的destroy-method属性
B.bean类实现org.springframwork.bean.factory.DisposeableBean接口
(个人的一个理解:ioc的底层用通过dom4j解析xml,反射机制,获得获得类实例,bean容器中,并提供getBean方法。然后通过beanfactory工厂模式,通过getbean获得需要的对象实例)

自动装配和依赖注入

首先说明这个2个概念是在一起的,我中有你,你中有我。
依赖注入的本质就是装配,装配是依赖注入的具体行为。慢慢理解。自动装配的方式有默认的"ref",byname,bytype,构造方法等。而依赖注入分为setter,构造方法,工厂方法

springmvc

最最最核心的前端控制器。懂了这个你其他的拓展知识你都明白
(每一步的操作都要经过前端控制器,我们每一步操作都基本有前端控制器)
在这里插入图片描述
在这里插入图片描述

springmvc常用的注解和使用

分享一个网址:https://blog.csdn.net/u010648555/article/details/76299467

1,controller,service,repository,component

这4个注解,当前在功能上没有任何区别,被注解的类都会初始化成一个bean,然后交予spring统一管理,为了实现分成管理,建议使用的bean注解
装配bean的注解
autowired
resource
两种都可以使用在属性,和属性setter方法上,功能相同,都是装配注入bean.
不同之处在于,autowired的是通过bytype,的形式通过bean的类型,如果有重复的类型就需要使用@Qualitied指定类的名称。
resource,默认是通过byname,但是也可以使用bytype,灵活性上resource好,但autowired的方式更简单快捷。

2 requestmapping

用于处理url地址映射,通过地址找到具体的接口方法。可以使用在类前面,方法前面,可以用通配符*。

3 requestparam

该注解用于方法形参,将请求的参数值传递给形参,默认是该参数必填,但也可以说required = false.

4 requestbody与responsebody

简单的说,用与json数据接收和发送。
requestbody用于方法形参,通过一个pojo类来接收传递的json, responsebody用于返回json类型

5.PathVariable

支持url占位符,将占位符的值赋予给参数。该该类的事务属性。

6.Transactional

一般是定义在类上,这样这个类的所有public方法都
分享一个网站:https://www.cnblogs.com/yepei/p/4716112.html

mvc配置文件分析

对一些配置文件的配置不是太明白,或者说当时了解然后又忘记了这次主要将通过springmvc从整体,到细节描述
配置文件的入口时web.xml,配置文件又什么呢,比如数据的连接,最开始我们通过jdbc 去来接数据
每次都要forname 加载驱动,获得连接connoction,获得statement执行sql, 获得resultset 获得结果集,然后遍历结果集
关闭有顺序的关闭资源。这里回顾一下。这样是特别浪费时间的,你每操作一次数据库就连接一次数据库,这样是不现实的。

首先需要配置(2种)在web.xml中

ContextLoaderListener,在web.xml启动的时候去监听
contextconfiglocation,去加载spring配置文件。

配置前端控制器。

我们通常的配置时在spring文件。

https://www.cnblogs.com/wxisme/p/4924561.html
https://blog.csdn.net/liuwenhao1996/article/details/75148900
https://blog.csdn.net/l00149133/article/details/78982336

spring我们需要配置datasource数据源,sqlSessionFactory ,mybatis的dao层的扫描器

bean对象
handlermapping
handleradpter

viewresolver视图解析器

关于aop配置transactional。transactionManager对数据库事务控制。

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>
<!-- enable transaction annotation support -->
<tx:annotation-driven transaction-manager="transactionManager" />

aop配置,通知配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值