在spring的IOC容器中配置Bean

一,在xml中通过bean节点来配置bean:

class:bean的类名,通过反射的方式在IOC容器中创建Bean,所以要求bean中必须有无参的构造器
id:标识容器中的bean,id唯一

在IOC容器读取bean配置创建Bean实例之前,必须对他进行初始化,只有实例化之后,才可以从IOC容器获取bean实例并使用。

spring提高了两种类型的IOC实现。

applicationContext主要实现类:

applicationContext在初始化上下文的shi'h就实例化所有单例的bean。

从IOC容器获取bean的方式:

//利用ID定位到IOC容器的bean
HelloWord helloword=(HelloWord) ctx.getBean("helloWord");//getBean里面的参数是配置的bean的ID
//利用类型返回IOC容器中的bean,但要求该容器中只能有一种该类型的bean
HelloWord helloword2=(HelloWord) ctx.getBean(HelloWord.class);//getBean里面的参数是配置的bean的ID

spring依赖注入的三种方式:

1,属性注入

2,构造器注入,

3,工厂方法注入(很少使用,不推荐)

第二种方法:

例子:

创建一个car类:下面有两个重载的构造方法。

package com.spring.beans;

public class Car {

    private String brand;
private String crop;
private int price;
private double maxSpeed; public Car(String brand, String crop, int price) {
super();
this.brand = brand;
this.crop = crop;
this.price = price;
} public Car(String brand, String crop, double maxSpeed) {
super();
this.brand = brand;
this.crop = crop;
this.maxSpeed = maxSpeed;
} @Override
public String toString() {
return "Car [brand=" + brand + ", crop=" + crop + ", price=" + price + ", maxSpeed=" + maxSpeed + "]";
} }

添加配置:通过constructor-arg配置value,分别对应构造方法里面的参数。

由于上面的类有两个构造方法,使用构造器注入属性值可以指定参数的位置和参数类型,用以区分重载的构造器

<!-- 通过构造方法配置bean的属性 -->
<bean id="car" class="com.spring.beans.Car" >
<constructor-arg value="Audi" index="0"></constructor-arg>
<constructor-arg value="shanghai" index="1"></constructor-arg>
<constructor-arg value="3000" index="2" type="double"></constructor-arg>
</bean> <!-- 使用构造器注入属性值可以指定参数的位置和参数类型,用以区分重载的构造器-->
<bean id="car2" class="com.spring.beans.Car" >
<constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg>
<constructor-arg value="shanghai" index="1" type="java.lang.String"></constructor-arg>
<constructor-arg value="200" index="2" type="int"></constructor-arg>
</bean>

在main方法里面使用:把car打印出来(调用car的tostring方法)

         //1,创建spring的IOC容器对象
//ApplicationContext代表IOC容器
ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");//指定配置文件名 Car car=(Car) ctx.getBean("car");
Car car2=(Car) ctx.getBean("car2");
System.out.println(car);
System.out.println(car2);

结果:

上面的配置出来这个写法,还可以写成value子节点的形式:

    <bean id="car2" class="com.spring.beans.Car" >
<constructor-arg value="Audi" index="0" type="java.lang.String"></constructor-arg>
<constructor-arg value="shanghai" index="1" type="java.lang.String"></constructor-arg>
<constructor-arg type="double">
<value>250</value>
</constructor-arg>
</bean>

最新文章

  1. Kettle使用jndi mssqlserver
  2. Python 3.4 链接mysql5.7 数据库使用方法
  3. bzoj 2438 [中山市选2011]杀人游戏(SCC+概率)
  4. uvalive5818 uva12376 As Long as I Learn, I Live
  5. perl学习(2) 基本数据类型等
  6. UVALive 6869(后缀数组)
  7. node c++多线程插件 第二天 c++指针
  8. return和throw某些特性相似
  9. win2016 配置IIS 和mysql5.7 迁移数据表的两个小坑
  10. js返回上一页并刷新、返回上一页、自动刷新页面
  11. Sql 按照指定天数时间段查询
  12. 重写Override ToString()方法
  13. 1、My Scripts
  14. Oracle 一个中文汉字 占用几个字节,由Oracle中字符集编码决定
  15. PDF文件转换成Excel表格的操作技巧
  16. ACM 常见词汇
  17. 『备忘录』elasticsearch 去重分页查询
  18. 命令行下class redis not found 解决
  19. swift基本运算
  20. Scala构建工具sbt的配置

热门文章

  1. 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)
  2. ASP.NET总结——更改后
  3. 【BZOJ 3881】【COCI 2015】Divljak
  4. AGC 022 B - GCD Sequence
  5. Spring beans.xml
  6. [转]jQuery 双击事件(dblclick)时,不触发单击事件(click)
  7. [转]基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
  8. http://www.pass.org
  9. Delphi DevExpress下载
  10. 拍拍CPS入门使用