02-spring学习-配置bean
2024-09-05 21:19:28
在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>
最新文章
- Kettle使用jndi mssqlserver
- Python 3.4 链接mysql5.7 数据库使用方法
- bzoj 2438 [中山市选2011]杀人游戏(SCC+概率)
- uvalive5818 uva12376 As Long as I Learn, I Live
- perl学习(2) 基本数据类型等
- UVALive 6869(后缀数组)
- node c++多线程插件 第二天 c++指针
- return和throw某些特性相似
- win2016 配置IIS 和mysql5.7 迁移数据表的两个小坑
- js返回上一页并刷新、返回上一页、自动刷新页面
- Sql 按照指定天数时间段查询
- 重写Override ToString()方法
- 1、My Scripts
- Oracle 一个中文汉字 占用几个字节,由Oracle中字符集编码决定
- PDF文件转换成Excel表格的操作技巧
- ACM 常见词汇
- 『备忘录』elasticsearch 去重分页查询
- 命令行下class redis not found 解决
- swift基本运算
- Scala构建工具sbt的配置
热门文章
- 【BZOJ 2744】 2744: [HEOI2012]朋友圈 (最大团,二分图匹配,构图)
- ASP.NET总结——更改后
- 【BZOJ 3881】【COCI 2015】Divljak
- AGC 022 B - GCD Sequence
- Spring beans.xml
- [转]jQuery 双击事件(dblclick)时,不触发单击事件(click)
- [转]基于全注解的Spring3.1 mvc、myBatis3.1、Mysql的轻量级项目
- http://www.pass.org
- Delphi DevExpress下载
- 拍拍CPS入门使用