1. 配置形式: 基于XML文件的方式、基于注解的方式(此处不讲解)
创建applicationContext.xml文件并且将xml配置文件置于src路径下面
新建的配置文件:
2. bean的配置方式:通过全类名(反射)、通过工厂方法(静态工厂方法&实例工厂方法)、FactoryBean
(1)通过全类名来配置bean
id:Bean的名称
-在IOC容器中是唯一的
-如果没有指定id,默认将全类名作为Bean的名字
-id可以指定多个名字,名字之间可以用逗号、分号或者空格分割
class:bean的全类名,通过反射方式在IOC容器中创建Bean,所以要求Bean中必须有无参构造器
3. IOC容器 BeanFactory&ApplicationContext概述
在SpringIOC容器读取Bean配置创建的Bean实例之前,必须对它进行实例化,只有在容器实例化后,才可以从IOC容器中获取Bean实例,而IOC容器实现hi靠一下两种来实现的
BeanFactory:IOC容器的基本实现
applicationContext:提供了更多的高级特性,是BeanFactory的子类(更多的使用该方式)
上面两种方式都是基于的配置文件都是相同的
实例:
创建Spring的IOC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
其中ApplicationContext 代表IOC容器;ClassPathXmlApplicationContext接口的实现类,该实现类从类路径下来加载配置文件
从IOC容器获取Bean实例 有两种方式,通过bean唯一表示id,通过Bean类型获取
HelloWorld helloWorld = (HelloWorld)ctx.getBean("bean的id"); 因为id是唯一的这样获取是完全没有问题的
HelloWorld helloWorld = ctx.getBean(HelloWorld.class) 因为同一个类可能在IOC容器中创建两个bean,这样的话就不是为了
4.依赖注入的方式:属性注入、构造器注入、工厂方法模式(很少使用不推荐)
(1)属性注入
通过setter方法进行注入属性值或者依赖对象,在开发中是最常用的,强烈推荐使用
(2)构造方法注入
通过构造方法注入Bean属性值或者依赖的对象,它保证Bean实例在实例后就可以使用,构造器注入在
Car.java
package com.syh.spring1;
public class Car {
private String brand ;
private String corp;
private int price;
private int maxSpeed;
public Car(String brand, String corp, int price, int maxSpeed) {
super();
this.brand = brand;
this.corp = corp;
this.price = price;
this.maxSpeed = maxSpeed;
}
@Override
public String toString() {
return "Car [brand=" + brand + ", corp=" + corp + ", price=" + price
+ ", maxSpeed=" + maxSpeed + "]";
}
}
applicationContext.xml
测试:
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
Car car = (Car) ctx.getBean("car");
System.out.println(car);
结果: