springboot web

news2024/11/17 8:24:45

Springboot入门介绍

一、Spring框架概述

1.1 什么是Spring

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。

1.2 Spring是如何简化Java开发的

为了降低Java开发的复杂性,Spring采用了以下4种关键策略:

1、基于POJO的轻量级和最小侵入性编程;

2、通过依赖注入(DI)和面向接口实现松耦合;

3、基于切面(AOP)和惯例进行声明式编程;

4、通过切面和模版减少样式代码;

二、SpringBoot简介

2.1什么是SpringBoot

Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。

2.2、SpringBoot四个主要特性

1、SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;

2、自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;

3、命令行接口:(Command-line-interface, CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;

4、Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。

2.3 SpringBoot开发的具体好处

回顾我们之前的 SSM 项目,搭建过程还是比较繁琐的,需要:

1、配置web.xml,加载spring和spring mvc

2、配置数据库连接、配置spring事务

3、配置加载配置文件的读取,开启注解

。。。

配置完成之后部署tomcat 调试

而使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以搭建起来一个 Web 项目,并且利用 IDEA 可以自动生成生成,这简直是太爽了…

华丽的分割线—————————————————————————————————-

三、使用IDEA快速搭建SpringBoot项目

1、file->new project 在弹出的窗口选择Spring Initializr

2、修改项目信息

3、选择版本及项目需要的依赖

4、最终目录结构

项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

  • EurekaServerApplication: 一个带有 main() 方法的类,用于启动应用程序
  • EurekaServerApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
  • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
  • pom.xml: Maven 构建说明文件

四、项目简单介绍及helloworld编写

4.1、写一个helloWorld接口

@RestController
@RequestMapping("/")
public class HelloWorldController {
    @RequestMapping("hello")
    public String index() {
        return "Hello World";
    }
}

复制

@RestController 注解: 该注解是 @Controller 和 @ResponseBody 注解的合体版

4.2、单元测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class ServiceAuthApplicationTests {
   private MockMvc mvc;
   @Before
   public void setUp() {
      mvc = MockMvcBuilders.standaloneSetup(new HelloController()).build();
   }
   @Test
   public void contextLoads() throws Exception {
                mvc.perform(MockMvcRequestBuilders.get("/hello").accept(

        MediaType.APPLICATION_JSON))
            .andExpect(MockMvcResultMatchers.status().isOk())
            .andDo(MockMvcResultHandlers.print())
            .andReturn();
   }
}

复制

4.3、pom文件介绍

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <groupId>com.test</groupId>
    <artifactId>springboot</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

复制

    <name>spring-cloud-demo</name>

    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.18.BUILD-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>

        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


    <pluginRepositories>

        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>

        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>

复制

这个标签是在配置 Spring Boot 的父级依赖

有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter ,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

4.4、启动类介绍(*Application)

@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

复制

@SpringBootApplication是springBoot的核心注解注解: 该注解是@Configuration、@EnableAutoConfiguration、@ComponentScan 注解的合体版

4.5. properties介绍

springBoot 使用一个全局的配置文件 application.properties 或 application.yml,放置在【src/main/resources】目录下

将 Tomcat 默认端口设置为 9090 ,并将默认的访问路径从 “/” 修改为 “/test” 时,使用 properties 文件

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

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

相关文章

【生活分享】《哈姆雷特》· 苏州站 - 有趣的观后感

平时博客里大部分都是写技术相关的文章&#xff0c;感觉内容还是比较单一的&#xff0c;也想分享一下最近的一些有趣的生活~ 6月30号的时候&#xff0c;便订好了7月2号徐俊导演编排的《哈姆雷特》音乐剧。而实际上&#xff0c;苏州场 7月1号就上映了&#xff0c;但感觉那天太晚…

python函数调用时的关键字参数

python 函数调用使用关键字参数来确定传入的参数值&#xff1b; 使用关键字参数允许函数调用时参数的顺序与声明时不一致&#xff0c; Python 解释器能够用参数名匹配参数值&#xff1b; 在命令行定义一个函数printstu&#xff1b; 如下都可以正确调用&#xff1b; printstu(…

❤ 15个基于Vue3.0全家桶的优秀开源项目

❤ 15个基于Vue3.0全家桶的优秀开源项目 Vue Admin Better github : https://github.com/chuzhixin/vue-admin-better vue admin better 对比其他来源 admin 框架有如下优势: 支持前端控制路由权限 intelligence、后端控制路由权限 all 模式 已知来源 vue admin 框架中首家支…

【Spring Cloud Alibaba】OpenFeign的使用

Feign is a Java to HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket. Feign’s first goal was reducing the complexity of binding Denominator uniformly to HTTP APIs regardless of ReSTfulness. Feign是一个Java到HTTP的客户端绑定器&#xff0c;灵…

点云模型概述

点云与三维图像 三维图像是一种特殊的信息表达形式&#xff0c;其特征是表达的空间中三个维度的数据。和二维图像相比&#xff0c; 三维图像借助第三个维度的信息&#xff0c;可以实现天然的物体和背景解耦。 对于视觉测量来说&#xff0c;物体的二维信息往往随射影方式而变化…

2023年,从初级岗进阶到中级测试工程师岗,突破内卷...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 初级测试如何成长…

vue3----解决字体包太大响应慢以及打包文件大的问题 解决font-spider 报错问题

vue3----解决字体包太大响应慢以及打包文件大的问题 && 解决font-spider 报错问题 前言&#xff1a;使用font-spider压缩字体&#xff08;亲测可用&#xff09; 参考链接&#xff1a;https://blog.csdn.net/nanchen_J/article/details/126973856 一、解决字体包太大响应…

【报错】ros1中使用opencv4.8时,报错Segmentation fault

现象&#xff1a; ubuntu18.04下&#xff0c;使用ros1进行opencv4.8&#xff0c;操作opencv2库的时候报错了 原因&#xff1a; cmakelists.txt中不要加 ${catkin_LIBRARIES} 否则ros在执行时会导入默认的3.2.0版本&#xff0c;与4.8.0冲突。

Mybatis-Plus不能更新对象字段为空值问题解决

问题描述&#xff1a; 在使用Mybatis-Plus调用updateById方法进行数据更新默认情况下是不能更新空值字段的&#xff0c;而在实际开发过程中&#xff0c;往往会遇到需要将字段值更新为空值的情况&#xff0c;该如何解决呢&#xff1f; 原因分析&#xff1a; Mybatis-Plus中字…

esp8266学习记录

前言 本文主要介绍了esp8266固件的烧写和基本AT指令&#xff0c;然后结合stm32开发板实现三个实验。分别是手机远程控制开发板LED&#xff1b;开发板温度传感器数据和光强上传到云平台实时监控&#xff1b;从云平台获取数据来控制开发板板载资源。每个实验我都保留了工程源和效…

[AJAX]原生AJAX——自定义请求头

客户端 <script>// 1、创建对象const xhr new XMLHttpRequest();// 2、初始化&#xff1a;设置请求类型和urlxhr.open(POST, http://127.0.0.1:8000/server);// 设置请求头// Content-Type&#xff1a;设置请求体内容类型// application/x-www-form-urlencoded&#xf…

分布式服务一篇概览

分布式服务开发复杂于服务间交互&#xff0c;协调&#xff0c;治理等。服务的复杂性由应用本身转移到了网络交互层。 一、关于12-factor问题 在开发分布式服务时&#xff0c;我们通常会考虑如12-factor 问题&#xff0c;如配置中心、无状态化、日志等。 一个代码库&#xff…

数通王国历险记之地址分析协议(ARP)

系列文章目录 数通王国历险记&#xff08;4&#xff09; 目录 前言 一&#xff0c;什么是地址解析协议&#xff08;ARP&#xff09; 二&#xff0c;封装和解封装 三&#xff0c;为什么需要地址解析协议&#xff08;ARP&#xff09; 四&#xff0c;ARP的验证实验 4.1&#x…

线程池ThreadPoolExecutor详解以及多种线程池的实现

1、线程池状态含义 ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态&#xff0c;低 29 位表示线程数量&#xff0c;之所以将信息存储在一个变量中&#xff0c;是为了保证原子性。 具体的高三位与线程池状态如下&#xff0c;引用自网课的图片&#xff1a; 2、构…

【数据库编程】最新版MySQL的JDBC编程(图文演示)

数据库系列文章 1. 零基础带你快速上手SQL语言 2. 玩转表及其数据 3. 上手表设计 4. 索引和事务 5. 最新版MySQL的JDBC编程 文章目录 前言1. 数据库编程的必备条件2. Java的JDBC编程3. JDBC工作原理3.1 数据库驱动包从哪里来 4. JDBC编程4.1 创建 Java 项目4.2 导入数据库驱动包…

使用wkhtmltopdf实现HTML转PDF

wkhtmltopdf注意事项 1.webkit内核的&#xff0c;所以建议使用之前用谷歌浏览器开发好网页 2.目前这个插件不再更新&#xff0c;所以内核老旧&#xff0c;只支持ES5的代码&#xff0c;所以ES6及以上的代码统统不支持&#xff0c;还有字符串拼接的 符号也不能使用&#xff0c…

JMeter录制HTTPS脚本解决办法

目录 前言&#xff1a; 背景 解决方法 前言&#xff1a; 在使用JMeter录制HTTPS脚本时&#xff0c;可能会遇到一些问题&#xff0c;例如SSL证书错误或请求失败等。解决这些问题的一种常见的方法是通过安装并信任服务器的SSL证书来解决。 背景 在对某项目进行脚本录制的时…

银河麒麟服务器v10 sp1 部署 Net6.0 项目

上一篇已经部署了Net6.0环境&#xff0c;本节将实现Net6.0程序部署&#xff0c;打开或新建项目&#xff0c;修改appsettings.json配置&#xff1a; 添加&#xff1a;"urls": "http://*:8061",//linux部署使用&#xff0c;端口可根据需求修改为自己的 在项…

快速幂与64位整数乘法(位运算)

矩阵快速幂和64位整数乘法 矩阵快速幂64位整数乘法 矩阵快速幂 问题链接&#xff1a; AcWing 90. 64位整数乘法 问题描述&#xff1a; 分析 快速幂需要用到位运算的思想&#xff0c;求 a b a^b ab&#xff0c;我们将 b b b转换成二进制的形式&#xff0c;假设 b 7 b7 b7&…

GB50254-2014电气装置安装工程低压电器施工及验收规范

为保证低压电器的安装质量,促进施工安装技术进步&#xff0c;确保设备安装后的安全运行,制定本规范。 本规范适用于交流 50Hz或60Hz额定电压为 1000V 及以下&#xff0c;直流额定电压为 1500V 及以下通用低压电器的安装与验收。不适用于: 1、无需固定安装的家用电器、电工仪器…