SayHello的实体类:
package com.langchao;

/**
* @ClassName: SayHello
* @description:
* @author: ZhangYawei
* @Date: 2019\2\23 15:59
**/
public class SayHello
{
private String name; private int age; private char sex; public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public int getAge()
{
return age;
} public void setAge(int age)
{
this.age = age;
} public char getSex()
{
return sex;
} public void setSex(char sex)
{
this.sex = sex;
} public void hellowSpring()
{
System.out.println("HellowSpring" + name+" " +age+" "+sex);
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("SayHello{");
sb.append("name='").append(name).append('\'');
sb.append(", age=").append(age);
sb.append(", sex=").append(sex);
sb.append('}');
return sb.toString();
}
}

Spring配置文件applicationContext.xml里配置SayHello的Bean

 <!--创建Bean:
class:类的全类名;通过反射在IOC容器里面创建Bean,所以必须有一个默认的无参构造
id:标识容器中的Bean,id唯一-->
<bean id="sayHello" class="com.langchao.SayHello">
<property name="name" value="赵丽颖"></property>
<property name="age" value="11"></property>
<property name="sex" value="女"></property>
</bean>

获取Bean:

   ApplicationContext ctx= new
ClassPathXmlApplicationContext("applicationContext.xml");
SayHello sayHello1 = (SayHello)ctx.getBean("sayHello");
sayHello1.hellowSpring();

打印结果:

Car的实体类:

package com.langchao;

/**
* @ClassName: Car
* @description: 车辆信息的Bean
* @author: ZhangYawei
* @Date: 2019\2\24 10:26
**/
public class Car
{
private String brand;
private String corp;
private double prize;
private int speed; public String getBrand()
{
return brand;
} public void setBrand(String brand)
{
this.brand = brand;
} public String getCorp()
{
return corp;
} public void setCorp(String corp)
{
this.corp = corp;
} public double getPrize()
{
return prize;
} public void setPrize(double prize)
{
this.prize = prize;
} public int getSpeed()
{
return speed;
} public void setSpeed(int speed)
{
this.speed = speed;
} public Car(String brand, String corp, double prize)
{
this.brand = brand;
this.corp = corp;
this.prize = prize;
} public Car(String brand, String corp, int speed)
{
this.brand = brand;
this.corp = corp;
this.speed = speed;
} public Car(String brand, String corp, double prize, int speed)
{
this.brand = brand;
this.corp = corp;
this.prize = prize;
this.speed = speed;
} public Car()
{
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("Car{");
sb.append("brand='").append(brand).append('\'');
sb.append(", corp='").append(corp).append('\'');
sb.append(", prize=").append(prize);
sb.append(", speed=").append(speed);
sb.append('}');
return sb.toString();
}
}

Spring配置文件applicationContext.xml里配置Car的Bean

<!--通过构造器的方式配置Bean:通过index下标-->
<bean id="car" class="com.langchao.Car">
<constructor-arg value="Baoma" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="4000000" index="2"></constructor-arg>
<constructor-arg value="250" index="3"></constructor-arg>
</bean>

获取Car:

  Car car = (Car)ctx.getBean("car");
System.out.println(car);

打印结果:

通过name赋值(如果赋的值里面有特殊符号:用<![CDATA[]]>包裹起来):

 <!--通过构造器配置Bean:通过name赋值-->
<bean id="car1" class="com.langchao.Car">
<constructor-arg value="Audi" name="brand"></constructor-arg>
<!--如果value值里面包含特殊符号:使用<![CDATA[]]>包裹起来-->
<constructor-arg name="corp">
<value><![CDATA[<上海热的很啊>]]></value>
</constructor-arg>
<constructor-arg value="240" name="speed"></constructor-arg>
</bean>

控制台:

通过idex和数据类型(type)赋值,走的是brand,corp,speed的有参构造:

