ApplicationContext初始化:
public class SpringTest {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
//BeanFactory factory = context;
Car car = (Car) context.getBean("car");
System.out.println(car.getColor());
}
}
BeanFactory初始化:
public class SpringTest {
public static void main(String[] args) {
Resource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
System.out.println(((Car) factory.getBean("car")).getColor());
}
}
beans.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="car" class="com.yu.Car"
p:color="红色"
p:speed="200"
p:brand="大众"
/>
</beans>
Car.java
package com.yu;
public class Car {
private String color;
private int speed;
private String brand;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
}
使用类注解的配置方式:
beans.java
package com.yu;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class Beans {
@Bean(name="car")
public Car bulidCar(){
Car car = new Car();
car.setBrand("奥迪");
car.setColor("白色");
car.setSpeed(300);
return car;
}
}
public class SpringTest {
public static void main(String[] args) {
/*通过带有@Configuration的POJO装载Bean配置*/
/*ApplicationContext context = new AnnotationConfigApplicationContext(Beans.class);
Car car = (Car) context.getBean("car");
System.out.println(car.getBrand());
}
}
ApplicationContext初始化和BeanFactory最重要的区别:BeanFactory在初始化容器时,并未实例化
Bean,直到第一次访问某个Bean时才初始化目标Bean,而ApplicationContext在初始化应用上下文时就初始化所有单实例的Bean。因此,ApplicationContext初始化时间比BeanFactory稍长一些。