• 0720~放假自习


    spring boot自动装配原理?

    springboot有一个最重要的注解,@SpringbootApplication,点进去查看,它是一个组合注解,里面有三个注解,@Spring boot Configuration、@ComponentScan、@EnbleAutoConfiguration,其中@EnbleAutoConfiguration最为重要,点进去它里面有一个@Import的注解,里面有一个类,有一个方法selectImports,里面会读取META-INFO下面spring.factories所有需要自动装配的文件,然后会通过META-INFO下面的auto configuration-metadata.properties进行过滤,最后返回的才是需要自动装配的一些对象;

    自定义stater操作成功!

     操作步骤:

    1.模仿其他依赖,首先导入springboot两个相关的依赖,

    2.编写业务,然后交给ioc容器;

    3.在resources文件下新建META-INFO文件夹并在META-INFO下面新建spring.factories文件,配置文件的全限定名;

    4.最后install打成jar包,在其他依赖中导入即可使用;

     1.模仿其他依赖,首先导入springboot两个相关的依赖,

    1. <parent>
    2. <groupId>org.springframework.bootgroupId>
    3. <artifactId>spring-boot-starter-parentartifactId>
    4. <version>2.0.5.RELEASEversion>
    5. parent>
    6. <dependencies>
    7. <dependency>
    8. <groupId>org.springframework.bootgroupId>
    9. <artifactId>spring-boot-starterartifactId>
    10. dependency>
    11. dependencies>

     2.编写业务,然后交给ioc容器;

    1. //业务类
    2. public class Print {
    3. public void myPrint(String msg){
    4. System.out.println("这是我自定义打印的信息:"+msg);
    5. }
    6. }
    7. -----------------------------------------------------------------------
    8. //配置类
    9. @Configuration
    10. public class PringConfig {
    11. @Bean
    12. public Print print(){
    13. return new Print();
    14. }
    15. }

     3.在resources文件下新建META-INFO文件夹并在META-INFO下面新建spring.factories文件,配置文件的全限定名;

    4.最后install打成jar包,在其他依赖中导入即可使用;

     


    在其他类中导入,测试即可!!!

     


    CAS(比较并交换):自旋锁,也是属于一种乐观锁;

    属于JUC包,一个do while 优雅的解决了并发的问题;底层代码如下:

    1. public final int getAndAddInt(Object var1, long var2, int var4) {
    2. int var5;
    3. do {
    4. var5 = this.getIntVolatile(var1, var2);
    5. } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
    6. return var5;
    7. }

    参数描述:

    var1:该对象本身;

    var2:该对象值的引用地址;

    var4:需要增加或者修改的变量;

    var5:用var1和var2再内存中找到的真实的值;


    this.compareAndSwapInt(var1, var2, var5, var5 + var4);

    把var1和var2与var5进行比较,如果相同则返回var5+var4;

                                                   如果不同则继续取值再比较,直到相等为止;

    乐观锁会出现的问题:ABA问题;

    如果A是 AUser1对象,进行比较交换后换成了BUser1对象,又比较交换成了AUser2,对象,此时AUser2对象就不是之前那个AUser1对象了,这就是常见的ABA问题;

    解决方法:加版本号;在每次更新的时候把版本号加一,例如A B A-->A1 B2 A3;

  • 相关阅读:
    帝国cms后台登录系统限制次数,60分钟过后重新登录解决办法
    贯穿化学制品制造业采购全过程,供应商协同管理系统实现企业订单管理全链协同
    npm install 报错 ‘proxy‘ config is set properly. See: ‘npm help config‘
    小孢子的神奇之旅-如何阅读MindSpore报错信息(3)
    PSO-DBSCAN聚类
    小黑回了一波儿血,抽空想了想KMP的leetcode之旅:1367. 二叉树中的列表(在操场上看到了中老黑牵手)
    ES日期时间格式化参数集锦
    vue3全局自定义指令实现按钮权限控制
    SpringBoot 02 自动装配原理和启动类
    记录:2022-9-15 罗马数字转正数 组合总和 分割回文串 信号量算法代码 文件共享 一致性语义 文件保护 文件系统结构
  • 原文地址:https://blog.csdn.net/m0_67574688/article/details/125892074