Spring注解开发---自动装配@Autowired

1、 三层组件

  • 通过@Autowired从Ioc容器中 根据类型(默认)自动注入( 两个位置
    • -如果@Autowired在属性前标注,则调用setXxx;
    • -如果标注在setXxx前面 ,则调用setXxx
    • -不能放在方法的参数前

2、Bean+返回值:

  • @Autowired 在方法的参数前(也可以省略)、方法前构造方法:特殊,如果只有一个 有参构造 方法,则构造方法前的@Autowired也可以省略)
@Bean
public Student myStudent( @Autowired Address address1) {
    Student ls = new Student("ls", 23);
    ls.setAddress(address1); //Address 必须加入ioc容器
    return ls;
}
@Autowired 三大问
  • 1.如果有多个类型相同的,匹配哪个?

    • 报错。 /默认值@primary
    • bean+返回值 : 如果有多个bean 会根据参数名确定(有版本依赖),如果参数名找不到 ,则报错
  • 2.能否根据名字匹配?

    • 可以,结合 @Qualifier(“stuDao2”)使用。 bean+返回值 写到参数前(可以省略)
  • 3.如果有0个类型相同,默认报错;可以修改成不注入(null),@Autowired(required=false)

自动装配的方式

自动注入方式一: @Autowired (Spring) ,默认根据类型
自动注入方式二: @Resource(JSR250),
  • 默认根据名字(id名) (如果 有名字,根据名字匹配;如果没有名字,先根据名字查找,如果没找到,再根据类型查找);也可以通过name或type属性 指定根据名字 或类型找。
@Resource
private StudentService studentService;
//写一个就好(建议)
//两个同时写 任何一个 不一致都会报错
@Resource(name = "studentService",type = StudentService.class)
private StudentService studentService;
自动注入方式一: @Inject(JSR330),额外引入javax.inject.jar,默认根据类型匹配
   @Inject//根据类型
   private StudentDao studentDao;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值