- 定义扫描范围注解,用于配置spring初始化是管理的包范围
package com.test.spring.anno;
import jdk.nashorn.internal.objects.annotations.Function;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ComponentScan {
String value() default "";
}
package com.test.spring;
import com.test.spring.anno.ComponentScan;
@ComponentScan("com.test.spring.test")
public class AppConf {
}
- 定义扫描类注解,使用该注解标识的类将由spring进行创建并管理
package com.test.spring.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Component {
String value() default "";
String scope() default "singleton";
}
- 定义懒加载注解,使用该注解标识的类或者注解,spring初始化的时候不创建该Bean对象,将在使用(getBean)时创建
package com.test.spring.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Lazy {
}
- 定义依赖注入标识注解,使用该注解标识的属性,将在spring创建该类Bean时自动注入值
package com.test.spring.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Autowired {
}
- 定义BeanDefinition类,用于记录类的相关属性
package com.test.spring;
public class BeanDefinition {
private String name;
private Class