springboot微服务-02 Spring框架

Spring框架

Spring框架诞生于黑暗的EJB1时代,这是一个J2EE规范统治的时代,Spring框架是高效构建Java研发体系的一种最佳实践;包括大家熟知的Sping IOC与AOP

Spring IOC

IoC:(Inversion Of Control) 控制反转,有两种方式:

  • 01 DI Dependency Injection) 依赖注入,当前软件实体被动接受其依赖的的其他组件被 IOC 容器注入
  • 02 DL(Dependency Look)依赖查找:当前软件实体主动那个去某个服务注册地查找其依赖的服务

Spring IoC容器过程

阶段一:收集和注册bean

构建和收集bean,通过XML或Java代码的方式定义一些bean,然后通过手动组装或容器基于某些机制自动扫描,将这些bean定义收集到 IoC 容器中

阶段二:分析和组装

第一阶段完成后,IOC容器中有很多独立的bean,IOC 容器在这个阶段就是分析这些已经在 IOC 容器之中的bean,然后依据他们之间的依赖关系先后组装它们。直到所有bean的依赖关系都注入完成;
至于分析和组装的依据,Spring框架先后通过XML配置文件的形式、Java代码、Annotation元信息来描述;

JavaConfig

注册bean定义和表达依赖注入关系

  • 基于JavaConfig的配置形式:
<bean id="mockService" class="..MockServiceImpl">
    <property name="dependencyService" ref="dependencyService"/>
</bean>
<bean id="dependencyService" class="DependencyServiceImpl"/>
  • 基于JavaConfig的配置形式是这样的(方法调用的形式来注入依赖,且都是Singleton的对象实例):
@Configuration
public class MockConfiguration{
    @Bean
    public MockService mockService(){
        return new MockServiceImpl(dependencyService());
    }
    @Bean
    public DependencyService dependencyService(){
        return new DependencyServiceImpl();
    }
}

任何标注了@Bean的方法,其返回值将作为一个bean定义注册到Spring的 IOC 容器,方法名将默认成为该 bean 定义的 id,如果一个bean的定义依赖其他的bean,则直接调用对应JavaConfig类中依赖bean的创建方法就可以了。

Annotation

@Configuration
@ComponentScan
@PropertySource:java8以上,加载*.properties文件
@PropertySources:java8以下,加载多个*.properties文件
@import:将多个容器配置合到一个配置,负责JavaConfig形式的 IOC 容器配置
@importResource:非JavaConfig形式配置,如XML配置等

猜你喜欢

转载自blog.csdn.net/mrwxh/article/details/80625214