原文地址:http://websystique.com/spring/spring-4-hello-world-example-annotation-tutorial-full-example/

【项目代码,在文章末尾提供下载地址】

【翻译 by  明明如月 QQ 605283073】

下一篇:

Spring Beans 自动装配 使用XML配置列子(带源码)

本教程展示基于 Spring Annotation (aka javaConfig)的 Spring 4 Hello world,介绍 Spring 4 的基本概念和用法. 作为对比XML配置方式的例子也提供了出来. 我们将使用 Maven 基于Spring 4.0.6.RELEASE来创建项目.

-------------------------------------------------------------

使用以下技术和软件:

  • Spring 4.0.6.RELEASE
  • Maven 3
  • JDK 1.6
  • Eclipse JUNO Service Release 2

项目目录结构

第1步: 在Maven的pom.xml配置文件中添加Spring依赖

作为一个基于maven的项目。所有的依赖都在pom.xml中配置
<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.websystique.spring</groupId><artifactId>Spring4HelloWorldExample</artifactId><version>1.0.0</version><packaging>jar</packaging><name>Spring4HelloWorldExample</name><properties><springframework.version>4.0.6.RELEASE</springframework.version></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${springframework.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${springframework.version}</version></dependency></dependencies><build><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.2</version><configuration><source>1.6</source><target>1.6</target></configuration></plugin></plugins></pluginManagement></build></project>
我们只添加了Spring core 以及Spring context 依赖。本例中用到的Annotation(注解)属于:spring-context。

第2步:创建一个POJO类

Spring提倡弱耦合以及面向接口编程。创建一个 POJO接口以及实现。此POJO将作为spring的bean.

package com.websystique.spring.domain;public interface HelloWorld {void sayHello(String name);
}
package com.websystique.spring.domain;public class HelloWorldImpl implements HelloWorld{public void sayHello(String name) {System.out.println("Hello "+name);}}

第3步: 创建Spring配置类

Spring配置类包含你应用中需要的bean的定义。@Configuration注解在类上,将其作为spring配置类。

@Bean注解的方法,定义了被spring容器管理的bean.

<pre class="java" name="code">package com.websystique.spring.configuration;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Description;@Configuration
public class HelloWorldConfig {@Bean(name="helloWorldBean")@Description("This is a sample HelloWorld Bean")public HelloWorld helloWorld() {return new HelloWorldImpl();}}
 

@Description 是 Spring4中提供的新的注解,目的是为追踪而为bean提供的一个文本解释。

上面对应的xml配置方式helloworld-config.xml

<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-4.0.xsd"><bean id="helloWorldBean" class="com.websystique.spring.domain.HelloWorldImpl"></beans>

第4步: 创建带Main方法的Java应用

<pre class="java" name="code">package com.websystique.spring;import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.AbstractApplicationContext;import com.websystique.spring.configuration.HelloWorldConfig;
import com.websystique.spring.domain.HelloWorld;public class AppMain {public static void main(String args[]) {AbstractApplicationContext context = new AnnotationConfigApplicationContext(HelloWorldConfig.class);HelloWorld bean = (HelloWorld) context.getBean("helloWorldBean");bean.sayHello("Spring 4");context.close();}}

AnnotationConfigApplicationContext 根据带有@Configuration 注解的类类创建Spring Application Context (Spring应用上下文)。

通过getBean 方法来获取Spring应用上下文中的特定bean .然后执行其中的方法:

HelloWorld bean = (HelloWorld) context.getBean("helloWorldBean");
bean.sayHello("Spring 4");

运行之后将产生如下输出:

Hello Spring 4

上面的例子如果基于XML方式如下:

package com.websystique.spring;import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.websystique.spring.domain.HelloWorld;public class AppMain {public static void main(String args[]) {AbstractApplicationContext context = new ClassPathXmlApplicationContext("helloworld-config.xml");HelloWorld bean = (HelloWorld) context.getBean("helloWorldBean");bean.sayHello("Spring 4");context.close();}}

helloworld-config.xml在上面第3步中提到过。应该放在/src/main/resources这个类路径下。

项目代码下载:http://websystique.com/?smd_process_download=1&download_id=778

Spring 4 Hello World 例子(带源码)相关推荐

  1. Spring MVC 4 RESTFul Web Services CRUD例子(带源码)【这才是restful,超经典】

    [本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看.源码下载地址在文章末尾.] [翻译 by 明明如月 QQ 605283073] 原文地址:http://websystiq ...

  2. Spring Beans 自动装配 使用XML配置列子(带源码)

    原文地址:http://websystique.com/spring/spring-beans-auto-wiring-example-using-xml-configuration/ [项目代码,在 ...

  3. Spring Security 4 整合Hibernate 实现持久化登录验证(带源码)

    上一篇文章:Spring Security 4 整合Hibernate Bcrypt密码加密(带源码) 原文地址:http://websystique.com/spring-security/spri ...

  4. java中batch基础_详解Spring batch 入门学习教程(附源码)

    详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...

  5. Spring Boot Dubbo 应用启停源码分析

    作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发.同时也整合了 Spring Boo ...

  6. shiro实现无状态的会话,带源码分析

    转载请在页首明显处注明作者与出处 朱小杰      http://www.cnblogs.com/zhuxiaojie/p/7809767.html 一:说明 在网上都找不到相关的信息,还是翻了大半天 ...

  7. 黑马上新Spring全套教程(含实战源码)

    "八股在手,offer全有",为了通过面试,你有背过"八股文"吗? 教程推荐:黑马程序员新版Spring零基础入门到精通,一套搞定spring全套视频教程(含实 ...

  8. spring MVC cors跨域实现源码解析

    spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. sp ...

  9. Spring Boot 2.x 启动全过程源码分析(全)

    上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我 ...

最新文章

  1. 王道考研 计算机网络笔记 第二章:物理层
  2. 【收藏】vue3+vite+ts 封装axios踩坑记录
  3. content_scripts css,chrome 扩展开发 中 content_scripts 配置的 文件没有执行?
  4. Linux学习之系统编程篇:管道设置为非阻塞及管道的读写行为
  5. 在JUnit测试中使用Builder模式
  6. Oracle中Select语句完整的执行顺序
  7. catia 版本_KeyShot软件各版本对比详细信息!
  8. Spring源码解析 -- SpringWeb请求映射Map初始化
  9. vscode+sftp 开发模式环境的同步
  10. 【PostgreSQL-9.6.3】函数(1)--数值型函数
  11. 【渝粤教育】国家开放大学2019年春季 0757-22T经济法基础实务 参考试题
  12. xCat 批量安装系统
  13. 基于51单片机毕业设计 开题选题
  14. 小米助手版本信息测试
  15. 游戏公司游戏策划面试笔记
  16. CUDA编程学习笔记 之 页锁定内存(固定内存Pinned Memory)
  17. 纯前端导出excel文件(包含设置样式)
  18. 逆袭大厂生存指南-1 初出茅庐
  19. Procmon监控软件使用教程
  20. mac idea设置堆大小导致idea无法启动

热门文章

  1. 爬虫:Scrapy分类爬取苏宁易购书城
  2. 双枢轴快速排序与 Arrays.sort()
  3. HTML5期末大作业:基于html+css+javascript+jquery实现藏族文化15页【学生网页设计作业源码】
  4. cd linux menu.lst,怎么把cdlinux做成u盘启动?u盘启动cdlinux制作准备工具方法
  5. 差之毫厘.失之千里 英语学习新需求之.支持通配符的电子字典
  6. MySQL基本优化方案
  7. 锁定计算机忘记密码,笔记本防盗锁忘记密码_笔记本电脑锁忘记密码
  8. 服务器遇到一个意外的情况,阻止它完成请求
  9. 日本下一个超大规模数据中心破土动工,位于京阪奈科学城
  10. Kubernetes 1.25 发布!博云带你玩转新特性