1、通过bean标签的autowire属性可以实现bean属性的自动装配。

  创建一个新的Spring配置文件beans-autowire.xml,这里我们配置了3个bean,Address、Car、People,其中People自动装配了另外两个bean,使用的是bean标签的autowire属性,这个例子里如果将car改为car2打印出来的Person bean 的Car属性为null,即byName根据bean的setter风格进行自动装配有就装没有就不装。而使用byType的话如果配置有两个类型相同的bean就会报错。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans
  3. xmlns="http://www.springframework.org/schema/beans"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xmlns:p="http://www.springframework.org/schema/p"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
  7.  
  8. <bean id="address" class="com.broadtext.beans.autowire.Address">
  9. <property name="city" value="Hefei"></property>
  10. <property name="street" value="Feixilu"></property>
  11. </bean>
  12.  
  13. <bean id="car" class="com.broadtext.beans.autowire.Car">
  14. <property name="brand" value="Audi"></property>
  15. <property name="price" value="300000"></property>
  16. </bean>
  17.  
  18. <!-- 可以使用autowire属性指定自动装配的方式,
  19. byName根据bean的setter风格进行自动装配有就装没有就不装,
  20. byType根据bean的类型和bean的属性的类型进行自动装配,一个以上类型匹配则抛异常
  21. -->
  22. <bean id="person" class="com.broadtext.beans.autowire.Person" autowire="byName" p:name="hj"></bean>
  23.  
  24. </beans>

2、Address.java、Car.java、People.java、Main.java

Address.java

  1. package com.broadtext.beans.autowire;
  2.  
  3. public class Address {
  4. private String city;
  5. private String street;
  6.  
  7. public String getCity() {
  8. return city;
  9. }
  10.  
  11. public void setCity(String city) {
  12. this.city = city;
  13. }
  14.  
  15. public String getStreet() {
  16. return street;
  17. }
  18.  
  19. public void setStreet(String street) {
  20. this.street = street;
  21. }
  22.  
  23. @Override
  24. public String toString() {
  25. return "Address [city=" + city + ", street=" + street + "]";
  26. }
  27. }

Car.java

  1. package com.broadtext.beans.autowire;
  2.  
  3. public class Car {
  4. private String brand;
  5. private double price;
  6.  
  7. public String getBrand() {
  8. return brand;
  9. }
  10.  
  11. public void setBrand(String brand) {
  12. this.brand = brand;
  13. }
  14.  
  15. public double getPrice() {
  16. return price;
  17. }
  18.  
  19. public void setPrice(double price) {
  20. this.price = price;
  21. }
  22.  
  23. @Override
  24. public String toString() {
  25. return "Car [brand=" + brand + ", price=" + price + "]";
  26. }
  27.  
  28. public Car() {
  29. System.out.println("car`s construstor");
  30. }
  31.  
  32. }

People.java

  1. package com.broadtext.beans.autowire;
  2.  
  3. public class Person {
  4. private String name;
  5. private Address address;
  6. private Car car;
  7.  
  8. public String getName() {
  9. return name;
  10. }
  11.  
  12. public void setName(String name) {
  13. this.name = name;
  14. }
  15.  
  16. public Address getAddress() {
  17. return address;
  18. }
  19.  
  20. public void setAddress(Address address) {
  21. this.address = address;
  22. }
  23.  
  24. public Car getCar() {
  25. return car;
  26. }
  27.  
  28. public void setCar(Car car) {
  29. this.car = car;
  30. }
  31.  
  32. @Override
  33. public String toString() {
  34. return "Person [name=" + name + ", address=" + address + ", car=" + car + "]";
  35. }
  36. }

Main.java

  1. package com.broadtext.beans.autowire;
  2.  
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5.  
  6. public class Main {
  7.  
  8. /**
  9. * <p>Description: 测试bean的自动装配</p>
  10. */
  11. public static void main(String[] args) {
  12.  
  13. ApplicationContext ctx = new ClassPathXmlApplicationContext("beans-autowire.xml");
  14. Person person = (Person) ctx.getBean("person");
  15. System.out.println(person);
  16. }
  17.  
  18. }