<!--通过构造器配置Bean:通过下标和数据类型赋值-->
<bean id="car2" class="com.langchao.Car">
<constructor-arg value="FentTian" index="0"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="22222" type="int"></constructor-arg>
</bean>

控制台:

Person的实体类:

package com.langchao;

/**
* @ClassName: Person
* @description: 人的实体Bean
* @author: ZhangYawei
* @Date: 2019\2\24 11:01
**/
public class Person
{
private String name;
private int age;
private char sex;
private Car car; public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public int getAge()
{
return age;
} public void setAge(int age)
{
this.age = age;
} public char getSex()
{
return sex;
} public void setSex(char sex)
{
this.sex = sex;
} public Car getCar()
{
return car;
} public void setCar(Car car)
{
this.car = car;
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("Person{");
sb.append("name='").append(name).append('\'');
sb.append(", age=").append(age);
sb.append(", sex=").append(sex);
sb.append(", car=").append(car);
sb.append('}');
return sb.toString();
}
}

把Car引入到Person中:

<!--配置人的Bean:引用car的实体-->
<bean id="person" class="com.langchao.Person">
<property name="name" value="Tomo"></property>
<property name="age" value="21"></property>
<property name="sex" value="男"></property>
<property name="car" ref="car1"></property>
<property name="car.prize" value="323232"></property>
<!--内部Bean,不能被外部引用,只能在内部使用
<property name="car">
<bean id="car3" class="com.langchao.Car">
<property name="brand" value="Jery"></property>
<property name="corp" value="Tesila"></property>
<property name="prize" value="2122"> </property>
<property name="speed" value="250"></property>
</bean>
</property>-->
</bean>

控制台:

Map配置Bean的方法:

package com.langchao;

import java.util.Map;

/**
* @ClassName: NewPerson
* @description: 新人的实体Bean
* @author: ZhangYawei
* @Date: 2019\2\24 11:59
**/
public class NewPerson
{
private String name;
private int age;
private Map<String,Car> cars; public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public int getAge()
{
return age;
} public void setAge(int age)
{
this.age = age;
} public Map<String, Car> getCars()
{
return cars;
} public void setCars(Map<String, Car> cars)
{
this.cars = cars;
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("NewPerson{");
sb.append("name='").append(name).append('\'');
sb.append(", age=").append(age);
sb.append(", cars=").append(cars);
sb.append('}');
return sb.toString();
}
}

Spring配置文件applicationContext.xml里配置信息:

<bean id="newPerson" class="com.langchao.NewPerson">
<property name="name" value="大头儿子"></property>
<property name="age" value="21"></property>
<property name="cars">
<map>
<entry key="AA" value-ref="car"></entry>
<entry key="BB">
<bean class="com.langchao.Car">
<property name="brand" value="小头爸爸"></property>
<property name="corp" value="Modole2"></property>
<property name="prize" value="322222"></property>
<property name="speed" value="250"></property>
</bean>
</entry>
</map>
</property>
</bean>

控制台信息:

通过util:map(把map单独提取出来,可供多个Bean引用)命名空间和p命名空间配置,要导入util包和p命名空间的包:

<!--单独把map提取出来可供多个Bean引用-->
<util:map id="cars">
<entry key="AA" value-ref="car"/>
<entry key="BB" value-ref="car1"/>
<entry key="CC" value-ref="car2"/>
</util:map>
<!--p命名空间配置Bean:--> <bean id="person1" class="com.langchao.NewPerson" p:name="Rose" p:age="23" p:cars-ref="cars"></bean>

对应的car,car1,car2配置:

 <!--通过构造器的方式配置Bean:通过index下标-->
