博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA入门[3]—Spring依赖注入
阅读量:6273 次
发布时间:2019-06-22

本文共 2727 字,大约阅读时间需要 9 分钟。

Spring支持属性注入和构造器注入,它支持XML和注解两种方式。本文介绍Spring控制反转容器加载包含beans的XML文件,实现依赖注入。

一、创建bean实例

暂且抛开对象依赖,我们先看下如何通过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。

 
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=书籍}}

 

三、依赖注入

依赖注入通常有以下两种方式:

  • 设置注入:IoC容器使用属性的setter方法来注入被依赖的实例。
  • 构造注入:IoC容器使用构造器来注入被依赖的实例。

1.设置注入

①新建类product,它依赖前面的Category类。

 
View Code

 

②.配置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,如需转载请自行联系原作者

你可能感兴趣的文章
C++类设计的一些心得
查看>>
tableVIew删除时的delete按钮被挡住时重写的方法
查看>>
读cookie中文字符乱码问题
查看>>
招募译者翻译并发数据结构
查看>>
普通表转换为分区表
查看>>
Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较
查看>>
性能优化总结(六):预加载、聚合SQL应用实例
查看>>
Drill官网文档翻译四 Drill的性能
查看>>
一步一步教你用PHP+MySql搭建网站 No.1 主页&数据库连接
查看>>
JAVA网络编程之Socket
查看>>
翻翻git之---偏向iOS风格的Switch ToggleSwitch
查看>>
Python 全栈开发 -- 开发环境篇
查看>>
python dict type like json
查看>>
颠覆大数据分析之Spark VS分布式共享内存系统
查看>>
深入理解 Android 控件
查看>>
安卓版手机app登录后在后台运行固定时间和被杀死后固定时间重启后重新登录...
查看>>
手把手教你用Hexo+Github 搭建属于自己的博客
查看>>
http缓存知识
查看>>
Go 时间交并集小工具
查看>>
iOS 多线程总结
查看>>