关于Spring框架中的set注入,@Autowired,和包扫描之间内在的关系

1.set注入,上次讲到了是对一个类中通过set方法对其之中的普通类型,引用类型和复杂类型进行注入并赋值,增强类与类之间的关系。举例:

package pojo;

public class Cat {

}

public class Dog {

}

public class User {
  private Dog dog;
  private Cat cat;

public Dog getDog() {

    return dog;
}

public void setDog(Dog dog) {
    this.dog = dog;
}

public Cat getCat() {
    return cat;
}

public void setCat(Cat cat) {
    this.cat = cat;
}

@Override
public String toString() {
    return "User [dog=" + dog + ", cat=" + cat + "]";
}
  
}
  <bean id="user" class="pojo.User">

  <property name="dog" ref="dog"></property>

<property name="cat" ref="cat"></property>

</bean>

   <bean id="dog" class="pojo.Dog"></bean>
   
   <bean id="cat" class="pojo.Cat"></bean>

在这其中可见通过<property>标签进行应用类型的注入,需要通过<bean>标签的id引入,和ref="id"标签的相配,才能找到所有引用类型的地址,bean标签相当于通过Spring容器去进行实体类的创建。 

而对于@Autowired自动装配,也需要<bean>标签的id引入才行,因为,所有的类型需要被容器扫描到才能创建出相应的地址。


import org.springframework.beans.factory.annotation.Autowired;

public class User {
  @Autowired
  private Dog dog;
  @Autowired
  private Cat cat;

@Override
public String toString() {
    return "User [dog=" + dog + ", cat=" + cat + "]";
}  
}

在这其中,@Autowired只是创建出id,类似于<bean>文件一样,但是还需要在配置文件中配置相对应的类型,因为需要进行扫描。<bean id="dog" class="pojo.Dog"></bean>      <bean id="cat" class="pojo.Cat"></bean> 此处的id值与@Autowired中所创造的id值是相匹配的private Dog dog(id);  private Cat cat(id);因为进行扫描的时候,会通过id值的相同进行自动装配与注入

如果不想在配置文件中写<bean id="dog" class="pojo.Dog"></bean>  <bean id="cat" class="pojo.Cat"></bean>这两句话,就需要在Dog类与Cat类中进行@Component注解的配置,进行包扫描,使得Spring容器启动,到对象创建都可以使得配置文件扫描到这两个类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luolvzhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值