<bean id="car" class="com.langchao.Car">
<constructor-arg value="Baoma" index="0"></constructor-arg>
<constructor-arg value="Shanghai" index="1"></constructor-arg>
<constructor-arg value="4000000" index="2"></constructor-arg>
<constructor-arg value="250" index="3"></constructor-arg>
</bean> <!--通过构造器配置Bean:通过name赋值-->
<bean id="car1" class="com.langchao.Car">
<constructor-arg value="Audi" name="brand"></constructor-arg>
<!--如果value值里面包含特殊符号:使用<![CDATA[]]包裹起来-->
<constructor-arg name="corp">
<value><![CDATA[<上海热的很啊>]]></value>
</constructor-arg>
<constructor-arg value="240" name="speed"></constructor-arg>
</bean> <!--通过构造器配置Bean:通过下标和数据类型赋值-->
<bean id="car2" class="com.langchao.Car">
<constructor-arg value="FentTian" index="0"></constructor-arg>
<constructor-arg value="Shanghai" type="java.lang.String"></constructor-arg>
<constructor-arg value="22222" type="int"></constructor-arg>
</bean>

Person对象:

 NewPerson newPerson = (NewPerson)cxt.getBean("person1");
System.out.println(newPerson);

控制台信息:

集合Bean的配置,HeyMan的实体类;

package com.langchao;

import java.util.List;

/**
* @ClassName: HeyMan
* @description:
* @author: ZhangYawei
* @Date: 2019\2\25 10:11
**/
public class HeyMan
{
private String name;
private int age;
private List<Car> carss; public String getName()
{
return name;
} public void setName(String name)
{
this.name = name;
} public int getAge()
{
return age;
} public void setAge(int age)
{
this.age = age;
} public List<Car> getCarss()
{
return carss;
} public void setCarss(List<Car> carss)
{
this.carss = carss;
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("HeyMan{");
sb.append("name='").append(name).append('\'');
sb.append(", age=").append(age);
sb.append(", carss=").append(carss);
sb.append('}');
return sb.toString();
}
}

Spring配置文件applicationContext.xml里配置信息:

<!--单独把list提取出来可供多个Bean引用-->
<util:list id="carss">
<ref bean="car"/>
<ref bean="car1"/>
<ref bean="car2"/>
</util:list>
<!--p命名空间配置Bean:-->
<bean id="heyMan" class="com.langchao.HeyMan" p:name="倚天屠龙" p:age="24" p:carss-ref="carss"></bean>

控制台信息:

Properties配置属性值,DataSource实体类:

package com.langchao;

import java.util.Properties;

/**
* @ClassName: DataSource
* @description:
* @author: ZhangYawei
* @Date: 2019\2\25 10:18
**/
public class DataSource
{
private Properties properties; public Properties getProperties()
{
return properties;
} public void setProperties(Properties properties)
{
this.properties = properties;
} @Override
public String toString()
{
final StringBuilder sb = new StringBuilder("DataSource{");
sb.append("properties=").append(properties);
sb.append('}');
return sb.toString();
}
}

Spring配置文件applicationContext.xml里配置信息:

 <!--对Properties配置的Bean,进行赋值:-->
<bean id="dataSource" class="com.langchao.DataSource">
<property name="properties">
<props>
<prop key="url">www.baidu.com</prop>
<prop key="username">root</prop>
<prop key="password">root</prop>
<prop key="driver">mysql:dreiver.com</prop>
</props>
</property>
</bean>

控制台信息:

