利用Spring框架为自己的校园卡充值(推荐)

目录
  • CardDao类
  • StudentCard类
  • CardBiz类
  • test类(src\test\java\test.java)
  • applicationContext.xml(配置文件)

实验要求:
在Dao层建立CardDao类,编写充值方法(save()),实现充值(在控制台显示充值金额),在Biz层建立CardBiz类,编写充值方法(charge()),调用Dao层中的充值方法(save()),完成充值。充值金额在配置文件中输入(应用test中 输入)。实现过程中不能利用new 操作来完成类的实例化(IoC容器)。

实验分析:

建立CardDao类,在此类下编写方法save(),以实现充值(在控制台显示充值金额);建立StudentCard类,在此类下定义余额,以此记录并获取学生卡里的余额;建立CardBiz类,在此类下编写方法charge(),以实现将方法save()里的充值金额与学生卡里的余额相加,获得充值后的金额。题目要求不能使用new来完成对类的实例化,应采用配置文件进行操作,即本章内容IOC容器(控制反转),其中还会用到DI(依赖注入)。

实验操作所用工具(软件):
IntelliJ IDEA 2021.2.1

实验需要建立三层结构,分别是:Dao层、Biz层、Entity层。

以此建立三层结构。即在工程文件下的src文件夹的main中的Java建立三个包(package)。在resource下编写配置文件。
在工程文件下的src文件夹的test中的Java建立test类。
效果如图:

代码实现:

CardDao类

package com.cqust.dao;

import com.cqust.entity.StudentCard;

public class CardDao {
    public void save(double money){
        System.out.println("您的充值金额为:¥" + money);
    }
}

StudentCard类

package com.cqust.entity;

public class StudentCard {
    double balance;         //定义余额

    public double getBalance() {
        return balance;     //返回余额
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }
}

CardBiz类

package com.cqust.biz;

import com.cqust.dao.CardDao;
import com.cqust.entity.StudentCard;

public class CardBiz {
    private StudentCard studentCard;	//定义一个StudentCard对象
    private CardDao cardDao;			//定义一个CardDao对象
    public void setStudentCard(StudentCard studentCard) {
        this.studentCard = studentCard;
    }
    public void setCardDao(CardDao cardDao) {
        this.cardDao = cardDao;
    }
    public void charge(double money){
        cardDao.save(money);        					//调用cardDao里的save方法
        double sum = studentCard.getBalance() + money;	//将学生卡里的余额加上需要充值的金额
        System.out.println("充值成功!当前您的余额为:¥" + sum);	//输出充值后的金额
    }
}

test类(src\test\java\test.java)

import com.cqust.biz.CardBiz;
import com.cqust.entity.StudentCard;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class test {
    public static void main(String[] args) {
        //获取核心容器(IoC)对象
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        //获取xml文件中的bean
        CardBiz cardBiz= (CardBiz) applicationContext.getBean("cardBiz");
        //获取xml文件中的bean
        StudentCard studentCard= (StudentCard) applicationContext.getBean("studentCard");
        //传一个数值给cardBiz里的charge方法进行充值,此处我给的800,吃好一点哈哈哈
        cardBiz.charge(800);
    }
}

applicationContext.xml(配置文件)

< property >是< bean >元素的子元素,它用于调用Bean实例中的setXXX()方法完成属性赋值,从而实现依赖注入,其name属性表示Bean实例中的相应属性名,ref属性用于表示指定其属性值。

<?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="studentCard" class="com.cqust.entity.StudentCard">
        <property name="balance" value="88.88"></property>      <!--将学生卡的余额设置为88.8元-->
    </bean>
    <bean id="cardDao" class="com.cqust.dao.CardDao"></bean>
    <bean id="cardBiz" class="com.cqust.biz.CardBiz">
        <property name="studentCard"  ref="studentCard"></property>
        <property name="cardDao" ref="cardDao"></property>
    </bean>
</beans>

程序运行结果:

实验总结:
  本次实验主要运用了Spring的控制反转(IOC)和依赖注入(DI)等知识,通过利用Spring框架编写Java程序,实现学生卡的单次充值。如需对学生卡进行多次充值,可将部分代码修改即可实现。
  在传统Java开发下,调用者会采用“new 被调用者”的代码方式来创建被调用者这个需要使用的对象。而使用Spring框架,被调用者只需要让spring容器来创建。从spring的角度来看,仅仅是进行了依赖注入(DI);从项目的角度来看,控制权从应用代码转移到了spring容器,发生了控制反转(IOC),所以说依赖注入和控制反转只是从两个角度描述了同一个概念。IOC的概念更广,使用了DI的程序一定使用了IOC,但是使用了IOC的程序不一定使用了DI。
