Spring 4 Hello World 例子(带源码)
原文地址: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依赖
<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>
第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 例子(带源码)相关推荐
- Spring MVC 4 RESTFul Web Services CRUD例子(带源码)【这才是restful,超经典】
[本系列其他教程正在陆续翻译中,点击分类:spring 4 mvc 进行查看.源码下载地址在文章末尾.] [翻译 by 明明如月 QQ 605283073] 原文地址:http://websystiq ...
- Spring Beans 自动装配 使用XML配置列子(带源码)
原文地址:http://websystique.com/spring/spring-beans-auto-wiring-example-using-xml-configuration/ [项目代码,在 ...
- Spring Security 4 整合Hibernate 实现持久化登录验证(带源码)
上一篇文章:Spring Security 4 整合Hibernate Bcrypt密码加密(带源码) 原文地址:http://websystique.com/spring-security/spri ...
- java中batch基础_详解Spring batch 入门学习教程(附源码)
详解Spring batch 入门学习教程(附源码) 发布时间:2020-09-08 00:28:40 来源:脚本之家 阅读:99 作者:achuo Spring batch 是一个开源的批处理框架. ...
- Spring Boot Dubbo 应用启停源码分析
作者:张乎兴 来源:Dubbo官方博客 背景介绍 Dubbo Spring Boot 工程致力于简化 Dubbo RPC 框架在Spring Boot应用场景的开发.同时也整合了 Spring Boo ...
- shiro实现无状态的会话,带源码分析
转载请在页首明显处注明作者与出处 朱小杰 http://www.cnblogs.com/zhuxiaojie/p/7809767.html 一:说明 在网上都找不到相关的信息,还是翻了大半天 ...
- 黑马上新Spring全套教程(含实战源码)
"八股在手,offer全有",为了通过面试,你有背过"八股文"吗? 教程推荐:黑马程序员新版Spring零基础入门到精通,一套搞定spring全套视频教程(含实 ...
- spring MVC cors跨域实现源码解析
spring MVC cors跨域实现源码解析 名词解释:跨域资源共享(Cross-Origin Resource Sharing) 简单说就是只要协议.IP.http方法任意一个不同就是跨域. sp ...
- Spring Boot 2.x 启动全过程源码分析(全)
上篇<Spring Boot 2.x 启动全过程源码分析(一)入口类剖析>我们分析了 Spring Boot 入口类 SpringApplication 的源码,并知道了其构造原理,这篇我 ...
最新文章
- 王道考研 计算机网络笔记 第二章:物理层
- 【收藏】vue3+vite+ts 封装axios踩坑记录
- content_scripts css,chrome 扩展开发 中 content_scripts 配置的 文件没有执行?
- Linux学习之系统编程篇:管道设置为非阻塞及管道的读写行为
- 在JUnit测试中使用Builder模式
- Oracle中Select语句完整的执行顺序
- catia 版本_KeyShot软件各版本对比详细信息!
- Spring源码解析 -- SpringWeb请求映射Map初始化
- vscode+sftp 开发模式环境的同步
- 【PostgreSQL-9.6.3】函数(1)--数值型函数
- 【渝粤教育】国家开放大学2019年春季 0757-22T经济法基础实务 参考试题
- xCat 批量安装系统
- 基于51单片机毕业设计 开题选题
- 小米助手版本信息测试
- 游戏公司游戏策划面试笔记
- CUDA编程学习笔记 之 页锁定内存(固定内存Pinned Memory)
- 纯前端导出excel文件(包含设置样式)
- 逆袭大厂生存指南-1 初出茅庐
- Procmon监控软件使用教程
- mac idea设置堆大小导致idea无法启动
热门文章
- 爬虫:Scrapy分类爬取苏宁易购书城
- 双枢轴快速排序与 Arrays.sort()
- HTML5期末大作业:基于html+css+javascript+jquery实现藏族文化15页【学生网页设计作业源码】
- cd linux menu.lst,怎么把cdlinux做成u盘启动?u盘启动cdlinux制作准备工具方法
- 差之毫厘.失之千里 英语学习新需求之.支持通配符的电子字典
- MySQL基本优化方案
- 锁定计算机忘记密码,笔记本防盗锁忘记密码_笔记本电脑锁忘记密码
- 服务器遇到一个意外的情况,阻止它完成请求
- 日本下一个超大规模数据中心破土动工,位于京阪奈科学城
- Kubernetes 1.25 发布!博云带你玩转新特性