spring5 (一) 属性配置-XML方式
创建一个maven工程
在pom.xml 添加spring的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.softtool</groupId><artifactId>spring001</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId><version>1.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.0.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.0.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.0.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>5.0.7.RELEASE</version></dependency></dependencies>
</project>
创建实体类
package com.softtool;public class HelloWorld {private String name;public HelloWorld(){}public HelloWorld(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public void hello() {System.out.println(name);}
}
创建一个applicationContext.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="helloWorld" class="com.softtool.HelloWorld"><property name="name" value="hello world"></property></bean>
</beans>
创建测试类
public class Main {public static void main(String[] args) {ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");helloWorld.hello();;}
}
#运行程序
十一月 02, 2018 9:17:32 下午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@46ee7fe8: startup date [Fri Nov 02 21:17:32 CST 2018]; root of context hierarchy
十一月 02, 2018 9:17:32 下午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
hello worldProcess finished with exit code 0
运行成功了,控制台中打印出来了hello world
类图
我们看到, ApplicationContext
是一个接口,代表容器,他有两个实现类,一个是ClassPathXmlApplicationContext
一个是FileSystemXmlApplicationContext
我们使用的是ClassPathXmlApplicationContext
从类路径中加载配置文件。
读取类的方法有很多,如下
我们使用
HelloWorld helloWorld = (HelloWorld) ac.getBean("helloWorld");
getBean里的 helloWorld 就是对应applicationContext.xml里配置的helloWorld
这些getBean方法是ApplicationContext
继承自BeanFactory
通过构造方法获取
创建两个类
Car
package com.softtool;public class Car {private String name;private String color;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getColor() {return color;}public void setColor(String color) {this.color = color;}@Overridepublic String toString() {return "Car{" +"name='" + name + '\'' +", color='" + color + '\'' +'}';}
}
Person
package com.softtool;public class Person {private String name;private Car car;private Integer age;private Integer value;public String getRemark() {return remark;}public void setRemark(String remark) {this.remark = remark;}private String remark;public Person() {}public Integer getAge() {return age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", car=" + car +", age=" + age +", value=" + value +", remark='" + remark + '\'' +'}';}public void setAge(Integer age) {this.age = age;}public Integer getValue() {return value;}public void setValue(Integer value) {this.value = value;}public Person(String name, Car car) {this.name = name;this.car = car;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Car getCar() {return car;}public void setCar(Car car) {this.car = car;}}
在配置文件中配置
<bean id="car" class="com.softtool.Car"><property name="name" value="BMW"></property><property name="color" value="Red"></property></bean><bean id="person" class="com.softtool.Person"><constructor-arg value="wang"></constructor-arg><constructor-arg ref="car"></constructor-arg></bean>
运行
package com.softtool;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Main {public static void main(String[] args) {ApplicationContext ac= new ClassPathXmlApplicationContext("applicationContext.xml");Person person = (Person) ac.getBean("person");System.out.println(person.toString());}
}
运行结果
十一月 08, 2018 10:39:33 上午 org.springframework.context.support.ClassPathXmlApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@46ee7fe8: startup date [Thu Nov 08 10:39:33 CST 2018]; root of context hierarchy
十一月 08, 2018 10:39:33 上午 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext.xml]
Person{name='wang', car=Car{name='BMW', color='Red'}, age=null, value=null, remark='null'}
使用内部Bean
在配置文件中配置
<bean id="person2" class="com.softtool.Person"><property name="name" value="zhangsan"></property><property name="age" value="20"></property><property name="car"><bean class="com.softtool.Car"><property name="name" value="Ben"></property><property name="color" value="Blue"></property></bean></property></bean>
测试及程序
Person person2 = (Person) ac.getBean("person2");System.out.println(person2.toString());//输出//shPerson{name='zhangsan', car=Car{name='Ben', color='Blue'}, age=20, value=null, remark='null'}
集合属性
测试类
package com.softtool;import java.util.List;public class SiCong {private String name;private List<Car> cars;public String getName() {return name;}public void setName(String name) {this.name = name;}public List<Car> getCars() {return cars;}public void setCars(List<Car> cars) {this.cars = cars;}@Overridepublic String toString() {return "SiCong{" +"name='" + name + '\'' +", cars=" + cars +'}';}
}
配置xml
<bean class="com.softtool.SiCong"><property name="name" value="王思聪"/><property name="cars"><list><ref bean="car"></ref><bean class="com.softtool.Car"><property name="name" value="福特"></property><property name="color" value="Blue"></property></bean></list></property></bean>
测试及程序
SiCong siCong = (SiCong) ac.getBean(SiCong.class);System.out.println(siCong.toString());
//SiCong{name='王思聪', cars=[Car{name='BMW', color='Red'}, Car{name='福特', color='Blue'}]}
MAP
测试类
package com.softtool;import java.util.List;
import java.util.Map;public class MapPerson {private String name;private Map<String,Car> map;public String getName() {return name;}public void setName(String name) {this.name = name;}public Map<String, Car> getMap() {return map;}public void setMap(Map<String, Car> map) {this.map = map;}@Overridepublic String toString() {return "MapPerson{" +"name='" + name + '\'' +", map=" + map +'}';}
}
配置xml
<bean class="com.softtool.MapPerson"><property name="name" value=""/><property name="map"><map><entry key="周润发" value-ref="car"/><entry key="刘德华"><bean class="com.softtool.Car"><property name="name" value="福特"></property><property name="color" value="Blue"></property></bean></entry></map></property></bean>
运行
MapPerson mapPerson = (MapPerson) ac.getBean(MapPerson.class);System.out.println(mapPerson.toString());//MapPerson{name='', map={周润发=Car{name='BMW', color='Red'}, 刘德华=Car{name='福特', color='Blue'}}}
Properties
package com.softtool;import java.util.Properties;public class ConfigProperties {private Properties properties;public Properties getProperties() {return properties;}public void setProperties(Properties properties) {this.properties = properties;}@Overridepublic String toString() {return "ConfigProperties{" +"properties=" + properties +'}';}
}
配置
<bean class="com.softtool.ConfigProperties"><property name="properties"><props><prop key="user">root</prop><prop key="password">21345</prop></props></property></bean>
测试
ConfigProperties properties = ac.getBean(ConfigProperties.class);System.out.println(properties.toString());
//ConfigProperties{properties={user=root, password=21345}}
##使用P标签 配置
需要引入p命名空间xmlns:p="http://www.springframework.org/schema/p"
<bean id="pCar" class="com.softtool.Car" p:name="宝马" p:color="银色"></bean>
测试
Object pCar = ac.getBean("pCar");System.out.println(pCar.toString());//Car{name='宝马', color='银色'}
自动装配
配置
<bean id="car" class="com.softtool.Car"><property name="name" value="BMW"></property><property name="color" value="Red"></property></bean><bean id="autoPerson" class="com.softtool.Person" autowire="byName"><property name="name" value="自动装配"></property></bean>
测试
Person person3 = (Person) ac.getBean("autoPerson");System.out.println(person3.toString());
//Person{name='自动装配', car=Car{name='BMW', color='Red'}, age=null, value=null, remark='null'}
转载于:https://my.oschina.net/u/4006362/blog/2414012
spring5 (一) 属性配置-XML方式相关推荐
- Dubbo(二):Dubbo 基础配置Xml、注解方式 和 高级特性
Dubbo的基础配置 Xml方式 注解方式 Dubbo的基础配置使用 启动时检查 超时重连 集群容错 负载均衡配置 结果缓存 服务分组 多版本 只订阅/只注册 异步调用 事件通知 参数回调 本地伪装- ...
- Dubbo(六)之属性配置
转载自 Dubbo属性配置 属性配置 以属性配置的方式来配置你的 Dubbo 应用 如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 ...
- [Spring5]IOC容器_Bean管理XML方式_注入集合类型属性
xml注入集合属性 1.注入数组类型属性 2.注入List集合类型属性 3.注入Map集合类型属性 (1)创建类,定义数组,list,map,set类型属性,生成对应set方法 package com ...
- [Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性
IOC操作 Bean管理 什么是Bean管理 1.Bean管理指的是两个操作: a.Spring创建对象 b.Spring注入属性 2.Bean管理操作有两种方式 a.基于xml配置文件方式实现 b. ...
- [Spring5]IOC容器_Bean管理XML方式_外部属性文件
IOC操作Bean管理(外部属性文件) 1.直接配置数据库信息 (1)配置德鲁伊druid连接池 (2)引入德鲁伊druid连接池依赖jar包 <!--直接配置连接池--><bean ...
- [Spring5]IOC容器_Bean管理XML方式_注入其他类型属性
xml注入其他属性 bean: package com.atguigu.spring;/*** 演示使用set方法进行注入属性*/ public class Book {private String ...
- IOC操作Bean管理XML方式(注入集合类型属性)
目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...
- IOC操作Bean管理XML方式(有参构造注入属性)
IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...
- IOC操作Bean管理XML方式(创建对象和set注入属性)
目录 1.什么是 Bean 管理: (1)通过 Spring 创建对象 (2)通过 Spring 注入属性 2.IOC 操作 Bean 管理有两种方式: (1)基于 xml 配置文件方式实现 (1.1 ...
最新文章
- 程序员们都必须知道的8种通用数据结构
- Android根据baidu Android定位SDK实现定位
- [leetcode]83.Remove Duplicates from Sorted List
- 我爱的人,你知道我一直在
- oracle脏块,检查点队列上的最早脏的数据块再次被修改以何种顺序刷到磁盘
- 到底绿茶能不能减肥瘦小肚子? - 生活至上,美容至尚!
- POI操作Excel时Cannot get a text value from a numeric formula cell非法参数异常
- python删除列表空格_python 删除列表里所有空格项的方法总结
- 浏览器无法浏览flv文件的问题
- 微信小程序——仿写京东购物商城带源码
- 输出三角形字符阵列图形(C语言)
- java 支付宝 验证签名失败,关于支付宝签名校验失败的问题排解
- Altium designer (AD)中如何设置区域规则和器件规则
- 深度学习之10分钟入门h5py
- 使用 Git 添加文件时,出现 Warning: LF will be replaced by CRLF in...提示及解决方案
- 高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
- python找素数程序_求素数python
- 对计算机社团未来发展的看法,对社团发展的一些看法
- 计算机win e怎么按,win7电脑中的Win+E组合键无法使用怎么办?
- iPhone iPad 开发电子书打包下载