Spring视频学习笔记(一)

Spring视频学习笔记(一)

 Spring容器

  • 在SpringIOC容器中读取Bean配置创建Bean实例之前,必须对它进行实例化,只有在容器实例化后,才可以从IOC容器中获取Bean实例并使用

 Spring提供了两种类型的IOC容器实现

  • BeanFactory.IOC:BeanFactory是Spring框架的基础设施,面向Spring本身;

  • ApplicationContext提供了更多的高级特性,是BeanFactory的子接口;ApplicationContext面向使用Spring框架的开发者,几乎所有的应用场合都直接使用ApplicationContext而非底层的BeanFactory

 ApplicationContext的主要实现类

  • ClassPathXmlApplicationContext:从类路径下加载配置文件

  • FileSystemXmlApplicationContext:从文件系统中加载配置文件

ApplicationContext在初始化上下文时就实例化所有单例的Bean;ApplicationContext新增加两个方法refresh()和close(),让ApplicationContext具有启动,刷新和关闭上下文的能力

 Spring支持三种依赖注入的方式

  • 属性注入(即通过setter方法注入Bean的属性值或者依赖的对象,常用方法;helloword为例)
<!-- 
	配置bean 
	class:bean的全类名,通过反射的方式在IOC容器中常见bean,所以要求bean中要有无参的构造器
	id:标识容器中的bean,id唯一;id可以制定多个名字,名字之间可用逗号分号或者空格分离
-->
	<bean id="helloWorld" class="com.wy.spring.HelloWorld">
	  <property name="name" value="Spring"></property>
	</bean>
  • 构造器注入
public class Car {
	private String brand;
	private String corp;
	private int price;
	private int maxSpeed;
	public Car(String brand, String corp, int price) {
		super();
		this.brand = brand;
		this.corp = corp;
		this.price = price;
	}
	@Override
	public String toString() {
		return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price
				+ ", maxSpeed=" + maxSpeed + "]";
	}
}

配置文件

<!-- 通过构造法方法来配置bean属性,可以指定参数的位置和参数的类型(type="java.lang.String")以 区分重载的构造器-->
	<bean id="car" class="com.wy.spring.Car">
	  <constructor-arg value="Xuefulan" index="0"></constructor-arg>
	  <constructor-arg value="beijing" index="1"></constructor-arg>
	  <constructor-arg value="200000" index="2"></constructor-arg>
	</bean>
	  
	  <!-- 属性值也可以使用属性子节点直接进行配置 -->
	  <constructor-arg type="java,lang.Stirng">
	    <value>250</value>
	  </constructor-arg>
  </bean>

当有引用时的配置,以Car和person类为例

public class Person {
	private String name;
	private int age;
	private Car car;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int 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 + "]";
	}
}

有引用时的配置

<bean id="person" class="com.wy.spring.Person">
	  <property name="name" value="jay"></property>
	  <property name="age" value="25"></property>
	  <property name="car" ref="car" ></property>
	</bean>
  • 工厂方法注入
原文地址:https://www.cnblogs.com/sinon/p/5845874.html