原文: http://zetcode.com/articles/standalonespring/

在本教程中,我们将创建两个简单的 Java Spring 独立应用。 我们将使用 NetBeans 来构建应用。

Spring 是流行的 Java 应用框架。 它提供了用于企业应用编程的各种库和工具。 这也是一个非常好的集成系统,可以帮助将各种企业组件粘合在一起。

Spring ApplicationContext是用于为应用提供配置的中央接口。 ClassPathXmlApplicationContextApplicationContext的实现,该实现从位于类路径上的 XML 文件加载配置定义。 AnnotationConfigApplicationContext创建一个新的应用上下文,该上下文从给定的带注解的类派生 Bean 定义。

pom.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.zetcode</groupId>
  7. <artifactId>SpringStandaloneEx2</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <packaging>jar</packaging>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. <maven.compiler.source>1.8</maven.compiler.source>
  13. <maven.compiler.target>1.8</maven.compiler.target>
  14. <spring-version>4.3.0.RELEASE</spring-version>
  15. </properties>
  16. <dependencies>
  17. <dependency>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-core</artifactId>
  20. <version>${spring-version}</version>
  21. </dependency>
  22. <dependency>
  23. <groupId>org.springframework</groupId>
  24. <artifactId>spring-beans</artifactId>
  25. <version>${spring-version}</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>org.springframework</groupId>
  29. <artifactId>spring-context</artifactId>
  30. <version>${spring-version}</version>
  31. </dependency>
  32. </dependencies>
  33. </project>

我们将 Maven 构建文件用于两个应用。 它包含必要的 Spring 依赖关系。

具有ClassPathXmlApplicationContext的 Spring 应用

我们在 NetBeans IDE 中创建一个新的 Maven Java SE 应用。

独立的 Spring 应用 - 图1

图:NetBeans 中的 Spring 项目结构

在项目中,有四个文件:Message.javaApplication.javamy-beans.xmlpom.xml

Message.java

  1. package com.zetcode.bean;
  2. public class Message {
  3. private String message;
  4. public void setMessage(String message){
  5. this.message = message;
  6. }
  7. public String getMessage(){
  8. return message;
  9. }
  10. }

Message是我们的应用中使用的简单 Java Bean。

my-beans.xml

  1. <?xml version="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.xsd">
  6. <bean id="mymessage" class="com.zetcode.bean.Message">
  7. <property name="message" value="Hello there!"/>
  8. </bean>
  9. </beans>

我们将Message类制成 Spring Bean; 现在,它由 Spring 容器管理。 我们还为message属性提供了一个值。 my-beans.xml位于src/main/resources子目录中。

Application.java

  1. package com.zetcode.main;
  2. import com.zetcode.bean.Message;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. public class Application {
  6. public static void main(String[] args) {
  7. ApplicationContext context =
  8. new ClassPathXmlApplicationContext("my-beans.xml");
  9. Message obj = (Message) context.getBean("mymessage");
  10. String msg = obj.getMessage();
  11. System.out.println(msg);
  12. }
  13. }

Application设置 Spring 应用。

  1. ApplicationContext context =
  2. new ClassPathXmlApplicationContext("my-beans.xml");

my-beans.xml文件,创建ApplicationContext

  1. Message obj = (Message) context.getBean("mymessage");

从应用上下文中,我们检索Message bean。

  1. String msg = obj.getMessage();
  2. System.out.println(msg);

我们调用 bean 的getMessage()方法,并将消息打印到控制台。

  1. Hello there!

这是应用的输出。

具有AnnotationConfigApplicationContext的 Spring 应用

在第二个示例中,我们将使用AnnotationConfigApplicationContext创建 Spring ApplicationContext

Message.java

  1. package com.zetcode.bean;
  2. import org.springframework.stereotype.Component;
  3. @Component
  4. public class Message {
  5. private String message = "Hello there!";
  6. public void setMessage(String message){
  7. this.message = message;
  8. }
  9. public String getMessage(){
  10. return message;
  11. }
  12. }

Message bean 用@Component注解修饰。 此类由 Spring 自动检测。

Application.java

  1. package com.zetcode.main;
  2. import com.zetcode.bean.Message;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.context.ApplicationContext;
  5. import org.springframework.context.annotation.AnnotationConfigApplicationContext;
  6. import org.springframework.context.annotation.ComponentScan;
  7. @ComponentScan(basePackages = "com.zetcode")
  8. public class Application {
  9. public static void main(String[] args) {
  10. ApplicationContext context
  11. = new AnnotationConfigApplicationContext(Application.class);
  12. Application p = context.getBean(Application.class);
  13. p.start();
  14. }
  15. @Autowired
  16. private Message message;
  17. private void start() {
  18. System.out.println("Message: " + message.getMessage());
  19. }
  20. }

这是主要的Application类。

  1. @ComponentScan(basePackages = "com.zetcode")

使用@ComponentScan注解,我们告诉 Spring 在哪里寻找组件。

  1. ApplicationContext context
  2. = new AnnotationConfigApplicationContext(Application.class);

ApplicationContext由注解创建。

  1. @Autowired
  2. private Message message;
  3. private void start() {
  4. System.out.println("Message: " + message.getMessage());
  5. }

使用@Autowired注解,Message bean 被注入到message变量中。

在本教程中,我们创建了两个独立的 Spring 应用。 第一个使用 XML 文件,第二个使用注解。 您可能也对相关教程感兴趣: Spring Web 应用简介Spring Boot 优先 Web 应用Java 教程