Spring入门1——简单的注入

Spring入门1——简单的注入

注:本例的完整代码在网站:http://how2j.cn?p=54321上
本片博客代码链接:http://how2j.cn/k/spring/spring-injection/88.html#nowhere

1、简单注入

1.1 IOC(Inversion Of Control )反转控制
1.2 DI(Dependency Inject) 依赖注入
网上的相关教程不适合我这种菜鸟理解,所以先上代码

public class Category {
   public int getId() {
       return id;
   }
   public void setId(int id) {
       this.id = id;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   private int id;
   private String name;
}
//Spring 类
public class TestSpring {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(
                new String[] { "applicationContext.xml" });
        Category c = (Category) context.getBean("c");
        //传统的方式为new一个对象,上面的代码是使用Spring生产的方式
        System.out.println(c.getName());
    }
}


<beans>
    <bean name="c" class="com.how2java.pojo.Category">
        <property name="name" value="category 1" />
    bean>
beans>

下面进行解释上面代码的具体作用
首先,在TestSpring.java中,使用ClassPathXmlApplicationContext来读取配置文件,然后在xml文件中实例化bean对象,输出的时候当然为name的value值"category 1";
上面的实例就相当于为name属性注入了category 1字符串

2、注入两个对象

当注入两个对象的时候,就需要ref关键字,主要是增加了Product类和改变了配置文件

public class Product {
    private int id;
    private String name;
    private Category category;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Category getCategory() {
        return category;
    }
    public void setCategory(Category category) {
        this.category = category;
    }
}

xmL文件变为如下


<beans>
    <bean name="c" class="com.how2java.pojo.Category">
        <property name="name" value="category 1" />
    bean>
    <bean name="p" class="com.how2java.pojo.Product">
        <property name="name" value="product1" />
        <property name="category" ref="c" />
    bean>
beans>

测试类如下:

public class TestSpring {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationContext.xml" });
        Product p = (Product) context.getBean("p");
        System.out.println(p.getName());
        System.out.println(p.getCategory().getName());
    }
}

ref属性:查找当前配置文件里的bean

你可能感兴趣的:(java)