两个世界

初次接触编程的时候,我用C++写了一个程序,向控制台输出Hello World。一时之间兴奋不已,觉得好生神奇。于是,编程的世界打开了,再也关不住。现在,让我们也以这样一个Hello World为引,开始我们的Spring之旅。

首先,我们需要新建Hello World项目:

1. 打开IntelliJ IDEA,在欢迎界面上点击Create New Project,打开New Project对话框。

2. 选择左边面板Maven那栏,并于右边面板选好JDK

3. 点击Next按钮,设置Name为hello-world

4. 展开Artifact Coordinates,设置GroupId为com.learning

5. 点击Finish按钮,完成创建。

注意:新建项目之后可从菜单栏的View > Tool Windows > Project打开Project面板,查看新建的项目。 

现在,新建的项目空空如也,没有包含任何包。为此,请展开Project面板的hello-world > src > main > java,并于java目录新建com.learning包。随后修改pom文件,告诉Maven构建我们的项目具体需要哪些依赖:

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

改完pom文件,IntelliJ IDEA右下角会弹出一块小面板。在小面板上点击Import Changes,等待一段时间即可完成项目依赖的解析和下载。除此之外,也可从菜单栏的View > Tool Windows > Maven打开Maven面板,点击Reimport All Maven Projects按钮完成项目依赖的解析和下载。

至此,项目的新建工作已经完成,可以开始写代码了。我们的目标是写一个程序,向控制台输出Hello World。于是,我们需要有个人,这个人能够说话。为此,我们新建一个Person接口:

1 package com.learning;
2 
3 public interface Person {
4     void speak(String word);
5 }

随后新建PersonImpl类实现Person接口:

1 package com.learning;
2 
3 public class PersonImpl implements Person {
4     @Override
5     public void speak(String word) {
6         System.out.println(word);
7     }
8 }

现在,类已经有了,该创建她的实例,调用实例的方法输出Hello World了。这里,有两种方式能够创建Person类的实例。一种是传统的,一种是Spring的。

按照传统的方式,我们需要自己创建类的实例,然后调用实例的方法说出Hello World。基于这些,我们新建一个Main类,实现如下:

1 package com.learning;
2 
3 public class Main {
4     public static void main(String[] args) {
5         var person = new PersonImpl();
6         person.speak("Hello World");
7     }
8 }

写完之后可以运行代码了。为此,请:

1. 点击右上角的Add Configuration按钮,打开Run/Debug Configurations对话框。

2. 点击左上角的加按钮,在弹出的Add New Configuration面板点击Application,新建Application配置。

3. 设置Name为hello-world,Main class为com.learning.Main

4. 点击OK按钮完成配置。

5. 点击Run按钮运行程序,输出如下内容:

这就是我们非常熟悉的传统的写法。那么,如果采用Spring的话,能够怎么写呢?毫无疑问,这是一个全新的话题,同时也是一个十分新鲜的话题。因为采用Spring,我们无需自己创建类的实例;只需提供一些信息告诉Spring,我们需要创建哪些类的实例。随后,Spring就能根据我们提供的信息完成实例的创建。那么,我们应该怎样告诉Spring这些信息呢? 

没错,通过配置文件。

我们把需要创建哪些类的实例的信息写在配置文件里,再把配置文件交给Spring。Spring读取配置文件之后就能知道具体需要创建哪些类的实例了。

那么,配置文件应该怎么写呢?

请展开Project面板的hello-world > src > main > resources,右击鼠标弹出上下文菜单,点击XML Configuration File > Spring Config打开New File对话框,输入app-config新建配置文件app-config.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <bean id="person" class="com.learning.PersonImpl"/>
</beans>

就这样,配置文件写好了,是时候把它交给Spring了。为此,请修改Main类,让Spring开始工作:

 1 package com.learning;
 2 
 3 import org.springframework.context.support.ClassPathXmlApplicationContext;
 4 
 5 public class Main {
 6     public static void main(String[] args) {
 7         try (var context = new ClassPathXmlApplicationContext("app-config.xml")) {
 8             var person = context.getBean("person", Person.class);
 9             person.speak("Hello World");
10         }
11     }
12 }

看到了吧,我们把配置文件交给Spring应用上下文(Spring Application Context)。Spring应用上下文读取配置文件之后就能把类的实例创建出来。随后,我们从Spring应用上下文中获取类的实例,调用实例的方法输出Hello World。 

现在,运行一下程序,控制台随即输出Hello World。一切是那样的妙不可言。

这时,大家可能会说,哎呀,我的程序是跑起来了,而且也输出了Hello World;可是,配置文件和应用程序上下文的代码不是很懂呀,怎么办?大家别急,这里只是通过Hello World,让大家认识一下Spring,往后的章节我们会详细介绍配置文件,应用上下文和其它Spring的知识,到时大家就懂了。

通过Hello World,相信大家已经看到Spring和传统的方式有何不同。只是Hello World太过简单了,大家对Spring可能只是有个最初的印象,却体会不到Spring真正的魅力,更不知道Spring对企业级应用软件的开发到底简化了多少。毕竟就这个例子而言,传统的方式代码更少,似乎更加简洁。但是,随着学习的深入,到了学习Spring MVC的时候,大家就能确切体会到Spring的魅力,以及Spring对于企业级应用软件的开发到底简化了多少了。所以,静下心来。让我们一点一点慢慢学习,一点一点慢慢体会Spring这样或那样的魅力。

返回目录  下一篇:控制反转 

原文地址:https://www.cnblogs.com/evanlin/p/12651867.html