Java后端开发——Spring实验

文章目录

  • 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/beanshttp://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.mzph.cn/news/593997.shtml

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

相关文章

CSS 顶部位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-top: isAnimating }"><!-- 元素内容 --><…

【快速全面掌握 WAMPServer】12.WAMPServer 故障排除经验大总结

网管小贾 / sysadm.cc 众所周知&#xff0c;搞开发需要先搭建相应的编程和调试环境。 对于 PHPer 来说&#xff0c;很多像我一样的新手小白们入门的时候&#xff0c;通常会选择一些集成开发环境包&#xff0c;其中就有 WampServer 。 集成环境包被许多人所诟病&#xff0c;说…

Node.js本地搭建简单页面小游戏

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

第二百四十三回 再分享一个Json工具

文章目录 1. 概念介绍2. 分析与比较2.1 分析问题2.2 比较差异 3. 使用方法4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"相关的内容&#xff0c;本章回中将再 分享一个Json插件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

案例087:基于微信小程序的社区养老服务平台设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

polar CTF 简单rce

一、题目 <?php /*PolarD&N CTF*/ highlight_file(__FILE__); function no($txt){if(!preg_match("/cat|more|less|head|tac|tail|nl|od|vim|uniq|system|proc_open|shell_exec|popen| /i", $txt)){return $txt;}else{ die("whats up");}} $yyds(…

B端产品经理学习-B端产品系统调研的工具

系统性调研目标的工具 系统性调研的目标 相对于背景调研&#xff0c;系统行调研是对公司可控因素&#xff08;公司内部&#xff09;和直接作用力&#xff08;消费者、竞争者&#xff09;进行的调研。系统性调研需要输出结论&#xff0c;为达成产品或公司的战略目标而制定行动的…

【Java进阶篇】Java中Timer实现定时调度的原理(解析)

Java中Timer实现定时调度的原理 ✔️ 引言✔️JDK 中Timer类的定义✔️拓展知识仓✔️优缺点 ✔️ 引言 Java中的Timer类是用于计划执行一项任务一次或重复固定延迟执行的简单工具。它使用一个名为TaskQueue的内部类来存储要执行的任务&#xff0c;这些任务被封装为TimerTask对…

Python搭建代理IP池实现存储IP的方法

目录 前言 1. 介绍 2. IP存储方法 2.1 存储到数据库 2.2 存储到文件 2.3 存储到内存 3. 完整代码示例 总结 前言 代理IP池是一种常用的网络爬虫技术&#xff0c;可以用于反爬虫、批量访问目标网站等场景。本文介绍了使用Python搭建代理IP池&#xff0c;并实现IP存储的…

三菱结构化While指令的使用

最近在交流群中&#xff0c;有人就while指令使用错误进行了讨论&#xff0c;问题的总的原因是对While指令理解不到位导致&#xff0c;PLC看门狗报错&#xff01; 错误使用While指令导致看门狗报错 下面就While指令的使用进行说明 WHILE语句。 WHILE语句执行时首先检测条件。…

成为一名合格的前端架构师,前端知识技能与项目实战教学

一、教程描述 本套前端架构师教程&#xff0c;大小35.94G&#xff0c;共有672个文件。 二、教程目录 01.node介绍和环境配置&#xff08;共6课时&#xff09; 02.ES6语法&#xff08;共5课时&#xff09; 03.node基础&#xff08;共29课时&#xff09; 04.Express框架&am…

大语言模型LLM微调技术:P-Tuning

1 引言 Bert时代&#xff0c;我们常做预训练模型微调&#xff08;Fine-tuning&#xff09;&#xff0c;即根据不同下游任务&#xff0c;引入各种辅助任务loss和垂直领域数据&#xff0c;将其添加到预训练模型中&#xff0c;以便让模型更加适配下游任务的方式。每个下游任务都存…

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

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

计算器——可支持小数的任意四则运算(中缀表达式转为后缀表达式算法)

中缀表达式转为后缀表达式的原理过程主要包括以下步骤&#xff1a; 1. 初始化两个栈&#xff0c;一个用于存储操作数&#xff0c;一个用于存储运算符。2. 从左到右扫描中缀表达式的每个字符。3. 如果遇到数字&#xff0c;则直接将其压入操作数栈。4. 如果遇到运算符&#xff0c…

CSS 中间位置翻转动画

<template><div class"container" mouseenter"startAnimation" mouseleave"stopAnimation"><!-- 旋方块 --><div class"box" :class"{ rotate-hor-center: isAnimating }"><!-- 元素内容 -->…

msvcp140.dll丢失的错误解决办法,msvcp140.dll丢失的原因

如果你的电脑中正处于msvcp140.dll丢失或找不到msvcp140.dll的问题&#xff0c;那么可以尝试使用下面的方法进行解决msvcp140.dll丢失的问题。其实msvcp140.dll文件丢失的问题解决办法也很简单&#xff0c;但是出现msvcp140.dll丢失的问题却可能是有很多原因。接下来就给大家分…

约束满足问题简介

约束满足问题的定义 约束满足问题&#xff08;Constraint Satisfying Problem, CSP&#xff09; – 由一个变量集合和一个约束集合定义&#xff1b; – 每个变量都有一个非空可能值域&#xff1b; – 每个约束指定了包含若干变量的一个子集内各变量的赋值范围。 例如&…

互联网加竞赛 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; Yolov安全帽佩戴检测 危险区域进入检测 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&am…

打造专业开发者指南:针对ShardingProxy分库分表解决策略的深度剖析 – 详解部署、使用、服务治理与优化技巧

一、 ShardingProxy快速使用 ShardingProxy的功能同样是分库分表&#xff0c;但是他是一个独立部署的服务端&#xff0c;提供 统一的数据库代理服务。注意&#xff0c;ShardingProxy目前只支持MySQL和PostgreSQL。并且&#xff0c;客户端连接ShardingProxy时&#xff0c;最好使…

多模态大模型Vary:扩充视觉Vocabulary,实现更细粒度的视觉感知

前言 现代大型视觉语言模型(LVLMs)具有相同的视觉词汇- CLIP&#xff0c;它可以涵盖大多数常见的视觉任务。然而&#xff0c;对于一些需要密集和细粒度视觉感知的特殊视觉任务&#xff0c;例如文档级OCR或图表理解&#xff0c;特别是在非英语场景下&#xff0c;clip风格的词汇…