1 Hello World 简介
此 Demo 是基于当前最新的 Spring 4.3.7 开发,旨在说明一个最简单的 Spring 应用的基本开发步骤和相关注意点。
2 准备工作
- 使用 IntelliJ IDEA 搭建最简单的 Maven 3 工程
- 配置 pom.xml 文件,加入 Spring 4 及相关依赖 jar (以下是本人测试的运行此 Demo 的最少 jar 包)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.jyhuang.spring</groupId>
<artifactId>Helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- Spring required -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<!-- commons -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
</project>
3 定义实体 Bean
- 使用 Spring 配置文件进行管理的 bean
package com.jyhuang.spring;
public class HelloWorld_xml {
public void sayHello() {
System.out.print("Hello world!");
}
}
- 使用 Spring 注解进行管理的 bean
package com.jyhuang.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class HelloWorld_annotation {
@Bean
public HelloWorld_annotation helloWorld_annotation() {
return new HelloWorld_annotation();
}
/*
* 上面的注解等价于:
* <bean id="helloWorld_annotation" class="com.jyhuang.spring.HelloWorld_annotation"></bean>
*
* 注意 bean 标签中 id 的命名:
* 必须为首字母小写的类名,否则会报错,提示 spring 找到两个 bean(1.首字母小写的类名 bean;2.id 指定名称的 bean)
*/
public void sayHello() {
System.out.println("Hello World!");
}
}
4 配置 applicationContext.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="helloworld" class="com.jyhuang.spring.HelloWorld_xml"></bean>
</beans>
5 实例化 IoC 容器
package com.jyhuang.spring;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class HelloWorldTest {
@Test
public void testHelloWorld_xml() {
// 获取 spring 配置文件对应 ApplicationContext 的两种方式(第一种更常用)
ApplicationContext ctx = new ClassPathXmlApplicationContext(
"applicationContext.xml");
// ApplicationContext ctx = new FileSystemXmlApplicationContext(
// "src/main/resources/applicationContext.xml");
HelloWorld_xml helloworld = (HelloWorld_xml) ctx.getBean("helloworld");
helloworld.sayHello();
}
@Test
public void testHelloWorld_annotation() {
// 获取通过 Annotation 方法注入的 bean
ApplicationContext ctx =
new AnnotationConfigApplicationContext(HelloWorld_annotation.class);
HelloWorld_annotation helloworld = ctx.getBean(HelloWorld_annotation.class);
helloworld.sayHello();
}
}