02-spring学习-配置bean
在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>
02-spring学习-配置bean的更多相关文章
- spring 学习之 bean 的注入方式 property和constructor-arg的使用方式
spring 学习之 bean 的注入方式 property和constructor-arg的使用方式. bean的注入方式: property 注入是: 通过setxx方法注入. construct ...
- Spring学习七----------Bean的配置之自动装配
© 版权声明:本文为博主原创文章,转载请注明出处 Bean的自动装配(Autowiring) no:不启用自动装配,此时需要手动注入.参考:Spring学习三----------注入方式 defaul ...
- Spring 学习笔记 Bean的作用域
在配置文件中定义Bean时,用户不但可以配置Bean的属性值以及相互之间的依赖关系,还可以定义Bean的作用域.作用域将对Bean的生命周期和创建方式产生影响.在低版本的Spring中,仅有两个作用域 ...
- 5.spring:注解配置 Bean
在classpath中扫描组件 组键扫描:能够从classpath下自动扫描,侦测和实例化具有特定注解的组件 特定的组件包括: ->@Componment:基于注解,标识一个受Spring管理的 ...
- Spring 学习之bean的理解
前言:对于使用Spring框架的开发人员来说,我们主要做的主要有两件事情:①开发Bean;②配置Bean;而Spring帮我们做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法来完成“依 ...
- Spring 注解配置Bean
一.使用注解配置Bean 1.注解 在类定义.方法定义.成员变量定义前使用.其简化<bean>标签,功能同<bean>标签.格式为: @注解标记名. 2.组件扫描 Spring ...
- spring FactoryBean配置Bean
概要: 实例代码具体解释: 文件夹结构 Car.java package com.coslay.beans.factorybean; public class Car { private String ...
- Spring学习十一----------Bean的配置之基于Java的容器注解@Bean
© 版权声明:本文为博主原创文章,转载请注明出处 @Bean -@Bean标识一个用于配置和初始化一个由SpringIOC容器管理的新对象的方法,类似于XML配置文件的<bean/> -可 ...
- Spring学习十----------Bean的配置之Autowired注解实现
© 版权声明:本文为博主原创文章,转载请注明出处 @Required -@Required注解适用于bean属性的setter方法 -这个注解仅仅表示,受影响的bean属性必须在配置时被填充,通过在b ...
随机推荐
- 关于使用jqmobi前端框架在phonegap平台上开发时的日期时间选择控件
jqmobi(appframework)作为Intel的一款html5移动前端框架,以其自身轻量级和容易上手获得了很多移动HTML5开发者的喜爱,相对于jquerymobile,它可以说将jQuery ...
- poj 2773欧几里德
Happy 2006 Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 5957 Accepted: 1833 Descri ...
- luogu P2254 [NOI2005]瑰丽华尔兹
题目链接 luogu P2254 [NOI2005]瑰丽华尔兹 题解 为什么我我我不放放放bzoj的链接呢? 因为打的暴力啊,然后bzojT了呀QAQQQQQ(逃 然后luogu竟然过了呀呀呀 dp[ ...
- [BZOJ5250][九省联考2018]秘密袭击(DP)
5250: [2018多省省队联测]秘密袭击 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 0[Submit][Status][D ...
- BZOJ 3450 Tyvj1952 Easy(期望)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3450 [题目大意] 给出一个字符串,包含o,x和?,一个字符串的得分为 每段连续的o的 ...
- 【最大权森林/Kruskal】POJ3723-Conscription
[题目大意] 招募m+n个人每人需要花费$10000,给出一些关系,征募某个人的费用是原价-已招募人中和他亲密值的最大值,求最小费用. [思路] 人与人之间的亲密值越大,花费越少,即求出最大权森林,可 ...
- [Luogu1843]奶牛晒衣服
题目大意: 你要晒n件衣服,第i件衣服有w[i]滴水, 每件衣服每秒钟会自然风干a滴水,将这件衣服放入烘干机中每秒钟会烘干a+b滴水. 一秒钟不可以拆开,问晒干所有的衣服至少要多少时间? 思路: 二分 ...
- Web API使用记录系列(四)OAuth授权与身份校验
呼,开干第四篇,基于OWIN搭建OAuth认证授权服务器与接口身份校验. OAuth包含授权码模式.密码模式.客户端模式和简化模式,这里我们文章记录的是密码模式和客户端模式. 目录 引用安装 授权处理 ...
- linux下activityMQ安装
>下载 到ActiveMQ官网,找到下载点. 目前, 官网为http://activemq.apache.org/ >启动 下载到本机,并解压 wget http://apache.f ...
- Java9 modules (Jigsaw)模块化迁移
要点 通过模块化的方式开发应用程序,实现更好的设计,如关注点分离和封装性. 通过Java平台模块化系统(JPMS),开发者可以定义他们的应用程序模块,决定其他模块如何调用他们的模块,以及他们的模块如何 ...