创建一个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方式相关推荐

  1. Dubbo(二):Dubbo 基础配置Xml、注解方式 和 高级特性

    Dubbo的基础配置 Xml方式 注解方式 Dubbo的基础配置使用 启动时检查 超时重连 集群容错 负载均衡配置 结果缓存 服务分组 多版本 只订阅/只注册 异步调用 事件通知 参数回调 本地伪装- ...

  2. Dubbo(六)之属性配置

    转载自  Dubbo属性配置 属性配置 以属性配置的方式来配置你的 Dubbo 应用 如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 ...

  3. [Spring5]IOC容器_Bean管理XML方式_注入集合类型属性

    xml注入集合属性 1.注入数组类型属性 2.注入List集合类型属性 3.注入Map集合类型属性 (1)创建类,定义数组,list,map,set类型属性,生成对应set方法 package com ...

  4. [Spring5]IOC容器_Bean管理XML方式_创建对象_set注入属性and有参构造注入属性

    IOC操作 Bean管理 什么是Bean管理 1.Bean管理指的是两个操作: a.Spring创建对象 b.Spring注入属性 2.Bean管理操作有两种方式 a.基于xml配置文件方式实现 b. ...

  5. [Spring5]IOC容器_Bean管理XML方式_外部属性文件

    IOC操作Bean管理(外部属性文件) 1.直接配置数据库信息 (1)配置德鲁伊druid连接池 (2)引入德鲁伊druid连接池依赖jar包 <!--直接配置连接池--><bean ...

  6. [Spring5]IOC容器_Bean管理XML方式_注入其他类型属性

    xml注入其他属性 bean: package com.atguigu.spring;/*** 演示使用set方法进行注入属性*/ public class Book {private String ...

  7. IOC操作Bean管理XML方式(注入集合类型属性)

    目录 IOC操作Bean管理XML方式(注入集合类型属性) (1)首先进行环境的搭建和准备 (2)创建一个类:用来完成集合类型属性注入 (3)在Spring 配置文件进行配置 (4)编写一个测试类进行 ...

  8. IOC操作Bean管理XML方式(有参构造注入属性)

    IOC操作Bean管理XML方式 目录 有参构造注入属性 (1)步骤(创建类,定义属性,创建属性对应的有参构造方法): (2)步骤:在Spring 的xml配置文件中进行配置 (3)步骤:进行测试 结 ...

  9. IOC操作Bean管理XML方式(创建对象和set注入属性)

    目录 1.什么是 Bean 管理: (1)通过 Spring 创建对象 (2)通过 Spring 注入属性 2.IOC 操作 Bean 管理有两种方式: (1)基于 xml 配置文件方式实现 (1.1 ...

最新文章

  1. 程序员们都必须知道的8种通用数据结构
  2. Android根据baidu Android定位SDK实现定位
  3. [leetcode]83.Remove Duplicates from Sorted List
  4. 我爱的人,你知道我一直在
  5. oracle脏块,检查点队列上的最早脏的数据块再次被修改以何种顺序刷到磁盘
  6. 到底绿茶能不能减肥瘦小肚子? - 生活至上,美容至尚!
  7. POI操作Excel时Cannot get a text value from a numeric formula cell非法参数异常
  8. python删除列表空格_python 删除列表里所有空格项的方法总结
  9. 浏览器无法浏览flv文件的问题
  10. 微信小程序——仿写京东购物商城带源码
  11. 输出三角形字符阵列图形(C语言)
  12. java 支付宝 验证签名失败,关于支付宝签名校验失败的问题排解
  13. Altium designer (AD)中如何设置区域规则和器件规则
  14. 深度学习之10分钟入门h5py
  15. 使用 Git 添加文件时,出现 Warning: LF will be replaced by CRLF in...提示及解决方案
  16. 高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
  17. python找素数程序_求素数python
  18. 对计算机社团未来发展的看法,对社团发展的一些看法
  19. 计算机win e怎么按,win7电脑中的Win+E组合键无法使用怎么办?
  20. iPhone iPad 开发电子书打包下载

热门文章

  1. 信息论杂谈之文理科融合与东西方思维差异
  2. 管理启示,不起毛的鹦鹉——leo锦书54
  3. 3D模型欣赏:美漫风女巫加利CG模型女性作品欣赏
  4. 题解 [CSP-S 2019 Day2]Emiya家今天的饭
  5. Win10 优化设置
  6. c51数码管显示汇编语言,单片机数码管显示数字加减汇编程序
  7. python字典会自动排序,python:创建字典时如何禁用自动排序
  8. PHP获取微信openid(静默式不需要用户同意)!
  9. Linux下Nignx的安装
  10. OpenSSL创建HTTPS的证书认证