Java后端开发——Spring实验

news2024/9/23 13:19:25

文章目录

  • Java后端开发——Spring实验
    • 一、Spring入门
      • 1.创建项目,Spring依赖包。
      • 2.创建JavaBean:HelloSpring
      • 3.编写applicationContext.xml配置文件
      • 4.测试:启动Spring,获取Hello示例。
    • 二、Spring基于XML装配实验
      • 1.创建JavaBean类:Account.java
      • 2.创建DAO类: AccountDao.java
      • 3.创建Service类:AccountService.java
      • 4.创建Controller类:AccountController.java
      • 5.编写applicationContext.xml配置文件
      • 6.创建TestAccount.java
    • 三、Spring基于注解装配实验
      • 1.导入依赖
      • 2.XML配置文件
      • 3.定义实体类
      • 4.定义dao层
      • 5.实现dao层
      • 6.定义service层
      • 7.实现service层
      • 8.定义controller层
      • 9.定义测试类
      • 10.查看运行结果
    • 四、纯注解配置类
      • 1.创建注解配置类,取代XML配置文件
      • 2.通过注解@Autowired实现按类型自动注入
      • 3.定义测试注解配置类
    • 五、项目jar包

Java后端开发——Spring实验

一、Spring入门

Spring框架是一个开放源代码的J2EE应用程序框架,由Rod Johnson发起,是针对bean的生命周期进行管理的轻量级容器(lightweight container)。 Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于J2EE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC。

1.创建项目,Spring依赖包。

在这里插入图片描述

2.创建JavaBean:HelloSpring

package com.javaweb.bean;

public class HelloSpring {
    private String userName;
    public void setUserName(String userName){
        this.userName=userName;	}
    public void show() { 
        System.out.println(userName+":欢迎来到Spring");	}
}

在这里插入图片描述

3.编写applicationContext.xml配置文件

<?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="helloSpring" class="bean.HelloSpring">
        <property name="userName" value="张三"></property>
    </bean>
</beans>

在这里插入图片描述

4.测试:启动Spring,获取Hello示例。

package com.javaweb.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.javaweb.bean.HelloSpring;
public class TestHelloSpring {
  public static void main(String[] args) {
     // 初始化spring容器,加载applicationContext.xml配置
     ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
       // 通过容器获取配置中helloSpring的实例
    HelloSpring helloSpring = (HelloSpring) applicationContext.getBean("helloSpring");
		helloSpring.show();// 调用方法 }
	}
}

在这里插入图片描述

二、Spring基于XML装配实验

说明:使用Spring IOC模拟实现账户添加功能程序

1.创建JavaBean类:Account.java

package com.javaweb.bean;

public class Account {

private String name;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}

在这里插入图片描述

2.创建DAO类: AccountDao.java

模拟账户添加操作

package com.javaweb.dao;

import com.javaweb.bean.Account;

public class AccountDao {

public void save(Account account) {
System.out.println("添加账户信息");
}
}

在这里插入图片描述

3.创建Service类:AccountService.java

模拟账户添加业务

package com.javaweb.service;

import com.javaweb.bean.Account;
import com.javaweb.dao.AccountDao;

public class AccountService {
	private AccountDao dao;
	
	public void setDao(AccountDao dao) {
		this.dao = dao;
	}
	public void save(Account account) {
		dao.save(account);	
	}

}

在这里插入图片描述

4.创建Controller类:AccountController.java

在Web下模拟账户添加请求。

package com.javaweb.controller;

import com.javaweb.bean.Account;
import com.javaweb.service.AccountService;

public class AccountController {
	private AccountService service;
	
	public void setService(AccountService service) {
		this.service = service;
	}

	public void save() {
		Account account=new Account();
		account.setId("12343546465");
		account.setName("张三");
		service.save(account);
	}

}

在这里插入图片描述

5.编写applicationContext.xml配置文件

Dao装配到Service,Service装配到Controller

<?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="helloSpring" class="com.javaweb.bean.HelloSpringE">
<property name="userName" value="张三"></property>
</bean>
<bean id="accountDao" class="com.javaweb.dao.AccountDao"></bean>
<bean id="accountService" class="com.javaweb.service.AccountService">
<property name="dao" ref="accountDao"></property>
</bean>
<bean id="accountController" class="com.javaweb..controller.AccountController">
<property name="service" ref="accountService"></property>
</bean>
</beans>