IoC(控制反转)
  首先想说说IoC(Inversion of Control,控制反转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这个过程是复杂深奥的,我们必须自己设计和面对每个环节。传统的程序开发也是如此,在一个对象中,如果要使用另外的对象,就必须得到它(自己new一个,或者从JNDI中查询一个),使用完之后还要将对象销毁(比如Connection等),对象始终会和其他的接口或类藕合起来。
  那么IoC是如何做的呢?Spring所倡导的开发方式就是,所有的类都会在spring容器中登记,告诉spring你是个什么,你需要什么,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。
DI(依赖注入)
  IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象H需要操作数据库,以前我们总是要在H中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,H中需要一个Connection,至于这个Connection怎么构造,何时构造,H不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注入到H当中,这样就完成了对各个对象之间关系的控制。H需要依赖 Connection才能正常运行,而这个Connection是由spring注入到H中的,依赖注入的名字就这么来的。那么DI是如何实现的呢? Java 1.3之后一个重要特征是反射(reflection),它允许程序在运行的时候动态的生成对象、执行对象的方法、改变对象的属性,spring就是通过反射来实现注入的。
  理解了IoC和DI的概念后,一切都将变得简单明了,剩下的工作就是在spring的框架中堆积木啦。
  对于Spring IoC这个核心概念,我相信每一个学习Spring的人都会有自己的理解。这种概念上的理解没有绝对的标准答案,仁者见仁智者见智。如果有理解不到位或者理解错的地方,欢迎广大园友指正!

到此这篇关于利用Spring框架为自己的校园卡充值的文章就介绍到这了,更多相关Spring框架校园卡充值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • springboot整合flowable框架入门步骤

    最近工作中有用到工作流的开发,引入了flowable工作流框架,在此记录一下springboot整合flowable工作流框架的过程,以便后续再次使用到时可以做一些参考使用,如果项目中有涉及到流程审批的话,可以使用该框架帮我们实现流程图示化展示的功能,为了快速了解flowable工作流框架的一个使用过程,我们直接步入主题,springboot整合flowable工作流框架的步骤如下: 1.首先创建一个springboot工程,然后引入flowable pom依赖,代码如下: <dependenc

  • 深入介绍Spring框架及故障排除

    目录 Spring的缺点 不可理解性 按注释编程 故障排除 为什么是Spring IoC? 选择 其他人在说什么 结论 前言: 曾几何时,Spring框架提供了比J2EE更轻量级和更灵活的解决方案.即使在2013年左右,我也很高兴详细了解当时的新款Spring 4.如今,7年后,当我看到春天的时候,我感到一阵恐慌.注释和@ComponentScan已经用更好的东西取代了XML,这需要一个可视化工具来理解您的系统.Spring变成了一头不断生长(和变化)的水螅.我接手并试图理解他人编写的Sprin

  • SpringSecurity框架简介及与shiro特点对比

    目录 一.SpringSecurity框架简介 二.比较一下shiro与SpringSecurity 2.1.用户量 2.2.使用的方便程度 2.3.社区支持 2.4.功能丰富性 三.总结 一. SpringSecurity 框架简介 官网:https://spring.io/projects/spring-security Spring Security 是强大的,且容易定制的,基于Spring开发的实现认证登录与资源授权的应用安全框架. SpringSecurity 的核心功能: Authe

  • Spring框架对于Bean的管理详解

    目录 什么是Bean管理 Bean管理操作的两种方式 基于注解的方式实现Bean管理和注入属性(常用) 1.什么是注解 2.Spring针对Bean管理中创建对象提供的注解 3.用注解的方式创建对象 4.用注解的方实现属性注入 什么是Bean管理 bean管理指的是如下的两个操作. 1.创建对象 2.注入属性 Bean管理操作的两种方式 1.基于xml配置文件的方式实现 2.基于注解方式实现 基于注解的方式实现Bean管理和注入属性(常用) 1.什么是注解 ①:注解是代码特殊标记,格式:@注解名

  • Spring框架之IOC介绍讲解

    目录 一.对spring的理解 二.spring中ioc的特点 2.1控制反转 2.2注入依赖 方式① set注入 方式② 构造注入 方式③ 自动装配 三.spring与web容器的整合 一.对spring的理解 spring是一个开源框架,它由Rod Johnson 创建.它是为了解决企业应用开发的复杂性而创建的. 目的:解决企业应用开发的复杂性 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Java应用 简单来说,Spring是一个轻量级的控制反转(IoC

  • 利用Spring框架为自己的校园卡充值(推荐)

    目录 CardDao类 StudentCard类 CardBiz类 test类(src\test\java\test.java) applicationContext.xml(配置文件) 实验要求:在Dao层建立CardDao类,编写充值方法(save()),实现充值(在控制台显示充值金额),在Biz层建立CardBiz类,编写充值方法(charge()),调用Dao层中的充值方法(save()),完成充值.充值金额在配置文件中输入(应用test中 输入).实现过程中不能利用new 操作来完成类

  • Java Web程序中利用Spring框架返回JSON格式的日期

    返回Json时格式化日期Date 第一步:创建CustomObjectMapper类 /** * 解决SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳的问题.需配合<mvc:message-converters>使用 */ @Component("customObjectMapper") public class CustomObjectMapper extends ObjectMapper { public CustomObject

  • Spring框架基于AOP实现简单日志管理步骤解析

    SPringAOP的使用 技术概述,描述这个技术是做什么?学习该技术的原因,技术的难点在哪里. 为了实现项目管理员端的操作数据库日志,便于方便所以利用Spring框架的AOP机制进行实现,项目的难点在于如果设置切入点,如何获取参数. 技术详述,描述你是如何实现和使用该技术的,要求配合代码和流程图详细描述.可以再细分多个点,分开描述各个部分. 在applicationContext.xml中开启AOP代理 <aop:aspectj-autoproxy /> 自定义一个注解 @Target(Ele

  • 使用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框架的设计理念与设计模式

    本文主要剖析Spring框架的作者设计Spring框架的骨骼架构的设计理念,有那几个核心组件?为什么需要这些组件?它们又是如何结合在一起构成Spring的骨骼架构?Spring的AOP特性又是如何利用这些基础的骨骼架构来工作的?Spring中又使用了那些设计模式来完成它的这种设计的?它的这种设计理念对我们以后的软件设计有何启示?本文将详细解答这些问题. Spring的骨骼架构 Spring总共有十几个组件,但是真正核心的组件只有几个,下面是Spring框架的总体架构图: 图1.Spring框架的

  • 浅析Java的Spring框架中IOC容器容器的应用

    Spring容器是Spring框架的核心.容器将创建对象,它们连接在一起,配置它们,并从创建到销毁管理他们的整个生命周期.在Spring容器使用依赖注入(DI)来管理组成应用程序的组件.这些对象被称为Spring Beans. 容器获得其上的哪些对象进行实例化,配置和组装通过阅读提供的配置元数据的说明.配置元数据可以通过XML,Java注释或Java代码来表示.下面的图是Spring如何工作的高层次图. Spring IoC容器是利用Java的POJO类和配置元数据的产生完全配置和可执行的系统或

  • 在Java的Spring框架的程序中使用JDBC API操作数据库

    同时与数据库使用普通的旧JDBC的工作,它变得繁琐写不必要的代码来处理异常,打开和关闭数据库连接等,但Spring的JDBC框架需要的所有低层次细节从打开连接,准备和执行SQL语句,过程异常,处理事务,最后关闭连接. 所以,你所要做的只是定义连接参数,并指定要执行的SQL语句,并做必要的工作,在每次迭代时从数据库中获取数据. Spring JDBC提供了一些方法和相应不同的类与数据库进行交互.我要采取经典和最流行的做法,利用JdbcTemplateclass框架.这是管理的所有数据库的通信和异常

  • Java的Spring框架中AOP项目的一般配置和部署教程

    0.关于AOP 面向切面编程(也叫面向方面编程):Aspect Oriented Programming(AOP),是软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP是OOP的延续. 主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等. 主要的意图是:将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过

  • 解析Java的Spring框架的基本结构

    在java届,有位名叫Rod Johnson的牛人,发现最初的java企业级开发处于混沌状态. 于是,它决心编写一个能够解决问题的通用的基础架构. 因为它深信面向接口编程能够将变化控制到最小,同时也利于扩展和变化.于是,它编写了如下的接口. 在混沌状态最先要创造的是一切对象的母亲BeanFactory,有了它,就能够得到一切它孕育的对象和属性,也就是说首先要造盖亚--大地之母. 有了最初的母亲BeanFactory,johnson想,如果我要得到一组Bean对象而不单单是某个或某几个呢?另外,如

  • 详解Spring框架入门

    一.什么是Spring Spring框架是由于软件开发的复杂性而创建的.Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情.然而,Spring的用途不仅仅限于服务器端的开发.从简单性.可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益.Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架. ◆目的:解决企业应用开发的复杂性 ◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 ◆范围:任何Java应用 二.

随机推荐