谈谈Spring&SpringBoot

 

谈谈IOC

 

  IOC是Spring的两大核心概念之一,IOC通过Bean容器自动的帮助我们创建对象,不需要手动去创建。IOC有一个很强大的功能DI(依赖注入),我们可以通过xml或者Java代码的方式,把我们想注入的对象属性或方法注入到IOC容器中。
  依赖注入体现了Spring强大的特性:解耦。举个例子,我们使用JdbcTmeplate或者Durid时,如果他俩强耦合在一起,会导致使用JDBCTemp必须使用Durid数据源,依赖注入可以保证使用JdbcTemp只需要依赖于数据源接口,不需要强依赖于任何一个数据源。
  Spring在启动时就会把Bean创建后,这样运行速度更快。并且我们使用的大多数Bean对象都是单例的,用的时候直接注入就行了,我们不需要手动写单例,非常方便
。 

 

 

谈谈AOP

 

  在日常工作中会遇见很多重复性的代码,比如日志。我们需要在很多类中都写日志,这样每个类都手动写非常麻烦。Spring提供了AOP的概念,我们可以把这些共有的代码抽取出来。然后切入到我们需要的类中,这样减少代码,提高代码复用性。
  Aop基于动态代理实现,如果要代理的对象有接口,我们就是用java原生的动态代理实现,如果没有提供接口就会采用cj-lib来创建动态代理。 

 

 

聊聊SpringBoot自动装配的原理

 

  SpringBoot是从main方法开始启动的。在main方法中我们会调用SpringApplication.run方法。run方法执行会调用refreshContext方法,刷新容器,扫描解析@SpringBootApplication注解。此时开始调用@SpringBootApplication注解里面的内容。
  这个注解里面包含了一个EnableAutoconfigure的开启自动配置的注解。这个注解里面又包含了一个Import注解,Import进来一个AutoConfigurationImportSelector类,这个类里面提供一下核心方法,例如getResources,帮助我们从类路径下,Meta-INF/spring-factories下,扫描所有sprintboot提供的启动器标签,根据导入的jar包就是启动器,以及注入的Bean容器来把符合条件的标签注入到Bean容器中,即实现自动装配。

  如果没有引入对应的starter启动器,@ConditonalOnClass注解会因为扫描不到不会把相应的Template代码注入到bean容器中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值