Spring BeanFactory接口示例

x33g5p2x  于2022-10-06 转载在 Spring  
字(3.7k)|赞(0)|评价(0)|浏览(738)

在这篇快速文章中,我们将通过一个例子来讨论Spring BeanFactory接口。

BeanFactory接口提供了一个简单而灵活的配置机制,通过Spring IoC容器管理任何性质的对象。在深入了解一个例子之前,让我们先看看一些基础知识。
Spring Bean是构成Spring应用程序主干的Java对象,由Spring IoC容器管理。除了由容器管理之外,Bean并没有什么特别之处(在其他方面,它是应用程序中众多对象中的一个)。

Spring IoC容器负责实例化、配置和组装Bean。容器通过读取我们为应用程序定义的配置元数据来获得关于要实例化、配置和管理哪些对象的信息。
BeanFactory持有Bean的定义,并在客户应用要求时将其实例化。

Spring BeanFactory实例

在这个例子中,我们将向Spring IoC容器提供基于XML的配置元数据。

Spring开发过程

按照以下三个步骤来开发一个Spring应用程序。

  1. 创建一个简单的Maven项目
  2. 添加Maven依赖项
  3. 配置HellowWorld Spring Bean
  4. 创建一个Spring容器
  5. 从Spring容器中检索Bean

1. 创建一个简单的Maven项目

使用你喜欢的IDE创建一个简单的Maven项目,并参考下图的打包结构。如果你是maven新手,请阅读《如何创建一个简单的Maven项目》。

2. 添加Maven依赖项

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>net.javaguides.spring</groupId>
  6. <artifactId>spring-bean-factory-example</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <url>http://maven.apache.org</url>
  9. <properties>
  10. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  11. </properties>
  12. <dependencies>
  13. <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
  14. <dependency>
  15. <groupId>org.springframework</groupId>
  16. <artifactId>spring-context</artifactId>
  17. <version>5.1.0.RELEASE</version>
  18. </dependency>
  19. </dependencies>
  20. <build>
  21. <sourceDirectory>src/main/java</sourceDirectory>
  22. <plugins>
  23. <plugin>
  24. <artifactId>maven-compiler-plugin</artifactId>
  25. <version>3.5.1</version>
  26. <configuration>
  27. <source>1.8</source>
  28. <target>1.8</target>
  29. </configuration>
  30. </plugin>
  31. </plugins>
  32. </build>
  33. </project>

3. 配置HelloWorld Spring Bean

定义Spring Bean - HelloWorld.java

Spring Bean是由Spring容器管理的Java对象。

  1. package net.javaguides.spring.ioc;
  2. public class HelloWorld {
  3. private String message;
  4. public void setMessage(String message) {
  5. this.message = message;
  6. }
  7. public void getMessage() {
  8. System.out.println("My Message : " + message);
  9. }
  10. }

配置元数据 - 配置HelloWorld Spring Bean

  1. <?xmlversion = "1.0"encoding = "UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
  6. <bean id="helloWorld" class="net.javaguides.spring.ioc.HelloWorld">
  7. <property name="message" value="Hello World!" />
  8. </bean>
  9. </beans>

4. 创建一个Spring容器

如果我们在一个独立的应用程序中拥有Spring Bean配置的XML文件,那么我们可以使用ClassPathXmlApplicationContext类来加载该文件并获得容器对象。

  1. package net.javaguides.spring.ioc;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class Application {
  5. public static void main(String[] args) {
  6. XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("applicationContext.xml"));
  7. }
  8. }

5. 从Spring容器中获取Bean

ApplicationContext接口提供了getBean()方法来从Spring容器中检索Bean。

  1. package net.javaguides.spring.ioc;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class Application {
  5. public static void main(String[] args) {
  6. XmlBeanFactory factory = new XmlBeanFactory (new ClassPathResource("applicationContext.xml"));
  7. HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
  8. obj.getMessage();
  9. }
  10. }

这个例子的源代码可以在我的GitHub仓库中找到 https://github.com/RameshMF/spring-core-tutorial

相关文章