使用Java的Spring框架编写第一个程序Hellow world

Spring框架是什么?
Spring是为企业Java最流行的应用程序开发框架。数以百万计的世界各地的开发人员使用Spring框架来创建高性能,易于测试的,可重用的代码。

Spring框架是一个开源的Java平台,它最初是由Rod Johnson编写并在2003年6月在Apache2.0许可下首次发布。

Spring是轻量级的,当涉及到大小和透明度。 spring框架的基本版本是大约2MB。

Spring框架的核心功能可以在任何Java应用程序中使用,但也有扩展的Java EE平台上构建Web应用程序。 Spring框架的目标,以使J2EE开发更容易使用,并且通过使基于POJO的编程模型,促进良好的编程习惯。

使用Spring框架的好处:
以下是一些使用Spring框架的极大的好处列表:

Spring 使开发人员使用POJO来开发企业级应用程序。仅使用POJO的好处是不需要EJB容器产品,如应用服务器,但必须只使用一个强大的servlet容器,如Tomcat 或某些商业产品的选择。

Spring 被组织在一个模块化的方式。虽然包和类的数量是巨大的,你只有担心那些需要的,而其它的就忽略了。

Spring不重新发明轮子,而是真正利用了一些像一些ORM框架,日志框架,JEE,Quartz和JDK定时器,其他视图技术的现有技术。

编写测试Spring的应用程序很简单,因为环境相关的代码被移动到这个框架中。此外,通过使用JavaBean风格的POJO,它变得更容易使用依赖注入注入测试数据。

Spring web框架是一个设计良好的Web MVC框架,它提供了一个很好的替代Web框架,如Struts或其他过度设计或不太流行的Web框架。

Spring提供了一个方便的API平移技术特定的异常(通过JDBC,Hibernate,或者JDO抛出,例如)成一致,未经检查的异常。

轻量级的IoC容器往往是轻量级的,尤其是相对EJB容器,例如。这有利于开发和有限的内存和CPU资源的计算机上部署应用程序。

Spring提供了一致的事务管理接口,可向下扩展到(使用一个单一的数据库,例如)本地事务并扩展到全局事务(使用JTA,例如)。

依赖注入(DI):
Spring最有确定的技术是依赖注入控制反转(DI)。控制反转(IoC)是一个笼统的概念,它可以表现在许多不同的方式和依赖注入仅仅是控制反转的一个具体的例子。

当编写一个复杂的Java应用程序,应用程序类应该尽可能独立其他Java类来增加重复使用这些类,并独立于其他类别的测试它们,而这样做单元测试的可能性。依赖注入有助于粘合这些类在一起,同时保持他们的独立。

什么是依赖注入是什么呢?让我们来看看这两个词分开。这里的依赖性部分转化为两个类之间的关联。例如,A类是依赖B类,现在,让我们来看看第二部分,注入。这一切都意味着,B类将由IOC注入到A类得到。

依赖注入可以将参数传递给构造函数的方式或使用后建设setter方法​​发生。依赖注入是Spring框架的核心,所以会在一个单独的章节,一个不错的例子解释这个概念。

面向切面编程(AOP):
Spring的一个关键组件是面向切面编程(AOP)框架。跨越多个点的应用程序的功能被称为横切关注点和这些横切关注点是从应用程序的业务逻辑概念上区分开来。有方面的各种常见很好的例子包括日志记录,声明性事务,安全性和高速缓存等。

模块化的OOP关键单元是类,而在AOP中模块化的单元则是切面。DI帮助您从彼此分离的应用程序对象,AOP可以帮助你消除来自他们影响的对象横切关注点。

Spring框架AOP模块提供了面向方面编程实现,允许您定义方法拦截器和切入点,以干净脱钩,实现的功能,应该分开代码。我将在单独的一章讨论Spring AOP的概念。

Hello World
让我们从实际编程中使用Spring框架。在开始编写使用Spring框架的第一个例子,你必须确保已经设置Spring环境。需要对Eclipse IDE有一点知识。

因此,让我们着手编写一个简单的Spring应用程序将打印 “Hello World!” 或基于Spring bean 配置文件来完成配置的其他信息。

第1步 - 创建Java项目:
第一步是使用Eclipse IDE 创建一个简单的Java项目。选项 File -> New -> Project 最后选择 Java Project 从向导列表向导。现在,项目命名为 HelloSpring 使用向导窗口,如下所示:

项目创建成功后,将在 Project Explorer 看到下面的内容:

