spring(4)

单例Bean和单例模式

  1. 单例Bean:对于一个类来说,他在当期IOC容器中,就是单独的一个对象,每次进行对Bean实例化的时候,总是调用的同一个对象。
  2. 单例模式:在同一个JVM中,单例Bean就是单例模式,但是在实例化的时候有不同的方法,比如懒汉模式等。(这个我不大理解,希望大佬指教)

spring的核心

  1. AOP
  2. 控制反转
  3. IOC容器

Bean的实例化和初始化有什么区别

  1. Bean的实例化:其实就是new Object()过程,但是在Spring中交给Spring进行。此时会先通过反射来执行构造方法创建一个对应Bean的Java对像,这就是实例化过程。
  2. Bean的初始化:Bean实例化后会创建一个Java对象,Java对象中会有一个afterPropertiesSet(),Bean初始化的时候会调用这个方法,可以通过这个方法对创建好的Java对象进行属性检测等操作。

SpringAop怎么实现的

  1. Aop使用场景:在项目开发结束后,如果需要对业务层整体进行日志记载操作, 无法逐个对每个方法进行操作,费时费力,这时候,使用AOP面向切面编程,使用代理对象,实现日志的操作。

Spring中的事务是怎么实现的

  1. 概念:
    在进行增删改操作的时候,需要对不同表进行操作,需要在业务层多次调用持久层和数据库进行交互,但是可能会出现一个sql语句成功但是另外一个不成功,这会出现数据不匹配的情况,此时需要使用spring事务,对有多个操作需要全部完成,但是只完成其中几个这种情况进行回滚操作
  2. 实现
    通常需要再业务层对应的方法上加上@Transactional注解。

你是怎么理解spring事务的传播机制

  1. 对于事务传播,可以通过设置@Transactional(Propagation)
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。

MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。

REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。

NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。

spring中常用的注解以及其实现过程

  1. @SpringbootApplication:复合注解
    1. @EnableAutoConfiguration:自动配置注解,Spring进行自动配置操作。
    2. @ComponentScan
    - 作用:扫描并把符合条件的类注册bean容器中。例如带有:@Component、@Service、@Controller和@Repository都会被注册到容器中。
    - 用法:
@ComponentScan({'需要扫描的文件的路径'}) 
//在启动类运行的时候,就可以对相应bean进行注册。
public class Component{
}
		注解的内容
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Repeatable(ComponentScans.class) //@1
public @interface ComponentScan {
 
        @AliasFor("basePackages")
        String[] value() default {};
     
        @AliasFor("value")
        String[] basePackages() default {};
     
        Class<?>[] basePackageClasses() default {};
     
        Class<? extends BeanNameGenerator> nameGenerator() default BeanNameGenerator.class;
     
        Class<? extends ScopeMetadataResolver> scopeResolver() default AnnotationScopeMetadataResolver.class;
     
        ScopedProxyMode scopedProxy() default ScopedProxyMode.DEFAULT;
     
        String resourcePattern() default "**/*.class";
     
        boolean useDefaultFilters() default true;
     
        Filter[] includeFilters() default {};
     
        Filter[] excludeFilters() default {};
     
        boolean lazyInit() default false;
    }

引用chenzoff作者的内容

Java中==和equals的区别

  • ==的用法时:对于基础数据类型,只需要判断数值是否相同;对于引用型数据类型,则需要判断当前是否为同一对象。
  • equals的用法:无论是基本数据类型还是引用型数据类型都只进行内容的比对。
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值