本文共 2727 字,大约阅读时间需要 9 分钟。
Spring支持属性注入和构造器注入,它支持XML和注解两种方式。本文介绍Spring控制反转容器加载包含beans的XML文件,实现依赖注入。
暂且抛开对象依赖,我们先看下如何通过Spring容器创建bean实例。这里要用到Spring的控制反转容器ApplicationContext,它的getBean方法可以创建bean实例
1.在Maven项目的pom.xml添加spring依赖项。
4.3.5.RELEASE org.springframework spring-core ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version}
2. 新建java类Category。
3. 新建xml配置文件,路径为resources/spring-config.xml,用来配置bean对象。
可以为bean指定一个id或name作为标识。
4. 调用。
首先使用ClassPathXmlApplicationContext加载配置文件,然后通过ApplicationContext的getBean方法获取Category实例。
public class Main {public static void main(String[] args){//创建bean实例ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-config.xml"); Category category=applicationContext.getBean(Category.class);//设置属性category.setCateId(1); category.setCateName("书籍");//显示结果System.out.println(category.toString()); }}
运行结果为:
商品类型 id=1,name=书籍
1.为Category添加构造函数:
public Category(int cateId,String cateName){this.cateId=cateId;this.cateName=cateName;}
2.修改xml配置
向构造函数传参有两种配置方式。
①通过指定参数名name传递参数
②通过指定参数索引顺序index传递参数
③修改main调用进行测试。
public class Main {public static void main(String[] args){//创建bean实例ApplicationContext applicationContext=new ClassPathXmlApplicationContext("spring-config.xml"); Category category=applicationContext.getBean(Category.class);//输出默认值System.out.println(category.toString());//设置属性category.setCateId(1); category.setCateName("书籍"); System.out.println(category.toString());//运行结果:// 商品类型 id=99,name=其他// 商品类型 id=1,name=书籍}}
依赖注入通常有以下两种方式:
1.设置注入
①新建类product,它依赖前面的Category类。
②.配置xml
在spring-config.xml中新增bean节点,对应的class属性为Product。product通过配置property元素来调用相应的setter方法以设置值,需要注意的是prodcuctCategory是通过ref来配置对category的引用。
③.main调用
Product product=applicationContext.getBean(Product.class);System.out.println(product.toString());
2.、构造注入
①为product新增构造函数。
public Product(int productId,String productName,Category category){this.productId=productId;this.productName=productName;this.productCategory=category;}
②修改配置文件 spring-config.xml 中的product bean。
③运行结果同设置注入一样
源码:
本文转自 陈敬(Cathy) 博客园博客,原文链接:http://www.cnblogs.com/janes/p/6378663.html,如需转载请自行联系原作者