返回

手写Spring---深入理解Config详解

见解分享

概述
@Config注解是Spring用来配置Java类的注解。它可以用来指定类的初始化和销毁方法,以及类的作用域。当Spring扫描到一个被@Config注解的类时,它会自动创建该类的实例并将其放入IoC容器中。

@Component注解用法

@Component注解是Spring用来声明一个类可以被IoC容器创建的注解。当Spring扫描到一个被@Component注解的类时,它会自动创建该类的实例并将其放入IoC容器中。

@Component注解可以放在类的任何地方,但通常放在类的开头。例如:

@Component
public class MyClass {
    // ...
}

@Config注解详解

@Config注解是Spring用来配置Java类的注解。它可以用来指定类的初始化和销毁方法,以及类的作用域。当Spring扫描到一个被@Config注解的类时,它会自动创建该类的实例并将其放入IoC容器中。

@Config注解的用法与@Component注解类似,但它有几个额外的属性:

  • name: 指定类的名称。如果未指定,则使用类的简单名称作为类的名称。
  • initMethod: 指定类的初始化方法。如果未指定,则Spring会尝试查找一个名为init()的方法。
  • destroyMethod: 指定类的销毁方法。如果未指定,则Spring会尝试查找一个名为destroy()的方法。
  • scope: 指定类的作用域。Spring支持五种作用域:singleton、prototype、request、session和global session。默认情况下,类的作用域是singleton。

例如:

@Config(name = "myConfig", initMethod = "init", destroyMethod = "destroy", scope = "prototype")
public class MyClass {
    // ...
}

Spring如何解析@Component注解

Spring使用反射来解析@Component注解。当Spring扫描到一个被@Component注解的类时,它会执行以下步骤:

  1. 获取类的Class对象。
  2. 检查类是否被@Component注解。
  3. 如果类被@Component注解,则创建一个该类的实例。
  4. 将该类的实例放入IoC容器中。

完整的代码示例

以下是一个完整的代码示例,展示了如何使用@Component注解和@Config注解:

@Component
public class MyClass {
    public void init() {
        // ...
    }

    public void destroy() {
        // ...
    }
}

@Config(name = "myConfig", initMethod = "init", destroyMethod = "destroy")
public class MyConfig {
    // ...
}

public class Main {
    public static void main(String[] args) {
        ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
        MyClass myClass = context.getBean(MyClass.class);
        myClass.init();
        // ...
        myClass.destroy();
    }
}

总结

@Config注解是Spring用来配置Java类的注解。它可以用来指定类的初始化和销毁方法,以及类的作用域。当Spring扫描到一个被@Config注解的类时,它会自动创建该类的实例并将其放入IoC容器中。