Spring注解

    1. @Controller:标识一个Spring类是Spring MVC controller处理器,@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。
    1. @RestController:@RestController是@Controller和 @ResponseBody的结合体,两个标注合并起来的作用,@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面.
    1. Resource是java2e的注解,可以指定name(默认),type属性,autowired默认使用type属性,配置required属性可以允许为null,如果有多个匹配,可以使用@Qualifier()配置name属性。
    1. @RequestMapping注解用于将特定HTTP请求方法映射到将处理相应请求的控制器中的特定类/方法。
      类级别:映射请求的URL方法级别:映射URL以及HTTP请求方法.
    1. @Configuration和@Component的区别?

@Configuration本质上还是@Component,概括就是@Configuration中所有带@Bean注解的方法都会被动态代理,保证了单例模式,因此调用该方法返回的都是同一个实例。@Component注解不能被动态代理所代理,在获取当前类名时,使用@Component获取的是当前类名;而@Configuration获取的是当前类名+唯一标识(CGLIB代理)。

    1. SpringBootApplication这个注解包括(CompoentScan, Configuration, EnableAutoConfiguration)

其中EnableAutoConfiguration会去读取每个maven包含的jar中的META-INF/Spring.factories定义的自动配置类,经过exclude和@Condition筛选出有效的自动配置类,每个自动配置类结合对应的xxxProperties.java配置文件实现实例化并生Bean;除此以外还会去读取项目中的Configuration配置类,然后将生成这些配置类的beanDefination加入到BeanDefinationMap

    1. Spring中IOC和AOP?

IOC就是把bean的管理权限交给ApplicationContext,其中包括一些从实例化到初始化完成的动态代理过程,包括属性注入–>初始化前–>初始化–>初始化后,这里包括如何解决循环依赖的问题?

AOP就是面向切面编程,基于动态代理的运行时增强,将日志文件,用户鉴权等业务抽象出来,在每个需要用到的模块中,使用pointcut匹配需要调用的方法,然后使用advice通知动态增强这个类方法。

    1. 解决循环依赖?

三层Map解决了循环依赖:
1级缓存 用来放已经完成初始化的Bean,不会发生锁定。
2级缓存 用来放实现了AOP动态代理的Bean,使用二级缓存能避免重复创建动态代理,(已经完成初始化)Bean包装起来的ObjectFactory.
3级缓存 存放的是已经完成实例化的Bean和PostConstruct(),InitlizationBean()等函数接口, 该函数接口并不会立即执行,除非等到ABA(循环依赖调用的时候),才会去调用该函数,进行AOP的动态代理创建(已经完成实例化,未开始初始化)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值