在这里插入图片描述

6.创建TestAccount.java

在main()方法中加载XML配置文件,实现Spring容器的初始化,通过Spring容器获取Bean实例accountController完成save()方法调用。

package com.javaweb.test;

import com.javaweb.controller.AccountController;

public class TestAccount {

public static void main(String[] args) {
AccountController c=new AccountController();
c.save();
}

}

在这里插入图片描述

三、Spring基于注解装配实验

1.导入依赖

在项目中导入spring-aop.jar依赖包,它包含在应用中使用Spring的AOP特性时所需的类,注解实现需要依赖AOP才能实现。
在这里插入图片描述

2.XML配置文件

创建applicationContext.xml,在该文件中引入Context约束并启动Bean的自动扫描功能。

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/c
http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.javaweb" />
</beans>

在这里插入图片描述

3.定义实体类

新建entity包,在entity包下创建User实体类。

package com.javaweb.entity;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

@Component("user")
@Scope("singleton")
public class User {
@Value("1")
private int id;
@Value("张三")
private String name;
@Value("123")
private String password;
// 省略getter/setter方法和toString()方法
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}

在这里插入图片描述

4.定义dao层

创建UserDao接口作为数据访问层接口,并在UserDao接口中声明save()方法,用于查询User实体的对象信息。

package com.javaweb.dao;

public interface UserDao {
public void save();
}

在这里插入图片描述

5.实现dao层

创建UserDaoImpl作为UserDao的实现类,并在UserDaoImpl类中实现UserDao接口中的save()方法。

package com.javaweb.dao;

import javax.annotation.Resource;

import org.springframework.stereotype.Repository;

import com.javaweb.entity.User;

@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Resource(name="user")
private User user;
public void save(){
System.out.println(user);
System.out.println("执行UserDaoImpl.save()");
}
}

在这里插入图片描述

6.定义service层

创建UserService接口作为业务逻辑层接口,并在UserService接口中定义save()方法。

package com.javaweb.service;

public interface UserService {
public void save();
}

在这里插入图片描述

7.实现service层

创建UserServiceImpl作为UserService的实现类,并在UserServiceImpl类中实现UserService接口中的save()方法。

package com.javaweb.service;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.javaweb.dao.UserDao;

@Service("userService")
public class UserServiceImpl implements UserService {
//使用@Resource注解注入UserDao
@Resource(name="userDao")
private UserDao userDao;
public void save(){
this.userDao.save();
System.out.println("执行UserServiceImpl.save()");
}
}

在这里插入图片描述

8.定义controller层

创建UserController类作为控制层。

package com.javaweb.controller;

import javax.annotation.Resource;

import org.springframework.stereotype.Controller;

import com.javaweb.service.UserService;

@Controller("userController")
public class UserController {
//使用@Resource注解注入UserService
@Resource(name="userService")
private UserService userService;
public void save(){
this.userService.save();
System.out.println("执行UserController.save()");
}
}

在这里插入图片描述

9.定义测试类

创建测试类AnnotationTest,在该类中编写测试代码,通过Spring容器加载配置文件并获取UserController实例,然后调用实例中的save()方法。

package com.javaweb.test;

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

import com.javaweb.controller.UserController;

public class AnnotationTest {
public static void main(String[] args){
ApplicationContext applicationContext=new 
ClassPathXmlApplicationContext("applicationContext.xml");
UserController usercontroller=(UserController) 
applicationContext.getBean("userController");
usercontroller.save();
}
}

在这里插入图片描述

10.查看运行结果

启动AnnotationTest类,控制台会输出结果。
在这里插入图片描述

四、纯注解配置类

1.创建注解配置类,取代XML配置文件

package com.javaweb.config;


import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ComponentScan("com.javaweb")
public class SpringConfig {
}

在这里插入图片描述

2.通过注解@Autowired实现按类型自动注入

Spring的元素中包含一个autowire属性,可以通过设置autowire属性的值实现Bean的自动装配。
在这里插入图片描述

