接下来使用 Maven 方式来创建⼀个 Spring 项目,创建 Spring 项目和 Servlet 类似,总共分为以下 3步:
在项目的 pom.xml 中添加 Spring 框架的支持,xml 配置如下:
从上述配置中可以看出,添加的框架有spring-context
: spring上下文,还有spring-beans
:管理对象的模块。
最后在创建好的项目java文件夹下创建一个启动类,包含 main方法即可:
存储Bean分为以下2步:
所谓的 Bean 就是 Java 中的⼀个普通对象,实现代码如下:
右侧小框里面展示的是将user对象注册到Spring中。
获取并使用Bean对象,分为以下3步:
因为对象都交给Spring管理了,所以获取对象要从 Spring中获取,那么就得先得到Spring的上下文。
Spring 上下文对象可使用ApplicationContext
,除了ApplicationContext
之外,我们还可以使用BeanFactory
来作为Spring 的上下文。
ApplicationContext
和BeanFactory
的区别ApplicationContext
和BeanFactory
效果是一样的,ApplicationContext
属于BeanFactory
的子类,它们的区别如下:
Spring
容器有两个顶级的接口:BeanFactory
和ApplicationContext
。其中 BeanFactory
提供了基础的访问容器的能力,而ApplicationContext
属于BeanFactory
的子类,它除了继承了BeanFactory
的所有功能之外,它还拥有独特的特性,还添加了对国际化支持、资源访问支持、以及事件传播等方面的支持。ApplicationContext
是一次性加载并初始化所有的Bean
对象,而BeanFactory
是需要哪个才去加载哪个,因此更加轻量。如果取多个Bean的话重复以上第2、3步骤。
public class App {
public static void main(String[] args) {
//获取到Spring的上下文对象
ApplicationContext context = new ClassPathXmlApplicationContext("spring-config.xml");
//2.从Spring中获取到业务对象
//[2.1 通过bean的id来获取bean对象,需要类型强转]
// User user = (User)context.getBean("user");//和bean中的id相对应
//[2.2 通过对象获取bean对象 优点:无需进行类型转换,缺点:对于多种对象的同一类型的bean获取会报错]
// User user = context.getBean(User.class);
//[2.3 通过 id+类型 的方式来获取bean 优点:无1需进行类型转换, 2对于多个对象向用一个类的情况不会报错]
User user = context.getBean("user",User.class);
//3.使用业务对象
user.PrintName("hello");
}
}
通过BeanFactory获取上下文对象:
public class App2 {
public static void main(String[] args) {
//获取到Spring的上下文对象
// BeanFactory beanFactory = new ClassPathXmlApplicationContext("spring-config.xml");
BeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("spring-config.xml"));
//2.从Spring中获取到业务对象
User user = beanFactory.getBean("user",User.class);
//3.使用业务对象
user.PrintName("world");
}
}