spring相关注解 – rfh-web

80 阅读2分钟

spring注解

  • @Component

    • 使用在类上实例化bean,id为类名首字母小写
  • @Controller

    • 使用在web层类上实例化bean,id为类名首字母小写
  • @Service

    • 使用在Service层类上实例化bean,id为类名首字母小写
  • @Repository

    • 使用在Dao层类上实例化bean,id为类名首字母小写
  • @Autowired(通过反射机制给属性赋值,(required))

    • 可以用在字段,setter方法,构造器方法上
    • 默认情况下按照类型进行匹配,并且默认情况下要求依赖的对象必须存在(required=true),如果允许null值,可以设置required=false
    • 根据类型自动注入(spring提供,包org.springframework.beans.factory.annotation.Autowired)
    • 说明@Autowired无法人为去干预注入规则的,然后当容器中同一类型的bean存在多个的话,@Autowired该如何去选择呢,这时就需要@Qualifier注解来帮忙了
  • @Qualifier

    • 不能单独使用,结合Autowired使用,并指定名称进行依赖注入
  • @Resource(name,type)

    • 可以用在字段,setter方法上
    • 若没有使用属性,则通过反射机制,默认按照byName方式进行装配,如果没有匹配,则再类型进行装配
    • 若只使用了name属性,则使用byName的自动注入策略,从上下文中查找名称id,如果匹配不到则抛出异常
    • 若只使用了type属性,则使用byType自动注入策略,从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个都会抛出异常.
    • 若两个属性都使用了,则需要找到唯一匹配的bean进行装配,找不到则抛出异常
    • 默认根据name注入(j2ee提供,包javax.annotation.Resource)
  • @Value

    • 给类注入普通属性
  • @Scope

    • 标注bean的作用范围
    • singleton单例,prototype多例
    • 在单例情况下,在创建容器时,new ClassPathxml…()就会创建对象并保存在ioc容器中
    • 在多例情况下,创建容器时并不会创建该对象,会在调用getbean()或者其他方法时(第一次使用该对象时)才创建该类的对象,每一次创建的对象不是同一个
  • @PostConstruct

    • 使用在方法上标注该方法是bean的初始化方法
  • @PreDestroy

    • 使用在该方法标注该方法是bean的销毁方法
  • @Configuration

    • 用于指定当前类类一个Spring配置类,当创建容器时会从该类上加载注解
  • @ComponentScan

    • 用于指定Spring在初始化容器时要扫描的包,和在xml中的<context:component-scan base-package=’….’/>一样
  • @Bean

    • 使用在方法上,标注该方法的返回值讲保存在ioc容器中,id默认为方法名,和bean标签一样
  • @PropertySource

    • 用于加载properties文件中的配置,和xml中的 <context:porperty-placeholder location=”…”/>一样
  • @Import

    • 用于导入其他配置类,和xml中的 一样

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情