首页 > 其他分享 >框架串讲一

框架串讲一

时间:2023-01-31 16:23:27浏览次数:36  
标签:容器 串讲 框架 BeanFactory Spring Bean bean 线程

简单介绍下Spring?

Spring是一个java开发框架,简化java开发,有三个核心组件,IOC(控制反转),DI(依赖注入),AOP(切面编程)

1.IOC

概念:控制反转,反转的是对象的创建权,让Spring帮我们创建对象,我们使用的时候直接从容器中获取即可.

IOC容器有哪些:

ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,AnnotationConfigApplicationContext,BeanFactory.

ApplicationContext和BeanFactory的区别:

ApplicationContext和BeanFactory都是Spring容器,

区别是BeanFactory是底层接口,ApplicationContext是派生接口,功能更强大,BeanFactory是懒加载,使用的时候才会创建Bean,内存不足时,可以使用BeanFactory,ApplicationContext默认在容器初始化的时候加载所有的Bean,好处是使用的时候拿来即用,无需等待,缺点是起始阶段比较耗费内存.

BeanFactory和FactoryBean的区别:

BeanFactory是Spring容器,FactoryBean是一个特殊的Bean,用于创建Bean,创建出来的bean会放到容器中.

bean标签中的属性:

<bean id =""  class="" scope="" init-method="" desctory-method="" lazy-init="" autowire="">

Spring中的单例Bean是线程安全的吗?

不安全,但是Spring中的Bean是无状态的,也就是不存储数据,所以某种程度上来说是线程安全的,

怎么解决线程安全问题?

(1)把bean的作用域改为非单例,prototype

(2)把共享变量放到ThreadLocal中,ThreadLocal是线程私有变量,线程隔离,也可以解决线程安全问题,

 

简单描述下Spring容器中Bean的生命周期:

BeanDefinition->实例化->依赖注入->初始化->放到容器中使用->销毁

(1)先通过配置文件或者注解拿到所有的BeanDefinition,并放到BeanDefinitionMap中

(2)从BeanDefinitionMap中拿到bean定义并进行实例化new

(3)依赖注入,给容器中bean中的属性复制

(4)初始化,给属性赋值

(5)初始化完成后,bean真正创建完成,就可以把bean放到Spring容器中,ConcurrentHashMap,我们使用的时候就可以通过getBean来获取Bean

(6)容器销毁的时候,bean也会跟着销毁

BeanDefinition是bean定义,描述的是这个bean的类型,即这个bean的名字,有哪些属性,有哪些构造函数,有哪些方法.

2.DI

概念:依赖注入,给容器中的Bean的属性赋值就叫依赖注入.

依赖注入的方式有:

构造器注入  ,setter注入

3.AOP

概念:

面向切面编程,把公共代码抽取出来,并在不改变原始代码的基础上对方进行功能增幅.

连接点:所有可以被功能增幅的方法都是连接点

切入点:进行功能增幅的方法就是切入点.

通知:共性功能.

通知类:通知所在的类就是通知类.

切面:切入点+通知就是切面,描述的是在那些方法上进行什么功能增幅,

AOP底层原理:动态代理,在程序运行期间动态生成的一个代理对象,当调用到原始方法时,真正执行的是代理对象的代理方法.动态代理实现方式有两种,基于JDK的动态代理(反射)和基于CGLib的动态代理(继承)

五种通知类型:

前置通知:@Before

后置通知:@After

环绕通知:@Around

异常后通知:@AfterThrowing

返回后通知:@AfterReturning

4.注解

Spring中用过哪些注解:

定义Bean:@Component @Contorller @Service @Repository

依赖注入:@Autowired  @Qualifier @Resource @Value

定义第三方Bean: @Bean

配置类注解: @Configuration @Import @PropertySource @ComponentScan

bean的作用范围和生命周期:@Scope @PostConstruct @PreDestroy

5.事务

Spring事务的作用:

保证业务层方法同成功同失败.

如何添加事务:

(1)@Transactional

(2)在主配置类上添加@EnableTransactionManager

(3)把事务管理器交给Spring管理PlateformTransactionManagement

事务传播行为的作用:

用于解决业务层方法相互调用产生的事务问题,描述的是事务协调员是否要和业务管理员同成功同失败

事务传播行为有哪些:

默认,新建,支持,不支持

 

标签:容器,串讲,框架,BeanFactory,Spring,Bean,bean,线程
From: https://www.cnblogs.com/carney/p/17079562.html

相关文章

  • 一步一步实现若依框架--2.4数据权限 data_scope
     1、点击若依的系统用户管理页面,测试各种数据权限生成的sql,若依调用的后台方法是:@DataScope(deptAlias="d",userAlias="u")publicList<SysUser>selectUser......
  • Springboot入门 5分钟快速搭建Springboot框架
    5分钟快速搭建Springboot框架如何搭建springboot框架废话不多说直接开搞首先打开idea新建选择SpringInitializr,点击next选择webspringweb有的是两个web这个也是一样......
  • python web框架多进程部署下数据库连接问题
    python常用的web框架,诸如flask,django,在生产部署时,都会选择多进程的部署方式,选用的中间件多为uwsgi或者gunicorn。如果项目里使用了数据库,那么就要考虑数据库连接在多进程下......
  • Django-rest-framework框架/1-drf-drf入门规范
    一、Web应用模式在开发Web应用中,有两种应用模式:1.1前后端不分离之前学的,写的bbs项目,图书管理系统,用的是前后端混合开发。-后端人员,写后端,也要写【模板语法】--->xx.h......
  • .NET7后端框架:读取配置文件
    前言在项目开发过程中,不可避免的会设置一些全局的可变的参数,如连接字符串、功能开关、Swagger配置、Redis配置等等。.NETCore将这些配置参数统一放在appsettings.json......
  • 接口自动化框架两大神器-正则提取器和Jsonpath提取器
    一接口自动化框架一框架结构二结构说明-API用于封装被测系统的接口(用request模块封装的请求方法)-TestCase将一个或多个接口封装成测试用例,并使用UnitTest管理......
  • 集合框架体系Collection和Map常用API【汇总】
    集合框架体系Collection和Map常用API【汇总】Collection公共的方法Collection是单列结合的顶层接口,它的方法是所有单列集合都可以继承使用的。//把给定元素添加到集......
  • 1.1 安装gin框架&使用gin编写简单服务端
    01.安装gin框架a)配制环境变量GOPATH修改为go的工作文件夹路径D:\Golang\goprojectGOROOT修改为go的安装路径D:\Golang\go1.19Path增加GOROOT的bin和GOPATH的binD:......
  • airlift java rest 服务框架
    airlift是一个轻量,快速的javarest服务开发框架,属于trino的基础框架,airlift集成了不少轻量的工具包同时包含了不少不错的实践(比如配置管理,组件生命周期管理,http客户端,......
  • 测试开发必知必会:Pytest框架实战
    每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试应用场景:......