当前位置: 首页 > wzjs >正文

秦皇岛网站制作 微商城建设网络营销方式有哪些

秦皇岛网站制作 微商城建设,网络营销方式有哪些,郓城建设局网站,获取网站后台地址Spring单例bean是否线程安全? 线程安全的定义:在多线程环境中,一个类或代码段能够被多个线程安全地访问,而不会出现数据竞争、状态不一致或其他意外行为。 单例bean无法保证线程安全,他可能会产生线程安全问题&#…

Spring单例bean是否线程安全?

线程安全的定义:在多线程环境中,一个类或代码段能够被多个线程安全地访问,而不会出现数据竞争、状态不一致或其他意外行为。

单例bean无法保证线程安全,他可能会产生线程安全问题,所以单例bean不是线程安全的。

但是不是线程安全的,在使用过程中并不一定就会产生线程安全问题,就算是线程不安全的,在合理的使用下也能够不对数据造成危害。比如:虽然bean是线程不安全的,但是它的成员变量如果都是无状态(不做修改)的,就算使用单例bean,也不会对数据产生影响。

重点应该是将线程是否安全的和是否一定会产生线程安全问题区分,线程不安全的也可以以不产生线程安全问题的方式实现。

补充了解:
当不同请求同时访问单例时,spring容器中只有一个单例,spring容器接收不同请求,并为这些请求创建不同线程并发访问spring容器中的单例对象。

AOP底层原理?

什么是AOP?

面向切面编程,用来 抽取与业务无关但对多个对象产生影响的公共代码,实现了代码复用和解耦。常见场景:记录日志,事务处理。

使用流程?
构建一个切面类,在切面类中实现增强方法,在增强方法上使用注解指定执行时间和执行地点(在哪个方法的什么时候执行)。

动态代理。

Cglib:通过jar包产生新的class文件,对新的class文件进行实例化,即实例化了一个新的代理对象。通过责任链来执行增强方法。

而jdkProxy中,将bean对象作为一个成员变量来生成代理对象。通过责任链来执行增强方法。

项目启动时,会创建IOC容器,并将IOC容器内的bean进行构造,填充属性,初始化,在bean生命周期中的初始化结束后,spring会调用所有BeanPostProcessor的postProcessAfterInitialization方法,Spring会检查该Bean是否需要被代理(通过获取所有的增强advice和判断当前bean是否满足配置的切面条件),满足条件则构造代理对象。

为了同一,方便的构造代理对象,应用了工厂设计模式,有一个专门生产代理对象的工厂proxyFactory,在该工厂中制定了具体生产对象的方式。

生产对象的两种方式:
Cglib:

使用enhencer来设置i基本信息及生成增强的调用链,基于ASM生成新的class文件,实例化它的对象,调用bean方法时会执行intercept方法,与invoke方法类似。

jdkProxy:

创建一个实现了目标对象实现接口的代理对象,并将目标对象作为它的成员变量,通过成员变量来执行目标对象上的相应方法,调用bean方法时,或执行invoke方法,通过execution表达式获取所有与该方法(bean方法)匹配的增强方法,并使用责任链模式,将它们排序,生成调用链,按顺序执行调用链,中间穿插执行bean方法。

Cglib和jdkProxy区别:

1.使用JDKProxy必须保证目标对象实现接口,而使用Cglib必须保证目标对象不使用final。

2.动态代理使用的是在运行时生成的class文件,

JDKProxy由JDK生成,而Cglib会使用第三方的ASM生成,

JDK生成的代理类会实现目标对象的类接口,所以目标对象必须实现接口,

Cglib中ASM生成的类会继承目标对象的类,所以目标对象不能使用final关键字,

3.JDKProxy使用反射调用目标对象执行方法,

Cglib直接使用子类调用目标对象执行方法。

Spring事务的底层实现?

Spring事务底层使用AOP实现,

1.解析切面,在bean被构造,数据填充,初始化后,执行beanPostProcessor时进行解析advicer,这个advicer是由于使用注解@EnableTransactionManagement导入了一个配置类,这个配置类配置了advicer,该advicer的切入点通过事务注解声明,在advicer中配置了事务的增强方法。

2.生成代理对象。

3.调用。

使用try catch,在执行方法前创建一个数据库连接,禁用数据库自动提交,执行方法,如果抛出异常需要回滚则回滚,否则仍然提交。如果未出现异常直接提交。

建议结合参见:
1.【史上最完整的AOP底层原理】https://www.bilibili.com/video/BV1SY41117zqvd_source=a70a5573b182a2efadab0e4922233ceb

2.【腾讯二面:Spring AOP底层实现原理是怎么样的?JDK和CGlib动态代理有什么区别 ?】https://www.bilibili.com/video/BV1MJ4m1Y784vd_source=a70a5573b182a2efadab0e4922233ceb

Spring中bean对象的生命周期?

1.获取bean配置

2.实例化bean对象

3.依赖注入,属性赋值

4.实现了aware接口,执行对应方法

5.执行BeanPostProcessor的前置处理器

6.执行初始化方法

7.执行BeanPostProcessor的后置处理器

8.销毁bean对象

http://www.dtcms.com/wzjs/175602.html

相关文章:

  • 东莞做网站公司在哪搜索引擎优化的意思
  • 课程建设类教学成果奖网站网站收录优化
  • 国外设计学院网站在线之家
  • 做网站接口多少钱百度搜索引擎的特点
  • 做旅游的网站 优帮云软文广告300字范文
  • wordpress站外链接页面小程序开发公司前十名
  • 网站开发报价合同范本seo是怎么优化
  • 小程序定制开发小程序贵州二级站seo整站优化排名
  • 找代理做网站网站域名归属谁网站优化排名提升
  • 酒店 深圳 网站建设微商营销技巧
  • 珠海网站建设专线头条指数
  • 做的网站是怎么被收录品牌运营策略
  • 可信赖的顺的网站建设seo快速排名软件平台
  • 国外 wordpressseo自学网视频教程
  • 网站备案信息填写上海网站seo招聘
  • 建行互联网站引流获客app下载
  • 网站开发网站建设制作费用爱用建站官网
  • 做app网站的软件叫什么名字吗国内手机搜索引擎十大排行
  • 网络组网方案seo的优化流程
  • 个人可以做行业网站吗google搜索免费入口
  • 京东商城网站怎么做北京网站优化
  • jsp网站地图生成器百度开户
  • 3d网站制作长沙关键词优化方法
  • 吉安建设网站semen是什么意思
  • 大连网站开发需要多少钱免费发布信息的平台有哪些
  • 便宜旅游机票网站建设好消息疫情要结束了
  • 企业服务 免费网站建设网站建设设计
  • 网站空间文件夹2023年小学生简短小新闻
  • 学做莱网站app推广怎么做
  • 西安有哪些网站建设公司搜索引擎关键词优化