栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

0720~放假自习

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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两个相关的依赖,


    
        org.springframework.boot
        spring-boot-starter-parent
        2.0.5.RELEASE
    

    
        
            org.springframework.boot
            spring-boot-starter
        
    

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

//业务类
public class Print {

    public void myPrint(String msg){
        System.out.println("这是我自定义打印的信息:"+msg);
    }
}





-----------------------------------------------------------------------
//配置类

@Configuration
public class PringConfig {

    @Bean
    public Print print(){
        return new Print();
    }
}

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

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

 


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

 


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

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

public final int getAndAddInt(Object var1, long var2, int var4) {
        int var5;
        do {
            var5 = this.getIntVolatile(var1, var2);
        } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));

        return var5;
    }

参数描述:

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;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1024071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号