3.定义测试注解配置类

创建测试类AnnotationTest,在该类中编写测试代码,通过Spring容器加载配置文件并获取UserController实例,然后调用实例中的save()方法。

package com.javaweb.test;


import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

import com.javaweb.config.SpringConfig;
import com.javaweb.controller.UserController;

public class AnnotationTest2 {
public static void main(String[] args) {
ApplicationContext applicationContext = new
AnnotationConfigApplicationContext(SpringConfig.class);
UserController usercontroller=applicationContext.getBean(UserController.class);
usercontroller.save();
}

在这里插入图片描述

五、项目jar包

本项目所需要的Spring包已上传到主页——资源处,需要可自行下载。
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1353538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

业务中台-UAT测试用例示例

今天我来和大家分享一下我们在业务中台UAT测试用例的案例&#xff0c;这个案例的编写方式是参考了其他项目来编写的。这个测试用例主要分为两个部分&#xff1a;用例目录和测试具体内容。 对于UAT测试用例&#xff0c;我们理解应该存在两种不同的编写方式&#xff0c;一种是功…

c语言-浮点型数据在内存中的存储

目录 前言一、浮点数存储例子二、浮点数在内存的存储格式2.1 32位浮点数存储格式2.2 64位浮点数存储格式 三、IEEE 754对有效数字M和指数E的规定3.1 对存储有效数字M的规定3.2 对存储指数E的规定3.2.1 E在32位浮点数的存储格式3.2.2 E在64位浮点数的存储格式 3.3 对读取有效数M…

Python 箱线图的绘制(Matplotlib篇-13)

Python 箱线图的绘制(Matplotlib篇-13)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

Python贪吃蛇小游戏(PyGame)

文章目录 写在前面PyGame入门贪吃蛇注意事项写在后面 写在前面 本期内容&#xff1a;基于pygame的贪吃蛇小游戏 实验环境 python3.11及以上pycharmpygame 安装pygame的命令&#xff1a; pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pygamePyGame入门 pygam…

UI5与后端的文件交互(二)

文章目录 前言一、开发Action1. 创建Structure2. BEDF添加Action3. class中实现Action 二、修改UI5 项目1. 添加一个按钮2. 定义事件函数 三、测试及解析1. 测试2. js中提取到的excel流数据3. 后端解析 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使用文件进行…

windows系统安装docker(Hyper-V方式)

文章目录 1 环境准备2 下载3 安装4 替换国内镜像源5 修改镜像存储路径&#xff08;Hyepe-V方式&#xff09; 1 环境准备 ctrlshiftesc查看CPU的虚拟化是否启动 左键单击电脑左下角开始按钮—>点击“设置”—>搜索“Windows功能”—>启用或关闭Windows功能—>勾选H…

阿里云服务器云盘ESSD Entry、SSD、高效云盘性能测评

阿里云服务器系统盘或数据盘支持多种云盘类型&#xff0c;如高效云盘、ESSD Entry云盘、SSD云盘、ESSD云盘、ESSD PL-X云盘及ESSD AutoPL云盘等&#xff0c;阿里云百科aliyunbaike.com详细介绍不同云盘说明及单盘容量、最大/最小IOPS、最大/最小吞吐量、单路随机写平均时延等性…

ElasticSearch数据同步

文章目录 ElasticSearch数据同步1. 同步调用2. 异步通知3. 监听binlog4. 工作中处理同步的问题 ElasticSearch数据同步 ElasticSearch中酒店数据来自于mysql数据库&#xff0c;因此MySQL数据发生改变时&#xff0c;ElasticSearch也必须跟着改变&#xff0c;这个就是ElasticSear…

栈实现后缀表达式的计算

后缀表达式计算 过程分析 中缀表达式 &#xff08;15&#xff09;*3 > 后缀表达式 153* (可参考这篇文章&#xff1a;中缀转后缀) 第一步&#xff1a;我们从左至右扫描 后缀表达式(已经存放在一个字符数组中)&#xff0c;遇到第一个数字字符 ‘1’ 放入栈中第二步&#xf…

北京大学 - 智元机器人(稚晖君)联合实验室正式成立

北京大学计算机学院的官方公告宣布&#xff0c;现已正式成立了“北大 - 智元机器人联合实验室”。 智元机器人是由“华为天才少年”彭志辉&#xff08;稚晖君&#xff09;等来自多家大型科技公司的科技专业人才共同创立的&#xff0c;他们在2023年12月完成了一轮新的融资。 公…

C++大作业——学生选课系统优化版

C大作业——学生选课系统优化版 前言1.学生类和课程类的实现2.输入输出流重载的实现3.增删改查的实现4.多级菜单的实现5.选课和退选的实现5.完整代码 前言 本文是对本人之前写过的一个学生选课系统的优化&#xff0c;整体上的逻辑是和我上一篇博客一样的&#xff08;链接在此&a…

【含ROM】小米刷机之k30pro刷澎湃系统

本教程以我的k30 pro 变焦为例。(同k30 pro) 目录 [ - ] 解bl锁 [ - ] 下载rom [ - ] 开始刷机 [ - ] k30 pro 澎湃下载链接 [ - ] 其他相关资源下载链接 一. 解bl锁 百度一下 小米解bl锁 有很多教程。 建议参考小米社区官网的解锁教程&#xff1a; https://web.vip.miui.co…

Redis:原理速成+项目实战——Redis实战4(解决Redis缓存穿透、雪崩、击穿)

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理项目实战——Redis实战3&#xff08;Redis缓存最佳实践&#xff08;问题解析高级实现&#xff09;&#x…

java练习题之常用类Object类,包装类

常用类 应用知识点&#xff1a; Object类 包装类 习题&#xff1a; 1&#xff1a;(Object 类)仔细阅读以下代码&#xff0c;写出程序运行的结果&#xff1b;并简述 和 equals 的区别。 true false 是判断两个变量或实例是不是指向同一个内存空间。 比较两个引用类型的地址&…

如何做好档案数字化前的鉴定工作

要做好档案数字化前的鉴定工作&#xff0c;可以按照以下步骤进行&#xff1a; 1. 确定鉴定目标&#xff1a;明确要鉴定的档案的内容、数量和性质&#xff0c;确定鉴定的范围和目标。 2. 进行档案清点&#xff1a;对档案进行全面清点和登记&#xff0c;包括数量、种类、状况等信…

鸿蒙HarmonyOs学习:如何添页面和路由

1.目录结构 重点我们开发中需要用到地方我都做了简单的说明。 2.我们看看入口页面是如何配置的 在主配置文件module.json5中配置Ability路径已经应用图标和应用名称等信息。 3.配置页面路由 这个路由是由哪儿配置的呢&#xff1f; 想必看完这些&#xff0c;你应该知道一个鸿…

算法练习Day23 (Leetcode/Python-回溯算法)

46. Permutations Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order. Example 1: Input: nums [1,2,3] Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路&#xff1a;此题可用回溯…

C#中使用正则表达式实现汉字转拼音

目录 一、正则表达式基础 二、实例 1.程序入口Form1.cs 2.类库PinYin.cs 三、生成效果 四、实例中的知识点 1.Regex 2.ToCharArray() 3.Regex.IsMatch 方法 &#xff08;1&#xff09;定义 &#xff08;2&#xff09;重载 &#xff08;3&#xff09;IsMatch(Stri…

人工智能AI与3D视觉技术的结合正在引领新一代移动机器人的革新

随着科技的飞速发展&#xff0c;人工智能AI与3D视觉技术的结合正在引领新一代移动机器人的革新。富唯智能移动机器人&#xff0c;以其独特的3D视觉技术&#xff0c;赋予了移动机器人一双“智慧之眼”&#xff0c;从而为现代工业自动化带来了前所未有的突破。 富唯智能移动机器…

湖南大学-算法设计与分析-2023期末考试【原题】

前言 21&#xff1a;00刚刚结束的考试&#xff0c;凭着回忆把题目重现出来了&#xff0c;在复习的时候根本找不到往年的试卷&#xff0c;希望这张回忆的试卷能帮助到下一届的同学。知道题目基本上就能做出来了&#xff0c;但是不知道是真的做不出来&#xff0c;我就不给答案了…