Spring配置Bean,为属性赋值的更多相关文章

  1. [原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. Spring(八):Spring配置Bean(一)BeanFactory&ApplicationContext概述、依赖注入的方式、注入属性值细节

    在Spring的IOC容器里配置Bean 配置Bean形式:基于xml文件方式.基于注解的方式 在xml文件中通过bean节点配置bean: <?xml version="1.0&qu ...

  3. Spring(四)--bean的属性赋值

    bean的属性赋值 1.需要的实体类 2.需要的配置文件 <?xml version="1.0" encoding="UTF-8"?> <be ...

  4. spring(四):spring中给bean的属性赋值

    spring中给bean的属性赋值 xml文件properties标签设置 <bean id="student" class="com.enjoy.study.ca ...

  5. 【Spring注解驱动开发】如何使用@Value注解为bean的属性赋值,我们一起吊打面试官!

    写在前面 在之前的文章中,我们探讨了如何向Spring的IOC容器中注册bean组件,讲解了有关bean组件的生命周期的知识.今天,我们就来一起聊聊@Value注解的用法. 项目工程源码已经提交到Gi ...

  6. Spring中<bean>标签之使用p标签配置bean的属性

    在spring的bean配置文件中我们常可以见到下面的例子: <bean id="user" class="com.sys.User" p:name-re ...

  7. 【spring源码系列】之【Bean的属性赋值】

    每次进入源码的世界,就像完成一场奇妙的旅行! 1. 属性赋值概述 上一篇讲述了bean实例化中的创建实例过程,实例化后就需要对类中的属性进行依赖注入操作,本篇将重点分析属性赋值相关流程.其中属性赋值, ...

  8. spring 配置bean

    Main(测试方法) public class Main { public static void main(String[] args) { //1.创建Spring 的IOC容器对象: //spr ...

  9. Spring配置bean的详细知识

    在Spring中配置bean的一些细节.具体信息请参考下面的代码及注释 applicationContext.xml文件 <?xml version="1.0" encodi ...

  10. spring 配置bean以及配置依赖 (2)

    目录 一.使用ref引用其他对象 二.通过有参构造器创建对象 1 通过index精确定位参数顺序 三.引用bean 1 使用内部bean 2 使用list,set 3 声明集合类型 四.其他 1 使用 ...

随机推荐

  1. sql server 索引碎片相关问题

    1.查看表的索引碎片情况 --改成当前库 use DB_Name --创建变量 指定要查看的表 declare @table_id int set @table_id=object_id('Table ...

  2. NIOS II With uCOSII

    1.如果使用uCOS,那么Qsys中Nios II核就不能使用外部中断控制器(EIC). 2.遇到很迷惑的问题,运行uCOSII的实例代码,总是在第二个OSTimeDlyHMSM(0, 0, 3, 0 ...

  3. PHP运行出现Notice : Use of undefined constant 的解决办法

    这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示.一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉 关闭 PHP 提示的方法 搜索php.i ...

  4. [java,2017-05-15] 内存回收 (流程、时间、对象、相关算法)

    内存回收的流程 java的垃圾回收分为三个区域新生代.老年代. 永久代 一个对象实例化时 先去看伊甸园有没有足够的空间:如果有 不进行垃圾回收 ,对象直接在伊甸园存储:如果伊甸园内存已满,会进行一次m ...

  5. redis-单线程架构

    单线程模型: redis中的数据结构并不全是简单的kv,还有list.hash等复杂的结构,这些结构很可能会进行细粒度的操作,比如在很长的列表偶棉添加一个元素,在hash当中或者删除一个对象,这样的一 ...

  6. VS2010 永久配置OpenCv2.4.9 及转换到COFF 期间失败:文件无效或损坏,解决方法

    1.下载OpenCv2.4.9(win pack):http://opencv.org/releases.html 下载完成后,进行解压(win7 64位系统) 2.环境配置,配置如下图所示: 找到p ...

  7. Mybatis的mapper文件中#和$的区别 以及 resultType和resultMap的区别

    一般#{}用于传递查询的参数,一般用于从dao层传递一个string或者其他的参数过来,mybatis对这个参数会进行加引号的操作,将参数转变为一个字符串. SELECT * FROM employe ...

  8. nginx的一次工作记录

    upstream fazhi_ui{ server ; } upstream fazhi_api{ server ; } server { listen ; server_name localhost ...

  9. java学习--equals

    Object类是所有类的基类. Object类有equals方法.而继承Object中的equals方法判断的是两个对象的引用是否相等,相当于"==",也就是说只有比较的两个对象为 ...

  10. Linux下编译安装FFmpeg

    FFmpeg官网:http://www.ffmpeg.org 官网介绍 FFmpeg is the leading multimedia framework, able to decode, enco ...