返回
手写Spring---深入理解Config详解
见解分享
2024-01-10 18:14:09
概述
@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注解的类时,它会执行以下步骤:
- 获取类的Class对象。
- 检查类是否被@Component注解。
- 如果类被@Component注解,则创建一个该类的实例。
- 将该类的实例放入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容器中。