@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 中指定的参数进行查找

  1. @Autowired
  2. @Qualifier("myService1")
  3. private MyService myService;


@DependsOn

配合 @Compont 使用,告诉 Spring 容器,当初始化该类时,需要提前初始化哪些类

  1. @Component
  2. @DependsOn("testService")
  3. public class MyService {
  4. }

@Scope

表面当前类的作用域,有 singleton,prototype 两种,默认是 singleton,当 @Scope(“prototype”) 时,每次都会进行初始化(有条件的)

  1. @Component
  2. @Scope("prototype")
  3. public class ProtoTypeBean {
  4. public ProtoTypeBean() {
  5. System.out.println("ProtoTypeBean init");
  6. }
  7. }

@Lookup

也属于一种注入类型(作用于方法上),只是每次调用有 @Lookup 的注解的方法时都会从新注入,通常用于 @Scope(“prototype”) 类型的 bean

  1. @Lookup
  2. public abstract ProtoTypeBean lookupProtoTypeBean();
  3. public void getProtoTypeBeanForLookup() {
  4. System.out.println(lookupProtoTypeBean().hashCode());
  5. }

@Lazy

懒加载,当一个 bean 被标有 @Lazy 时,不会随着容器立即初始化,会再 getBean 的时候才会进行初始化,只会初始化一次

  1. @Component
  2. @Lazy
  3. public class Foo {
  4. }