第2步 - 添加必需的库:
第二步添加 Spring框架,并在我们的项目中通用的日志API库。要做到这一点,右键单击您的项目名称 HelloSpring 然后按照上下文菜单中提供以下选项: Build Path -> Configure Build Path 如下显示的Java 构建路径窗口:

现在,使用Add External JARs 选项 Libraries 卡提供外部JAR按钮,添加从Spring框架和通用日志安装目录下面的核心JAR文件:

  • antlr-runtime-3.0.1
  • org.springframework.aop-3.1.0.M2
  • org.springframework.asm-3.1.0.M2
  • org.springframework.aspects-3.1.0.M2
  • org.springframework.beans-3.1.0.M2
  • org.springframework.context.support-3.1.0.M2
  • org.springframework.context-3.1.0.M2
  • org.springframework.core-3.1.0.M2
  • org.springframework.expression-3.1.0.M2
  • commons-logging-1.1.1

第3步 - 创建源文件:
现在让我们根据实际创建的源文件 HelloSpring 项目。首先,我们需要创建一个名为包 com.yiibai. 要做到这一点,右键点击 src 在包资源管理部分,并按照选项:New -> Package.

下一步我们创建 HelloWorld.java 和 MainApp.java 在com.yiibai 包下文件。

这里是 HelloWorld.java 的文件的内容:

package com.yiibai;

public class HelloWorld {
  private String message;

  public void setMessage(String message){
   this.message = message;
  }

  public void getMessage(){
   System.out.println("Your Message : " + message);
  }
}

下面是第二个文件 MainApp.java 的内容:

package com.yiibai;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class MainApp {
  public static void main(String[] args) {
   ApplicationContext context =
       new ClassPathXmlApplicationContext("Beans.xml");

   HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

   obj.getMessage();
  }
}

有以下两个要点需要注意在主要程序中:

第一步是创建在这里我们使用框架API ClassPathXmlApplicationContext() 应用程序上下文。这个API加载 beans 的配置文件,并最终基于所提供的API,它需要创建并初始化所有的对象。在配置文件中提到的beans 类。

第二个步骤是用来使用创建的上下文的 getBean() 方法获得所需的bean。此方法使用 bean 的 id 返回,最终可以创建实际对象的通用对象。一旦有了对象,就可以使用这个对象调用任何类方法。

第4步 - 创建bean配置文件:
需要创建一个bean 配置文件,该文件是一个XML文件,并作为 cement 等类组合在一起。这个文件需要在src 目录下创建如下图所示:

通常开发人员保留此文件的名称为 beans.xml 文件,但是必须为独立的,选择你喜欢的任何名称。必须确保这个文件在 CLASSPATH 中可用,并使用相同的名称在主应用程序而创建的应用程序上下文,如图MainApp.java文件。

在 beans.xml 中用于分配唯一的ID,以不同的 bean 和控制创造不同的值对象,而不会影响任何 Spring 的源文件。例如,使用下面的文件,可以通过为“message”变量的任何值,这样你就可以打印消息的不同的值,而不会影响的 HelloWorld.java 和 MainApp.java 文件。让我们来看看它是如何工作的:

<?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-3.0.xsd">

  <bean id="helloWorld" class="com.yiibai.HelloWorld">
    <property name="message" value="Hello World!"/>
  </bean>

</beans>

在Spring 应用程序被加载到内存中,框架利用了上面的配置文件来创建所有定义的 Bean,并在 <bean> 标记定义为它们分配一个唯一的 ID。您可以使用 <property> 标签来传递在创建对象时使用不同的变量的值。

第5步 - 运行程序:
创建源代码和 bean 配置文件来完成,准备好这一步是编译和运行程序。要做到这一点,保持 MainApp.Java 文件选项卡激活并使用在Eclipse IDE中提供 Run 选项,或使用Ctrl + F11可以编译并运行应用程序MainApp。如果一切顺利那么应用程序这将打印以下信息在 Eclipse IDE 控制台:

Your Message : Hello World!
恭喜,你已经创建了第一个Spring应用并成功执行。您可以通过更改“message”属性的值,并保持两者的源文件不变见上 Spring 应用程序的灵活性。

(0)

