美文网首页
spring学习笔记1 依赖注入

spring学习笔记1 依赖注入

作者: 奔跑的荷兰猪 | 来源:发表于2017-08-17 22:56 被阅读0次

maven中配置spring依赖

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.3.10.RELEASE</version>
</dependency>

我们创建一个User类,User类内部依赖一个Account类。

public class User {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    private String name;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    private int age;
    private int sex;

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    private Account account;



    @Override
    public String toString() {
        return "account balance is "+this.account.getBalance();
    }
}

public class Account {
    public float getBalance() {
        return balance;
    }

    public void setBalance(float balance) {
        this.balance = balance;
    }
    public Account(){
        this.balance = 30.0f;
    }
    private float balance;
}

如果不使用依赖注入,我们需要手动new一个Account类,然后通过传递给User类。使用spring后我们可以通过配置spring bean来让容器自动管理这些依赖。下面我们配置一下beans.xml。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
        >
    <bean name="user" class="com.hn.spring.User" scope="prototype">
        <property name="account" ref="account"/>
    </bean>
    <bean name="account" class="com.hn.spring.Account" scope="prototype"/>
</beans>

我们配置了user bean的account属性,使用set注入了依赖。我们bascope 设置为prototype,每次都重新实例化对象。
我们编写代码测试一下:

public class TestUser {

    @Test
    public void testSingletonScope(){
        ApplicationContext context =  new ClassPathXmlApplicationContext("beans.xml");
        User user1 = context.getBean(User.class);
        User user2 = context.getBean(User.class);
        Assert.assertNotEquals(user1,user2);
    }

    @Test
    public void testProtypeScope(){
        ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
        Account account1 = context.getBean(Account.class);
        Account account2 = context.getBean(Account.class);
        Assert.assertNotEquals(account1,account2);
    }
}

首先我们加载beans.xml用来创建context,然后获取User bean,由于我们设置了原型类型,所以创建的两个对象应该是不同的。

相关文章

网友评论

      本文标题:spring学习笔记1 依赖注入

      本文链接:https://www.haomeiwen.com/subject/fgxorxtx.html