Spring框架学习笔记(5)——自动装配的更多相关文章

  1. Spring框架学习笔记(1)

    Spring 框架学习笔记(1) 一.简介 Rod Johnson(spring之父) Spring是分层的Java SE/EE应用 full-stack(服务端的全栈)轻量级(跟EJB比)开源框架, ...

  2. Spring框架学习笔记(5)——Spring Boot创建与使用

    Spring Boot可以更为方便地搭建一个Web系统,之后服务器上部署也较为方便 创建Spring boot项目 1. 使用IDEA创建项目 2. 修改groupid和artifact 3. 一路n ...

  3. Spring框架学习笔记(8)——spring boot+mybatis plus+mysql项目环境搭建

    之前写的那篇Spring框架学习笔记(5)--Spring Boot创建与使用,发现有多小细节没有提及,,正好现在又学习了mybatis plus这款框架,打算重新整理一遍,并将细节说清楚 1.通过I ...

  4. Spring框架学习笔记(3)——SpringMVC框架

    SpringMVC框架是基于Spring框架,可以让我们更为方便的进行Web的开发,实现前后端分离 思路和原理 我们之前仿照SpringMVC定义了一个自定义MVC框架,两者的思路其实都是一样的. 建 ...

  5. 手写Spring框架学习笔记

    以下是咕泡公开课的学习笔记 一.创建工程springdemo 二.在pom中配置servlet <dependency> <groupId>javax.servlet</ ...

  6. Spring框架学习笔记(1)——控制反转IOC与依赖注入DI

    Spring框架的主要作用,就是提供了一个容器,使用该容器就可以创建并管理对象.比如说Dao类等,又或者是具有多依赖关系的类(Student类中包含有Teacher类的成员变量) Spring有两个核 ...

  7. Spring4.0学习笔记(2) —— 自动装配

    Spring IOC 容器可以自动装配Bean,需要做的是在<bean>的autowire属性里指定自动装配的模式 1)byType 根据类型自动装配,若IOC 容器中有多个目标Bean类 ...

  8. spring框架学习笔记5:SpringAOP示例

    1.导包: 导入spring中的这两个包 再导入其他包(网上下载): 2.准备目标对象: package service; public class UserServiceImpl implement ...

  9. spring框架学习笔记7:事务管理及案例

    Spring提供了一套管理项目中的事务的机制 以前写过一篇简单的介绍事务的随笔:http://www.cnblogs.com/xuyiqing/p/8430214.html 还有一篇Hibernate ...

随机推荐

  1. Java I/O---概述

    对于程序设计者来说,创建一个好的输入/输出系统(I/O)系统是一项艰难的任务. 现在大量不同方案已经说明了这一点.挑战似乎来自于要涵盖所有的可能性.不仅存在各种I/O源端和想要与之通信的接收端(文件. ...

  2. akka-stream与actor系统集成以及如何处理随之而来的背压问题

    这几天上海快下了五天的雨☔️☔️☔️☔️,淅淅沥沥,郁郁沉沉.     一共存在四个api: Source.actorRef,返回actorRef,该actorRef接收到的消息,将被下游消费者所消费 ...

  3. ArcGIS API for JavaScript 4.2学习笔记[28] 可视域分析【使用Geoprocessor类】

    想知道可视域分析是什么,就得知道可视域是什么 我们站在某个地方,原地不动转一圈能看到的所有事物就叫可视域.当然平地就没什么所谓的可视域. 如果在山区呢?可视范围就会被山体挡住了.这个分析对军事上有十分 ...

  4. lesson - 12 Linux系统日常管理1

    监控系统状态 – w, vmstat命令w, uptimesystem load averages 单位时间段内活动的进程数 查看cpu的个数和核数vmstat 1vmstat 1 10vmstat各 ...

  5. userdel 命令详解

    userdel  作用: 删除指定用户,以及用户相关的文件. 如不加选项,则仅删除用户账号,而不删除相关文件 选项: -f:强制删除用户,即时用户当前已登录 -r:删除用户的同时删除与用户相关的所有文 ...

  6. 文档对象模型(DOM),你只需知道这些就够了!

    官方定义--应用程序编程接口(API) 文档对象模型是用于HTML和XML文档的应用程序编程接口,它定义文档的逻辑结构,以及访问和操作文档的方式. "The Document Object ...

  7. Java <clinit> & <init>

    在编译生成class文件时,会自动产生两个方法,一个是类的初始化方法<clinit>, 另一个是实例的初始化方法<init>.     <clinit>:在jvm第 ...

  8. java 学习(二)

    public class Scoure { public static void main(String args[]) { int score=90; if (score>=85 && ...

  9. 区分javascript中的toString(),toLocaleString(),valueOf()方法

    首先我们随意创建一个对象,这很简单,打开FF浏览器的Firebug切换到控制台或者打开webkit浏览器的审查元素功能. 输入以下内容: var obj1=[1,2,3,4,5] var obj2=[ ...

  10. Nginx 学习笔记(七)如何解决nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

    出现:nginx: [emerg] bind() to [::]:80 failed (98: Address already in use) 错误,有以下两种情况 1.80端口被占用 2.ipv4端 ...