`
kidiaoer
  • 浏览: 818611 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Spring的简单应用实例

阅读更多
Spring的简单应用实例



先定义一个接口human,
   1. public interface human{
   2.     void eat();
   3.     void walk();
   4. }

 


然后写出实现这个接口的两个子类Chinese和American类
   1. public class Chinese implements Human{
   2. public void eat(){
   3. System.out.println("中国人对吃很有研究");
   4. }
   5. public void walk(){
   6. System.out.println("中国人田径运动不是很强");
   7. }
   8. }
   9. public class American implements Human{
  10. public void eat(){
  11. System.out.println("美国人以吃面包为主");
  12. }
  13. public void walk(){
  14. System.out.println("美国的田径运动比较厉害");
  15. }
  16. }

 


然后创建一个工厂类factory,以实现工厂模式
   1. public class factory{
   2.    public Human getHuman(String name){
   3.     if(name.equalsIgnoreCase(chinese))
   4.           return new Chinese();
   5.     else if(name.equalsIgnoreCase(American)
   6.          return new American();
   7.      else 
   8.          throw IllegalArgumentException("你输入的人种错误,不能创建该对象");
   9. }
  10. }

 


下面是一个测试程序,使用工厂方法创建对象
   1. import java.util.Scanner;
   2.
   3. public class ClientTest{
   4. public static void main(String[] args){
   5.
   6.    System.out.println("input the name of you want to create:");
   7.    Scanner s=new Scanner(System.in);
   8.    String name=s.nextline();
   9.    Human human=null;
  10.    human=new factory().getHuman(name);
  11.    human.eat();
  12.    human.walk();
  13. }
  14. }

这就是java的工厂模式

下面介绍一下java spring的IoC(控制翻转inversion of control)模式

在项目根目录下创建一个beam.xml文件
   1. <?xml version="1.0" encoding="UTF-8"?>
   2. <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
   3. <beans>
   4.        <bean id="Chinese" class="cn.com.chengang.spring.Chinese"/>
   5.        <bean id="American" class="cn.com.chengang.spring.American"/>
   6. </beans>
7.

然后修改ClientTest代码如下:
   1. import org.springframework.context.support.FileSystemXmlApplicationContext;
   2. public class ClientTest {
   3.
   4.     public static void main(String[] args) {
   5.
   6.         ApplicationContext ctx = new FileSystemXmlApplicationContext("bean.xml");
   7.         System.out.println("...");
   8.         Scanner s=new Scanner(System.in);
   9.         String name=s.nextline();
  10.         Human human=null;
  11.          human=(Human)ctx.getBean(name);
  12.         human.eat();
  13.          human.walk();
  14.     }
  15. }
16.

从这个程序可以看到,ctx就相当于原来的Factory工厂,原来的Factory就可以删除掉了。然后又把Factory里的变量移到了ClientTest类里,整个程序结构基本一样。

也许有人说,IoC和工厂模式不是一样的作用吗,用IoC好象还麻烦一点。
       举个例子,如果用户需求发生变化,要把Chinese类修改一下。那么前一种工厂模式,就要更改Factory类的方法,并且重新编译布署。而IoC只需要将class属性改变一下,并且由于IoC利用了Java反射机制,这些对象是动态生成的,这时我们就可以热插拨Chinese对象

关于IoC的低侵入性。
什么是低侵入性?如果你用过Struts或EJB就会发现,要继承一些接口或类,才能利用它们的框架开发。这样,系统就被绑定在Struts、EJB上了,对系统的可移植性产生不利的影响。如果代码中很少涉及某一个框架的代码,那么这个框架就可以称做是一个低侵入性的框架。
Spring的侵入性很低,Humen.java、Chinese.java等几个类都不必继承什么接口或类。但在ClientTest里还是有一些Spring的影子:FileSystemXmlApplicationContext类和ctx.getBean方式等。
现在,低侵入性似乎也成了判定一个框架的实现技术好坏的标准之一
分享到:
评论

相关推荐

    spring boot 简单案例下载

    在“spring boot 简单案例下载”中,我们可以推测这是一个包含了一些基本的 Spring Boot 示例项目的压缩包。这些示例可能是为了帮助初学者理解和学习 Spring Boot 的核心特性而准备的。下面,我们将深入探讨 Spring ...

    spring 应用aop 实例

    通过上述步骤,你可以创建一个简单的Spring AOP应用,实现对特定方法的调用进行日志记录。当然,AOP的潜力远不止于此,你可以根据实际场景扩展通知类型,或者创建更复杂的切入点表达式,以实现更细粒度的控制。 在...

    spring定时器简单实例

    它支持基于cron表达式或者固定延迟/间隔的定时任务,可以方便地集成到Spring应用中。 2. **启用Spring Task**: 要使用Spring定时任务,首先需要在Spring Boot的配置类上添加`@EnableScheduling`注解,这会启动一...

    spring 简单实例 事务回滚

    在这个“spring简单实例 事务回滚”的案例中,我们将深入探讨Spring如何处理事务回滚,以及它是如何在Java源码层面实现这一功能的。 首先,让我们理解什么是事务。在数据库操作中,事务是确保数据一致性的重要机制...

    Spring Bean简单应用实例

    在这个"Spring Bean简单应用实例"中,我们将深入理解这两个概念以及如何在实际应用中使用它们。 首先,控制反转(IoC)是一种设计模式,它将对象的创建和管理职责从应用代码中分离出来,转交给容器来处理。这样,...

    Job 基于spring简单实例

    在“Job基于Spring简单实例”中,我们可能会遇到以下关键概念和组件: 1. **配置Spring任务调度**: 配置Spring的任务调度通常需要在配置类中启用`@EnableScheduling`注解,这会启动一个后台任务调度器,定期检查...

    IDEA中使用Spring的简单入门(加小案例)

    在本文中,我们将深入探讨如何在IntelliJ IDEA(IDEA)中使用Spring框架进行简单的入门。Spring是一个广泛使用的开源Java框架,它为构建企业级应用程序提供了强大的支持,包括依赖注入、面向切面编程(AOP)、事务...

    maven+spring简单实例

    在“maven+spring简单实例”中,我们主要探讨如何结合这两个强大的工具来创建一个简单的Java应用。首先,我们需要了解Maven的工作原理。Maven通过项目对象模型(Project Object Model, POM)来描述项目,并利用插件...

    Spring例子

    在Spring MVC中,Controller通常是一个简单的Java类,使用了`@Controller`注解来标识。它包含了处理HTTP请求的方法,这些方法通常使用`@RequestMapping`注解来定义请求映射。例如,一个处理获取医院叫号信息的请求的...

    mybatis-spring整合简单的实例代码

    【标题】"mybatis-spring整合简单实例代码"所涉及的知识点主要集中在如何将MyBatis与Spring框架进行集成,以便在Spring应用中利用MyBatis进行数据访问。这一过程通常包括以下几个关键步骤: 1. **环境配置**:首先...

    Spring MVC框架实例

    **Spring MVC 框架实例详解** Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的 Model-View-Controller (MVC) 模型的实现。在基于 Spring 2.5 的项目中,XML 配置是主要的配置方式,相比...

    spring+mybatis 简单实例图书管理系统

    这个简单实例的学习价值在于,它可以帮助初学者理解如何将Spring和MyBatis结合使用来构建一个完整的应用程序。开发者可以通过这个例子学习到如何配置Spring的Bean,如何创建MyBatis的Mapper,以及如何在Spring中调用...

    Spring入门案例

    总的来说,"Spring入门案例"旨在帮助初学者理解Spring的基本原理和使用方式,包括但不限于Bean的定义与管理、依赖注入的实现、以及Spring如何简化企业级应用的开发。通过深入学习和实践这个案例,你将能够更好地掌握...

    spring整合jpa简单实例

    **Spring 整合 JPA 简单实例** 在现代的Java开发中,Spring框架与JPA(Java Persistence API)的结合使用已经成为了一个常见的实践,它简化了数据库操作,提供了对象关系映射(ORM)的功能。JPA是Java EE的一部分,...

    简单Spring 实例(自己写的)

    对于初学者,这个实例是一个很好的起点,因为它提供了从头到尾的 Spring 应用体验。你可以通过阅读源码了解 Spring 如何配置和管理 bean,如何实现 MVC 模式,以及如何与 JSP 配合工作。同时,不要忘记利用 Spring ...

    struts+hibernate+spring简单实例

    在这个"struts+hibernate+spring简单实例"中,开发者通过这三个框架的集成,创建了一个基础的登录验证系统。用户输入用户名和密码,这些信息会被发送到后台进行处理。首先,Struts作为前端控制器接收HTTP请求,并...

    Spring Cloud项目实例

    Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的简单方法。...

    spring-jdbcTemplate实例工程

    在这个实例工程中,我们将深入探讨Spring JdbcTemplate的基本使用、优势以及常见操作。 一、Spring JdbcTemplate简介 Spring JdbcTemplate的出现是为了弥补原生JDBC在编码上的繁琐,它通过模板方法模式,将SQL执行...

    spring一些简单的例子

    在这个名为"spring一些简单的例子"的压缩包中,你可能会找到一系列帮助初学者理解并掌握Spring框架基础知识的代码示例。以下是一些相关的知识点和详细说明: 1. **依赖注入(Dependency Injection)**:Spring的...

    spring-quartz简单实例

    在这个"spring-quartz简单实例"中,我们将探讨如何在Spring环境下配置和使用Quartz。 首先,我们需要引入Quartz和Spring的依赖。在Maven项目中,这通常通过在pom.xml文件中添加以下依赖来完成: ```xml ...

Global site tag (gtag.js) - Google Analytics