相关推荐

  • 实例讲解Java的Spring框架中的AOP实现

    简介 面向切面编程(AOP)提供另外一种角度来思考程序结构,通过这种方式弥补了面向对象编程(OOP)的不足. 除了类(classes)以外,AOP提供了 切面.切面对关注点进行模块化,例如横切多个类型和对象的事务管理. (这些关注点术语通常称作 横切(crosscutting) 关注点.) Spring的一个关键的组件就是 AOP框架. 尽管如此,Spring IoC容器并不依赖于AOP,这意味着你可以自由选择是否使用AOP,AOP提供强大的中间件解决方案,这使得Spring IoC容器更加完善

  • java集合框架的体系结构详细说明

    最近在一本J2EE的书中看到了很不错的对集合框架的说明文章,筛选后发上来和大家共享,集合框架提供管理对象集合的接口和类.它包含接口,类,算法,以下是它的各个组件的说明. Collection接口 Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements).一些Collection允许相同的元素而另一些不行.一些能排序而另一些不行.Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自

  • 详解Java的MyBatis框架中的事务处理

    一.MyBatis单独使用时,使用SqlSession来处理事务: public class MyBatisTxTest { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; @BeforeClass public static void setUpBeforeClass() throws Exception { try { reader = Resources.getResourc

  • java集合框架 arrayblockingqueue应用分析

    Queue ------------ 1.ArrayDeque, (数组双端队列) 2.PriorityQueue, (优先级队列) 3.ConcurrentLinkedQueue, (基于链表的并发队列) 4.DelayQueue, (延期阻塞队列)(阻塞队列实现了BlockingQueue接口) 5.ArrayBlockingQueue, (基于数组的并发阻塞队列) 6.LinkedBlockingQueue, (基于链表的FIFO阻塞队列) 7.LinkedBlockingDeque, (

  • 详解Java的Spring框架中的注解的用法

    1. 使用Spring注解来注入属性 1.1. 使用注解以前我们是怎样注入属性的 类的实现: class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件: <bean id="userManagerImpl" class="com.

  • Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper的内置方法 model层就是实体类,对应数据库的表.controller层是Servlet,主要是负责业务模块流程的控制,调用service接口的方法,在struts2就是Action.Service层主要做逻辑判断,Dao层是数据访问层,与数据库进行对接.至于Mapper是mybtis框架的映射用到,mapper映射文件在dao层用. 下面是介绍一下Mapper的内置方法: 1.countByExample ===>根据条件查询数量 int countByExample(UserE

  • Java开发者必备10大数据工具和框架

    当今IT开发人员面对的最大挑战就是复杂性,硬件越来越复杂,OS越来越复杂,编程语言和API越来越复杂,我们构建的应用也越来越复杂.根据外媒的一项调查报告,中软卓越专家列出了Java程序员在过去12个月内一直使用的一些工具或框架,或许会对你有意义. 先来看看大数据的概念.根据维基百科,大数据是庞大或复杂的数据集的广义术语,因此传统的数据处理程序不足以支持如此庞大的体量. 在许多情况下,使用SQL数据库存储/检索数据都是很好的选择.而现如今的很多情况下,它都不再能满足我们的目的,这一切都取决于用例的

  • Java的MyBatis框架中实现多表连接查询和查询结果分页

    实现多表联合查询 还是在david.mybatis.model包下面新建一个Website类,用来持久化数据之用,重写下相应toString()方法,方便测试程序之用. package david.mybatis.model; import java.text.SimpleDateFormat; import java.util.Date; public class Website { private int id; private String name; private int visito

  • 在Java的Hibernate框架中对数据库数据进行查询操作

    Hibernate查询语言(HQL)是一种面向对象的查询语言,类似于SQL,但不是对表和列操作,HQL适用于持久对象和它们的属性. HQL查询由Hibernate转换成传统的SQL查询,这在圈上的数据库执行操作. 虽然可以直接使用SQL语句和Hibernate使用原生SQL,但建议使用HQL尽可能避免数据库可移植性的麻烦,并采取Hibernate的SQL生成和缓存策略的优势. 都像SELECT,FROM和WHERE等关键字不区分大小写,但如表名和列名的属性是区分在HQL敏感. FROM 语句 使

  • 详解Java的Spring框架中的事务管理方式

    数据库事务是被当作单个工作单元的操作序列.这些操作要么全部完成或全部不成功.事务管理是面向企业应用程序,以确保数据的完整性和一致性RDBMS中的重要组成部分.事务的概念可以用下面的描述为ACID四个关键属性来描述: 原子性: 一个事务应该被视为单个操作单元表示的操作的任一整个序列是成功的或不成功的. 一致性: 这代表了数据库的参照完整性,在桌等唯一主键的一致性 隔离性: 可能有很多事务处理相同的数据集的同时,每个事务都应由他人隔离,以防止数据损坏. 持久性: 一旦事务完成,本次事务的结果必须作出

随机推荐