Spring IOC源码解析(一)

Spring IOC源码解析(一)

前言:

准备开始写自己看源码的一些笔记,那既然是Spring,免不了照本宣科的看下Spring是什么,以及Spring给我们带来了什么。

Spring是什么?

Spring在我们java开发者看来是一套开发java web程序的标准,随着微服务的火爆,Spring Boot提供的开箱即用的功能。使得Spring是所有开发者都离不开的框架。
看下维基百科的Spring:
Spring框架Java平台的一个开源的全栈(Full-stack)应用程序框架控制反转容器实现,一般被直接称为 Spring。该框架的一些核心功能理论上可用于任何 Java 应用,但 Spring 还为基于Java企业版平台构建的 Web 应用提供了大量的拓展支持。虽然 Spring 没有直接实现任何的编程模型,但它已经在 Java 社区中广为流行,基本上完全代替了企业级JavaBeans(EJB)模型。

Spring IOC源码解析(一)_第1张图片

Spring IOC基本使用

下面介绍Spring IOC的基本使用,为后面的源码解析做铺垫。

@Configurable

在一个普通的类上加上一个@Configurable的注解之后就代表这个类作为了一个Spring的配置类,Spring可以读取相应的配置信息,对配置信息进行处理,然后生成各种各样不同的Bean。

@Bean

而注解@Bean则代表Bean的实例,当我们在方法上标注@Bean的注解以后,Spring会往IOC注入方法返回的实例。一般会和@Lazy, @Scope一起使用用来描述Bean的信息。

@ComponentScan

当我们有许多的Bean的时候,一个一个配置未免太费力了,而Spring给我们提供了@ComponentScan的注解,可以扫描一个包下的类作为Bean,当扫描包下的类上有@Controller,
@Component, @Reposiory注解的时候,Spring会将该类注入到Soring IOC中。

@Import

@Import也是用来注入Bean的。

@ImportResource

@ImportResource是用来引入spring xml上下文的,在不同的配置中配置不同的Bean。

@Autowired

@Autowired描述Bean的属性依赖Spring IOC注入,当我们的Bean需要某一个Bean的实例时,可以加上注解表示需要Spring从IOC上下文中自动注入。

@Configurable  
@ComponentScan(basePackages = "com.tuling.learn.component")  
public class MainConfig {  
      
    @Bean  
  public MyBean myBean() {  
        return new MyBean();  
  }  
}

com.tuling.learn.component包下的类:

@Component  
public class Person {  
      
    private String name;  
  
 public String getName() {  
        return name;  
  }  
  
    public void setName(String name) {  
        this.name = name;  
  }  
}

Spring IOC入口

接下来将会从下面的代码作为入口打开Spring IOC的大门

@Test  
public void testMainConfig() {  
    AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MainConfig.class);  
    context.getBean(MyBean.class);  
}

你可能感兴趣的:(spring,java)