Spring的常用注解

Spring的常用注解

使用须知

需先在spring核心配置文件注册注解,注册前需要先导入context命名空间


<context:annotation-config/>

@Autowired

根据bean的Type去查找并注入对象,如ioc中只有唯一类型的Cat,Dog对象时, 才能注入成功,如果ioc有两个相同类型的对象,则会在两个类型中找id与需要注入的字段匹配

例如

先在ioc中注入一个Dog对象

<bean id="dog1" class="com.frw.pojo.Dog">
    <property name="name" value="比熊"/>
</bean>

再在实体类中注入Dog对象

public interface Dog {
    @Autowired
    private Dog dog;
}

此时在容器中Dog类型是唯一的,@Autowired就会根据Type去找IOC中的Bean

如果IOC中有多个Type相同的对象呢?

如此时ioc中有两个dog对象了

<beans>
    <bean id="dog2" class="com.frw.pojo.Dog">
        <property name="name" value="泰迪"/>
    </bean>
    <bean id="dog1" class="com.frw.pojo.Dog">
        <property name="name" value="比熊"/>
    </bean>
</beans>

再去使用@Autowired注入

public interface User {
    @Autowired
    private Dog dog1;
}

此时会根据注入的字段dog1与bean的id相匹配。即把比熊对象注入到User中了

@Qualifier

该注解要和@Autowired搭配使用,作用和上述的根据id匹配一致 当ioc中的同一类型的Bean有多个时,可以用@Qualifier注解来根据id 指定要注入的bean

@Nullable

字段标记了这个注解,说明该字段可以为空

@Resource

java原生注解,跟@Autowired等效

@Component

组件,放在类上,标记该类被Spring托管了,不过要使其生效还需在Spring核心配置文件中配置注解扫描包, 扫描到该类所在的包,默认的id为类名首字母小写

import org.springframework.stereotype.Component;

/*
    等价于<bean id="dog" class="com.frw.pojo.Dog">
   */
@Component
public class Dog {

}

@Value

该注解可以为类注入基本类型加String类型

@Component
public class User {
    @Value("十里坡剑神")
    private String name;
}

@Component 的衍生注解

在我们的web开发中,会使用mvc三层架构分层,为了使我们的注解更加语义化,衍生出了三个注解
注意其功能与@Component完全一样的,只是更加语义化了。

  • dao层 @Repository
  • service层 @Service
  • controller层 @Controller

@Scope注解

作用在类上,为Bean设置生命周期

以下为常用值

singleton单列模式此取值时表明容器中创建时只存在一个实例,所有引用此bean都是单一实例
prototype多例模式(原型模式)spring容器在进行输出prototype的bean对象时,会每次都重新生成一个新的对象给请求方。

总结:

​ xml更加万能,适用于任何场合,维护简单方便

​ 注解 方便快捷,不是自己的类用不了,维护复杂

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值