@Compont
将一个类标记为 Spring Bean,并委托为 Spring 管理
@Service
同 @Compont,指明该类是一个 Service
@Repository
同 @Compont,指明该类是一个 Dao
@Autowried
此注解将一个标有 @Compont 的类进行注入,先根据类型查找,再根据名称查找
@Resource
同 @Autowried,这个注解属于 J2EE 规范,先根据名称查找,再根据类型查找
@Inject
同 @Autowried,这个注解属于 JSR330 (Dependency Injection for Java) 中的规范
@Qualifier
一个修饰注解,需要配合 @Autowried 使用,根据 @Qualifier 中指定的参数进行查找
@Autowired
@Qualifier("myService1")
private MyService myService;
@DependsOn
配合 @Compont 使用,告诉 Spring 容器,当初始化该类时,需要提前初始化哪些类
@Component
@DependsOn("testService")
public class MyService {
}
@Scope
表面当前类的作用域,有 singleton,prototype 两种,默认是 singleton,当 @Scope(“prototype”) 时,每次都会进行初始化(有条件的)
@Component
@Scope("prototype")
public class ProtoTypeBean {
public ProtoTypeBean() {
System.out.println("ProtoTypeBean init");
}
}
@Lookup
也属于一种注入类型(作用于方法上),只是每次调用有 @Lookup 的注解的方法时都会从新注入,通常用于 @Scope(“prototype”) 类型的 bean
@Lookup
public abstract ProtoTypeBean lookupProtoTypeBean();
public void getProtoTypeBeanForLookup() {
System.out.println(lookupProtoTypeBean().hashCode());
}
@Lazy
懒加载,当一个 bean 被标有 @Lazy 时,不会随着容器立即初始化,会再 getBean 的时候才会进行初始化,只会初始化一次
@Component
@Lazy
public class Foo {
}