阿里P7浅谈Java的Spring Bean
1、简单java 类,实现 Serializable 接口
package com.curtis.bean;import java.io.Serializable;@SuppressWarnings("serial")public class Person implements Serializable { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; }}
2、spring jar包
commons-logging-1.1.3.jar
spring-aop-4.3.3.RELEASE.jar
spring-beans-4.3.3.RELEASE.jar
spring-context-4.3.3.RELEASE.jar
spring-core-4.3.3.RELEASE.jar
spring-expression-4.3.3.RELEASE.jar
3、spring 配置文件
名字叫:applicationContext.xml 这个名称可以自己定义,没必要非要叫applicationContext.xml
applicationContext.xml 文件中
案例1: <bean id="person" class="com.curtis.bean.Person"> <property name="name" value="Jerry"></property> <property name="age" value="27" /> </bean> ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); System.out.println(ctx.getBean("person",Perspn.class));
说明:property 标签中的name 属性对应java bean中set 方法后面的内容,后面的value是java bean 对应属性赋值;getBean方法如果不指明第二个参数,就需要强制类型转换定义的bean如果在applicationContext.xml 文件中只出现一次,可以通过类名.class 的方式,无需传第二个参数,不需要进行强制类型转换Person p1=(Person) ctx.getBean("person");System.out.println(ctx.getBean(Perspn.class));java bean 中有多个属性,可以给部分属性进行赋值,没有被赋值的属性是对应数据类型的默认值由于是通过反射的方式,建议明文在java bean 中定义无参数的构造方法结束标签可以在property 上面直接关闭也可以通过value 标签进行赋值<value>Jerry</value>bean 标签、id属性、class属性property 标签 name属性、value属性
案例2:public Person(String name) { // 构造方法 this.name=name;}<bean id="person" class="com.curtis.bean.Person"> <constructor-arg value="Tom"></constructor-arg></bean>
说明:通过构造方式的给属性赋值的方式,需要定义无参的构造方法;如果出现构造方法的重载需要通过索引(index)值,或者参数数据类型进行明确到底调用的是哪个构造方法;
index 索引从0开始
type java.lang.String 等
上面两种可以混用
如果只有一个有参的构造方法,可以一句参数列表依次给参数赋值。
如果是数值类型,数据会自动进行转换(String转成数值类型);
<bean id="car" class="com.atguigu.spring.helloworld.Car"> <constructor-arg value="KUGA" index="1"></constructor-arg> <constructor-arg value="ChangAnFord" index="0"></constructor-arg> <constructor-arg value="250000" type="float"></constructor-arg></bean>
案例3:特殊字符<value><![CDATA[<深圳>]]></value>
案例4:引用类型 ref人有汽车,一个Person 的类,也有一个Car 的类分别通过<bean></bean>定义Person、CarPerson bean中可以通过ref 对Car 进行引用package com.curtis.bean;import java.io.Serializable;@SuppressWarnings("serial")public class Car implements Serializable { private String brand; private double price; public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } @Override public String toString() { return "Car [brand=" + brand + ", price=" + price + "]"; } public Car() { // TODO Auto-generated constructor stub }}package com.curtis.bean;import java.io.Serializable;@SuppressWarnings("serial")public class Person implements Serializable { private String name; private Integer age; private Car car; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Car getCar() { return car; } public void setCar(Car car) { this.car = car; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; } public Person() { } public Person(String name) { this.name=name; }}applicationContext.xml 文件中<bean id="person" class="com.curtis.bean.Person"> <property name="name" value="Curtis" /> <property name="car" ref="car"></property></bean><bean id="car" class="com.curtis.bean.Car"> <property name="brand" value="Baoma" /> <property name="price" value="500000" /></bean>
案例5:内部bean<bean id="person" class="com.curtis.bean.Person"> <property name="car"> <bean class="com.curtis.bean.Car"> <property name="brand" value="Audi"></property> </bean> </property></bean>
说明:bean 在property 标签内部;内部bean 不需要指明id属性
案例6:list一个人可能有多辆车package com.curtis.bean;import java.io.Serializable;import java.util.List;@SuppressWarnings("serial")public class Person implements Serializable { private String name; private Integer age; private List<Car> car; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public List<Car> getCar() { return car; } public void setCar(List<Car> car) { this.car = car; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", car=" + car + "]"; } public Person() { // TODO Auto-generated constructor stub }}<bean id="car1" class="com.curtis.bean.Car"> <property name="brand" value="Baoma" /> <property name="price" value="500000" /></bean><bean id="person" class="com.curtis.bean.Person"> <property name="name" value="Curtis" /> <property name="car"> <list> <bean class="com.curtis.bean.Car"> <property name="brand" value="比亚迪" /> </bean> <ref bean="car1"/> </list> </property></bean>
写在最后:欢迎留言讨论,加关注,持续更新!!!
阿里P7浅谈Java的Spring Bean的更多相关文章
- 阿里P7浅谈SpringMVC
一.前言 既然是浅谈 SpringMVC,那么我们就先从基础说起,本章节主要讲解以下内容: 1.三层结构介绍 2.MVC 设计模式介绍 3.SpringMVC 介绍 4.入门程序的实现 注:介绍方面的 ...
- !! 浅谈Java学习方法和后期面试技巧
浅谈Java学习方法和后期面试技巧 昨天查看3303回复33 部落用户大酋长 下面简单列举一下大家学习java的一个系统知识点的一些介绍 一.java基础部分:java基础的时候,有些知识点是非常重要 ...
- 浅谈Java的集合框架
浅谈Java的集合框架 一. 初识集合 重所周知,Java有四大集合框架群,Set.List.Queue和Map.四种集合的关注点不同,Set 关注事物的唯一性,List 关注事物的索引列表,Q ...
- 浅谈java类集框架和数据结构(2)
继续上一篇浅谈java类集框架和数据结构(1)的内容 上一篇博文简介了java类集框架几大常见集合框架,这一篇博文主要分析一些接口特性以及性能优化. 一:List接口 List是最常见的数据结构了,主 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
随机推荐
- asp.net怎样实现批量下载文件(非打包形式下载)
问题: 我想实现的是一个一个的下载. 比如我有一个文件列表.通过checkbox选择.通过单击下载按钮下载选中文件. 百度到都是用打包形式实现批量下载. 这是我自己写的代码,但是点击下载后只能下载一个 ...
- 利用python批量修改word文件名的方法示例
利用python批量修改word文件名的方法示例 最近不小心把硬盘给格式化了,由于当时的文件没有备份,所以一下所有的文件都没有了,于是只能采取补救措施,用文件恢复软件恢复了一部分的数据出来,但是恢复完 ...
- delphi 根据特殊符号字符获取字符串前或后的字符
function GetBefore(substr, str:string):string; {©Drkb v.3(2007): www.drkb.ru, ®Vit (Vitaly Nevzorov) ...
- RocketMQ共包含9个模块
rocketmq-common:通用的枚举.基类方法.或者数据结构,包名有admin.consumer.filter.hook.message rocketmq-remoting:使用netty的客户 ...
- 树莓派连接显示器后设置ssh服务开机自动开启
进入命令行,然后执行: cd /boot sudo touch ssh sudo restart -r now 然后就重新启动了,重启好了会有依据提示. 然后可以输入ssh localhost进行一下 ...
- EasyNetQ使用(十)【用EasyNetQ.Hosepipe重新提交错误信息】
EasyNetQ.Hosepipe是EasyNetQ队列管理工具.用来取回队列中的消息并重新发布这些消息.还可以用它来检测错误队列,并重试发布消息. 用法 EasyNetQ.Hosepipe.exe ...
- java面试考点-面试准备
面试前准备 了解应试公司相关信息及岗位信息 系统复习基础知识 对原公司负责项目进行梳理 阅读常规框架源码 学习典型架构案例 针对招聘文案准备加分项 相关技能 基础知识:进程/线程,TCP协议,HTTP ...
- 【数据库开发】 C连接mysql——常用的函数
转载:http://blog.chinaunix.net/uid-26758020-id-3288633.html 1.MYSQL *mysql_init(MYSQL *mysql) 为mysq ...
- mysql 查询某一天数据
某个场景下需要查询某一天的数据,例如2017/9/27这一天所有的数据量,有以下几个方法. SELECT * FROM cms_book_statistics WHERE substring(Conv ...
- fastadmin 后台view data-source关联报500错误问题
data-source 关联模型通过id关联被关联表的name字段,没有name字段就报500