代码:

  1. import org.springframework.context.ApplicationContext;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3.  
  4. public class Main {
  5. public static void main(String[] args) {
  6. ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  7. Person person = (Person) ctx.getBean("person");
  8. System.out.println(person);
  9. }
  10. }
  11.  
  12. class Car {
  13. private String brand;
  14. private double price;
  15. public String getBrand() {
  16. return brand;
  17. }
  18. public void setBrand(String brand) {
  19. this.brand = brand;
  20. }
  21. public double getPrice() {
  22. return price;
  23. }
  24. public void setPrice(double price) {
  25. this.price = price;
  26. }
  27. @Override
  28. public String toString() {
  29. return "Car [brand=" + brand + ", price=" + price + "]";
  30. }
  31. }
  32.  
  33. class Address {
  34. private String city;
  35. private String street;
  36. public String getCity() {
  37. return city;
  38. }
  39. public void setCity(String city) {
  40. this.city = city;
  41. }
  42. public String getStreet() {
  43. return street;
  44. }
  45. public void setStreet(String street) {
  46. this.street = street;
  47. }
  48. @Override
  49. public String toString() {
  50. return "Address [city=" + city + ", street=" + street + "]";
  51. }
  52. }
  53.  
  54. class Person {
  55. private String name;
  56. private Address address;
  57. private Car car;
  58.  
  59. public String getName() {
  60. return name;
  61. }
  62. public void setName(String name) {
  63. this.name = name;
  64. }
  65. public Address getAddress() {
  66. return address;
  67. }
  68. public void setAddress(Address address) {
  69. this.address = address;
  70. }
  71. public Car getCar() {
  72. return car;
  73. }
  74. public void setCar(Car car) {
  75. this.car = car;
  76. }
  77. @Override
  78. public String toString() {
  79. return "Person [name=" + name + ", address=" + address + ", car=" + car
  80. + "]";
  81. }
  82. }

applicationContext.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd">
  7.  
  8. <!-- 手动装配Bean -->
  9. <bean id="address" class="com.company.Address"
  10. p:city="WhuHan" p:street="Bayi"></bean>
  11.  
  12. <bean id="car" class="com.company.Car"
  13. p:brand="Audi" p:price="300000"></bean>
  14.  
  15. <bean id="person" class="com.company.Person"
  16. p:name="Roger" p:address-ref="address" p:car-ref="car"></bean>
  17.  
  18. </beans>

结果:

  1. Person [name=Roger, address=Address [city=WhuHan, street=Bayi], car=Car [brand=Audi, price=300000.0]]

对applicationContext.xml进行修改

  1. <bean id="person" class="com.company.Person"
  2. p:name="Roger" ></bean>

结果:

  1. Person [name=Roger, address=null, car=null]
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd">
  7.  
  8. <!-- 手动装配Bean -->
  9. <bean id="address" class="com.company.Address"
  10. p:city="WhuHan" p:street="Bayi"></bean>
  11.  
  12. <bean id="car" class="com.company.Car"
  13. p:brand="Audi" p:price="300000"></bean>
  14.  
  15. <bean id="person" class="com.company.Person"
  16. p:name="Roger" autowire="byName"></bean>
  17. </beans>
  1. Person [name=Roger, address=Address [city=WhuHan, street=Bayi], car=Car [brand=Audi, price=300000.0]]

使用自动装配auotwire="byName"

将上面的autowire改成byType一样可以运行,结果也一样。

自动检测Bean

  1. <context:component-scan
  2. base-package="com.company">
  3. </context:component-scan>

https://my.oschina.net/u/1020238/blog/502599

https://my.oschina.net/u/1020238/blog/502930

http://blog.csdn.net/evankaka/article/details/45023835

