spring框架之依赖注入

1,什么是依赖注入

   依赖注入是指在 Spring IOC 容器创建对象的过程中,将所依赖的对象通过配置进行注入。我们可以通过依赖注入的方式来降低对象间的耦合度。对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使对象之间的耦合越小越好。
    依赖注入是实现控制反转的一种设计方法,并不是说依赖注入等于控制反转(Inversion of Control,IoC)。控制反转是思想,依赖注入是具体实现方式.

2,setter注入

第一步,创建一个实体类。

public class People {
    private Integer  pid;
    String pname;
    String address;
    String psex;

    public Integer getPid() {
        return pid;
    }

    public String getPname() {
        return pname;
    }

    public String getAddress() {
        return address;
    }

    public String getPsex() {
        return psex;
    }

    public void setPid(Integer pid) {
        this.pid = pid;
    }

    public void setPname(String pname) {
        this.pname = pname;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public void setPsex(String psex) {
        this.psex = psex;
    }

    @Override
    public String toString() {
        return "People{" +
                "身份证号是=" + pid +
                ", 姓名是='" + pname + '\'' +
                ", 家庭地址是='" + address + '\'' +
                ", 性别是='" + psex + '\'' +
                '}';
    }
}

2,创建xml文件

在mian包下的resource包下创建

 右键选择new 在选择xml configuration file 在选择 spring confile ,这是idea已经配置好的xml文件。

 id是别称,且只能是唯一,容器的底层是Map集合,id是唯一,属性值则可以重复。 与test方法对应, class是对应的实体类。

<property >中的name属性值 是与实体类对应的属性,value是要赋的值。

<bean id="p" class="pojo.People">
    <property name="pid" value="001"></property>
    <property name="pname" value="张三"></property>
    <property name="address" value="湖北武汉"></property>
    <property name="psex" value="男"></property>
</bean>

3,输入结果

创建测试类

getBean中的第一个参数 则和xml中的别称一致。

 @Test
    public void test(){
//启动IOC容器
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean-xl.xml");
        People people = context.getBean("p",People.class);
        System.out.println(people);
    }

输出的结果是

 

3,constructor方法注入

则需要在实体类中增加有参构造函数,否则会报错。

  public People(Integer pid, String pname, String address, String psex) {
        this.pid = pid;
        this.pname = pname;
        this.address = address;
        this.psex = psex;
        System.out.println("有参数的构造方法");
    }

在xml的区别则是setter用的property,则构造方法也能够的是constructor-arg属性

 <bean id="p1" class="pojo.People">
        <constructor-arg  name="pid" value="002"></constructor-arg>
        <constructor-arg  name="pname" value="李四"></constructor-arg>
        <constructor-arg  name="address" value="山东青岛"></constructor-arg>
        <constructor-arg  name="psex" value="男"></constructor-arg>

    </bean>

在测试类表现为一致

  @Test
    public void test1(){
        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean-xl.xml");
        People people = context.getBean("p1",People.class);
        System.out.println(people);
    }

最终输出结果是:

一定要注意的是,用构造方法则在实体类中加构造方法

还有一种是基于注解的注入,这种注入比较简单。在这里不做探讨

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值