手动装配Bean的更多相关文章

  1. 依赖注入Bean属性——手动装配Bean

    一.构造方法注入 其中,可以根据不同的参数列表调用不同的重载的构造方法: 其中,基本数据类型没有包,引用类型都有包路径,基本类型对应封装类: 二.通过property标签调用类的set方法注入 三.通 ...

  2. java之Spring(IOC)装配Bean(手动装配、自动装配、注解装配)

    在上一篇控制反转中我们看到了依靠一个Bean文件来实现对代码的控制,可谓十分便捷,再也不用去实例化对象了,2333~~~ 1.手动装配 <bean id="todo" cla ...

  3. (转)java之Spring(IOC)注解装配Bean详解

    java之Spring(IOC)注解装配Bean详解   在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看 ...

  4. java之Spring(IOC)注解装配Bean详解

    在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看Annotation的魅力所在吧. 先来看看之前的bean ...

  5. 3.spring:自动装配/Bean之间的关系/作用域/外部文件/spel/

    1.自动装配/手动装配 xml配置文件里的bean自动装配 Spring IOC 容器里可以自动的装配Bean,需要做的仅仅是在<bean>的autowire属性里面指定自动装配模式 -& ...

  6. Spring------自动化装配Bean(三)

    上一篇是基于java手动装配bean的实现,这一篇将通过xml手动装配bean来实现. xml配置相对于java配置有点: xml配置更加快捷 但不宜扩展 一.打开application.xml 1. ...

  7. Spring------自动化装配Bean(二)

    上一篇是基于 @ComponentScan自动装配Bean的实现,这一篇将通过java手动装配bean来实现. 手动装配相对于自动装配的优点: 可以自行定义Bean的各个属性. 添加额外的方法调度. ...

  8. Spring3系列8- Spring 自动装配 Bean

    Spring3系列8- Spring 自动装配 Bean 1.      Auto-Wiring ‘no’ 2.      Auto-Wiring ‘byName’ 3.      Auto-Wiri ...

  9. Spring 框架 详解 (三)-----IOC装配Bean

    IOC装配Bean: 1.1.1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. * 构造方法实例化:(默认无参数) * 静态工厂实例化: * 实例工厂实例化: 无参数构造方法 ...

随机推荐

  1. multi-paradigm

    w范式 https://developer.mozilla.org/en-US/docs/Web/JavaScript https://developer.mozilla.org/zh-CN/docs ...

  2. ntpdate同步更新时间

    Linux服务器运行久时,系统时间就会存在一定的误差,一般情况下可以使用date命令进行时间设置,但在做数据库集群分片等操作时对多台机器的时间差是有要求的,此时就需要使用ntpdate进行时间同步 1 ...

  3. 判断是否关注了微信公众号 subscribe 0=未关注 1=已关注

    $appid=''; $secret=''; //微信网页授权获取openid $web_url='http://www.xxxx.com/shouquan.php'; if (!isset($_GE ...

  4. 生信-RPKM与FPKM学习[转载]

    转自:https://baike.baidu.com/item/RPKM/1197657 均反应基因的表达水平 1.RPKM的计算公式 分母是总共比对到这个基因的reads的数目(条 为单位),分母是 ...

  5. linux rm指定的文件

    如何删除一个目录下的除了想要的文件之外的所有文件 rm `ls | grep -v "aa"` Linux下 报错“命令参数列表过长”,在用mv命令一次移动3万多个文件时失败了,原 ...

  6. socketserver 并发连接

    socketserver.TCPServer Example server side 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  7. hibernate的事务和spring事务的区别 (转)

    spring事务: 对于传统的基于特定事务资源的事务处理而言(如基于JDBC的数据库访问),Spring并不会对其产生什么影响,我们照样可以成功编写并运行这样的代码.同时,Spring还提供了一些辅助 ...

  8. Oracle数据库面试题(转)

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  9. fzu1901Period II

    地址:http://acm.fzu.edu.cn/problem.php?pid=1901 题目: Problem 1901 Period II Accept: 442    Submit: 1099 ...

  10. IDEA创建Spring Boot的项目

    IDEA创建SpringBoot的项目非常的方便智能,可以实现零配置,只需要在创建的时候勾选你需要的功能,比如mybatis,mysql等等,它会帮你自动下载导入响应的jar,不用自己再去手动填写. ...