springboot介绍

news2025/1/12 3:43:07

笔记来源于 动力节点springboot

Javaconfig

xml方式

在创建模块时,idea2022新版选择internal即可:

在这里插入图片描述

pom.xml文件

<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>cn.ysk</groupId>
    <artifactId>springboot-pre</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot-pre</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.19</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <!-- 编译插件 -->
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <!-- 插件的版本 -->
                <version>3.5.1</version>
                <!-- 编译级别 -->
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <!-- 编码格式 -->
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

创建学生类:

public class Student {

    private Integer id;
    private String name;
    private Integer age;
    ……

resource目录下创建beans.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="myStudent" class="cn.ysk.vo.Student">
                <property name="id" value="1001" />
                <property name="name" value="李强国" />
                <property name="age" value="20" />
                </bean>

                </beans>

测试:

@Test
public void test01() {
    String config = "ba01/applicationContext.xml";
    ApplicationContext ac = new ClassPathXmlApplicationContext(config);
    Student student = (Student) ac.getBean("student");
    System.out.println(student);
}
//Student{name='zhangsan', age=22, school=School{name='清华', address='北京'}}

JavaConfig 配置容器

JavaConfig: 使用java类作为xml配置文件的替代, 是配置spring容器的纯java的方式。 在这个java 类这可以创建java对象,把对象放入spring容器中

使用两个注解:

  1. @Configuration : 放在一个类的上面,表示这个类是作为配置文件使用的。(这个类就相当于之前的xml了,从而好多注解也是在这个类上面添加)
  2. @Bean:声明对象,把对象注入到容器中。

创建配置类(等同于 xml 配置文件)

/**
 * Configuration:表示当前类是作为配置文件使用的。 就是用来配置容器的
 * 位置:在类的上面
 * <p>
 * SpringConfig这个类就相当于beans.xml
 */
@Configuration
public class SpringConfig {
    /**
     * 创建方法,方法的返回值是对象。 在方法的上面加入@Bean
     * 方法的返回值对象就注入到容器中。
     * <p>
     * 1.2 @ImporResource
     *
     * @ImportResource 作用导入其他的xml配置文件, 等于 在xml
     * 例如:
     * @Bean: 把对象注入到spring容器中。 作用相当于<bean>
     * <p>
     * 位置:方法的上面
     * <p>
     * 说明:@Bean,不指定对象的名称,默认是方法名是 id
     */
    @Bean
    public Student createStudent() {
        Student s1 = new Student();
        s1.setName("张三");
        s1.setAge(26);
        s1.setId(111);
        return s1;
    }

    /***
     * 指定对象在容器中的名称(指定<bean>的id属性)
     * @Bean的name属性,指定对象的名称(id)
     */
    @Bean(name = "lisiStudent")
    public Student makeStudent() {
        Student s2 = new Student();
        s2.setName("李四");
        s2.setAge(22);
        s2.setId(222);
        return s2;
    }

测试:

@Test
public void test02(){
    //没有 xml 配置文件,使用 java 类代替 xml 配置文件 的作用
    ApplicationContext ctx = new
        AnnotationConfigApplicationContext(SpringConfig.class);
    Student student = (Student) ctx.getBean("createStudent");
    System.out.println("student==="+student);
}

@ImporResource

@ImportResource 作用导入其他的xml配置文件, 等于 在xml中:

<import resources="其他配置文件"/>

例如:

@Configuration
@ImportResource(value ={
"classpath:applicationContext.xml","classpath:beans.xml"})
public class SpringConfig {
}

@PropertyResource

@PropertyResource 是读取 properties 属性配置文件

在 resources 目录下创建 config.properties:

tiger.name=东北老虎
tiger.age=6

创建数据类 Tiger:

@Component("tiger")
public class Tiger {
    @Value("${tiger.name}")
    private String name;
    @Value("${tiger.age}")
    private Integer age;
    @Override
    public String toString() {
        return "Tiger{" +
            "name='" + name + '\'' +
            ", age=" + age +
            '}';
    }
}

修改config类:

@Configuration
@PropertySource(value = "classpath:config.properties")
@ComponentScan(value = "cn.ysk.vo")
public class SystemConfig {
 //使用@Bean 声明 bean
}

SpringBoot

特性

SpringBoot 相当于 不需要配置文件的Spring+SpringMVC。 常用的框架和第三方库都已经 配置好了。

  • 简化 Spring 应用程序的创建和开发过程
  • 提供了starter起步依赖,简化应用的配置。
  • 直接使用 java main 方法启动内嵌的 Tomcat 服务器运行 Spring Boot 程序,无需部署 war 包文件
  • 提供了健康检查, 统计,外部化配置
  • 不用生成代码, 不用使用xml做配置

四大核心:

1)自动配置 -Auto Configuration

2)起步依赖-Starter Dependency

3)命令行界面-Spring Boot CLI

4)运行监控-Actuator

创建springboot项目

第一种方式

第1、2种方式都需要联网!

使用 spring boot 提供的初始化器。 向导的方式,完成 spring boot 项目的创建: 使用 方便。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

目录结构:

在这里插入图片描述

起步依赖:

在这里插入图片描述

第二种方式

国内地址: https://start.springboot.io

在这里插入图片描述

其余同上……

第三种方式-maven

直接创建maven项目

pom.xml文件:

加入:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

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

手动创建:

在这里插入图片描述

案例

采用第二种方式创建项目:

在这里插入图片描述

@Controller
public class HelloSpringBoot {

    @RequestMapping("/hello")
    @ResponseBody
    public String helloSpringBoot(){
        return "欢迎使用SpringBoot框架";
    }
}

通过main方法启动:

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

浏览器中输入:http://localhost:8080/hello

在这里插入图片描述

注解

@SpringBootApplication
符合注解:由
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
    
    
1.@SpringBootConfiguration
    
@Configuration
public @interface SpringBootConfiguration {
    @AliasFor(
        annotation = Configuration.class
    )
    boolean proxyBeanMethods() default true;
}

说明:使用了@SpringBootConfiguration注解标注的类,可以作为配置文件使用的,
    可以使用Bean声明对象,注入到容器
2.@EnableAutoConfiguration

启用自动配置, 把java对象配置好,注入到spring容器中。例如可以把mybatis的对象创建好,放入到容器中



3.@ComponentScan
    @ComponentScan 扫描器,找到注解,根据注解的功能创建对象,给属性赋值等等。
默认扫描的包: @ComponentScan所在的类(就是main方法所在的类,主类)所在的包和子包。

核心配置文件

Spring Boot 的核心配置文件用于配置 Spring Boot 程序,名字必须以 application 开始

.properties 文件(默认采用该文件)

正常情况:

Tomcat started on port(s): 8080 (http) with context path ''

进行修改:

application.properties设置 端口和上下文

#设置端口号
server.port=8082
#设置访问应用上下文路径, contextpath
server.servlet.context-path=/myBoot

在这里插入图片描述

.yml 文件

推荐使用这种方式!

值与前面的冒号配置项必须要有一个空格

server:
 port: 9091
 servlet:
 	context-path: /boot

层级结构按照python来理解

多环境配置

有开发环境, 测试环境, 上线的环境。 每个环境有不同的配置信息, 例如端口, 上下文件, 数据库url,用户名,密码等等。使用多环境配置文件,可以方便的切换不同的配置。

使用方式: 创建多个配置文件 命名必须以 application-环境标识.properties|yml

创建开发环境的配置文件: application-dev.properties( application-dev.yml ) 创建测试者使用的配置: application-test.properties

在这里插入图片描述

application.yml

#激活使用的test环境
spring:
  profiles:
    active: test

text-path: /boot


层级结构按照python来理解



###  多环境配置

有开发环境, 测试环境, 上线的环境。 每个环境有不同的配置信息, 例如端口, 上下文件, 数据库url,用户名,密码等等。使用多环境配置文件,可以方便的切换不同的配置。 

使用方式: 创建多个配置文件  **命名必须以 application-环境标识.properties|yml**

创建开发环境的配置文件: application-dev.properties( application-dev.yml ) 创建测试者使用的配置: application-test.properties

<img src="image-20221216213647082.png" alt="image-20221216213647082" style="zoom:80%;" />

application.yml

```yaml
#激活使用的test环境
spring:
  profiles:
    active: test

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

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

相关文章

圆顶光源特点及应用——塑料包装袋、PCB板检测

照明系统是机器视觉系统较为关键的部分之一&#xff0c;机器视觉光源直接影响到图像的质量&#xff0c;进而影响到系统的性能。其重要性无论如何强调都是不过分的。好的打光设计能够使我们得到一幅好的图象&#xff0c;从而改善整个整个系统的分辨率&#xff0c;简化软件的运算…

Java JNA 调用DLL(动态连接库) 回调函数

首先准备好动态链接库dll 参考连接 visual studio 2017 创建dll文件并使用https://blog.csdn.net/miss_na/article/details/113524280 Visual Studio 2017 动态链接库(.dll)生成与使用的简明教程https://blog.csdn.net/Hide_on_Stream/article/details/109172054 jni之jni与…

【记录】U盘安装Ubuntu20.04系统

之前电脑安装的Centos7系统&#xff0c;但是在启动过程中遇到了文件异常&#xff0c;就开不了机了&#xff0c;另外貌似Centos7已经停止维护了&#xff0c;想了下&#xff0c;果断不要数据了&#xff0c;直接重装系统吧&#xff0c;这次选用的是Ubuntu 20.04【ps: 没有选择最新…

「含元量」激增,这届世界杯的看点不止足球

文|智能相对论 作者|青月 半决赛结束&#xff0c;卡塔尔世界杯已经正式进入倒计时阶段。 这届世界杯诞生了不少精彩瞬间&#xff0c;在小组赛中&#xff0c;日本、韩国、沙特接连打败西班牙、葡萄牙、阿根廷等传统强队&#xff0c;摩洛哥也代表非洲球队首次挺进四强&#xf…

v8垃圾回收

文章目录内存的生命周期v8垃圾回收算法新生代Scavenge图例老生代Mark-SweepMark-Compact图例v8垃圾回收的弊端v8垃圾回收优化内存的生命周期 内存的生命周期可以分为三个阶段&#xff1a; 内存分配&#xff1a;按需分配内存内存食用&#xff1a;读写已经分配的内存内存释放&a…

Linux 管理联网 配置网络的四种方法 配置临时连接( ip 命令)

配置网络 # 网络接口是指网络中的计算机或网络设备与其他设备实现通讯的进出口。这里,主要是 指计算机的网络接口即 网卡设备 # 网络接口 -- 网卡 的命名 &#xff1a; 从RHEL7开始引入了一种新的“一致网络设备命名”的方式为网络接口命名,该…

【Java笔记】 深入理解序列化和反序列化

深入理解序列化和反序列化 文章目录深入理解序列化和反序列化1.是什么2.为什么3.怎么做3.1 实现Serializable接口3.2 实现Externalizable接口3.3 注意知识点3.4 serialVersionUID的作用4 扩展1.是什么 序列化&#xff1a;就是讲对象转化成字节序列的过程。 反序列化&#xff…

C++开发,这些GUI库一定不要错过

程序员宝藏库&#xff1a;https://gitee.com/sharetech_lee/CS-Books-Store 如果问Python这类集成度非常高的编程语言GUI开发用什么库&#xff0c;可以列举出很多不错的第三方库。 但是&#xff0c;如果这个问题放在C这种基础的编程语言上&#xff0c;很多同学估计一时间都无从…

用Gurobi+python求解设施选址问题(facility location)

参考&#xff1a;Gurobi 官方资源 设施选址&#xff08;Facility Location&#xff09; 1.背景介绍 设施选址问题在许多工业领域如物流&#xff0c;通信等都有应用&#xff0c;在本案例中展示如何解决设施选址问题&#xff0c;决策出仓库的数量和地点&#xff0c;为一些超市…

Crash Consistency on File Systems: 文件系统一致性保证 (1) Journaling File System

文件系统是操作系统中管理用户数据的重要模块。其中一项重要的任务就是确保用户数据的在系统突然崩溃之后&#xff0c;系统能够恢复出完整、一致的用户数据。本文将会分析两种流行的文件系统&#xff0c;Journaling File System 和 Log-structured File System是如何确保数据的…

dataFactory连接mysql详细配置教程

场景&#xff1a;最近项目提出机构用户中其中一个部门下用户人数有20万&#xff0c;加载的时候十分缓慢&#xff0c;本地想重现的一下&#xff0c;这就需要在本地表中生成>20万的数据&#xff0c;搜索了网上的教程写的都是很粗略。 目录 dataFactory连接mysql配置 安装包下…

第二证券|“20cm”涨停!盘中暴涨110%,又有港股暴力拉升

A股商场今日上午窄幅动摇&#xff0c;电子等板块领涨。北向资金半响净买入额到达26.10亿元。 港股商场今日上午动摇也较为温和。不过&#xff0c;仍有个股剧烈动摇。比如浦江世界上午暴升&#xff0c;盘中涨幅一度超过110%。 A股窄幅动摇 电子板块领涨 今日上午A股商场全体体…

STL六大组件之算法

文章目录56、STL六大组件之遍历算法57、STL六大组件之查找算法158、STL六大组件之查找算法259、STL六大组件之统计算法60、STL六大组件之合并算法61、随机数&#xff08;rand&#xff09;和随机数种子&#xff08;srand&#xff09;的理解62、STL六大组件之随机算法(洗牌算法)6…

javaweb笔记

javaweb数据库jdbcmaven数据库 1.chart定长 2.分组查询:where>聚合函数>having 3.分页查询: select 字段列表 from limit 起始索引&#xff0c; 查询条目数 计算公式: 起始索引&#xff08;当前页码-1&#xff09;每页显示的条数 不同数据库分页查询不一样 4.like模糊查…

8种常见python运行错误,看看你中招了没?

人生苦短 我用python 对于刚入门Python的新手同学来说&#xff0c; 在运行代码时总免不了报错。 如何通过报错查找错误代码&#xff1f; 今天给大家总结了一些常见的报错类型&#xff0c; 每种报错都会有标有错误细节和错误行。 大家以后看到了&#xff0c;就更容易找出自…

使用navicat工具生成表的新增字段sql

1、在需要的表右键&#xff0c;设计表 2、点击【添加字段】 3、创建字段及注释&#xff0c;不要点【保存】和CtrlS 4、点击【SQL预览】 5、复制生成的sql语句

iframe 标签

一. 什么是 iframe 1. iframe 是 HTML元素,用于在网页中内嵌另外一个网页. 2. iframe 默认有一个宽高,存在边界. 3. iframe 是一个行内块级元素,可以通过 display 修改. 二. iframe 元素属性 1. src : 指定内联网页的地址 2. frameborder : iframe 默认有个边界,可以设置fram…

深入剖析Linux RCU原理(一)初窥门径

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 RCU, Read-Copy-Update&#xff0c;是Linux内核中的一种同步机制。RCU常被描述为读写锁的替代品&#xf…

Openssl 1024bit RSA算法---公私钥获取和处理(一)

1.简介 使用OpenSSL生成公私钥文件&#xff0c;然后再将文件中的信息读出的操作。 由于要对设备升级&#xff0c;需要用到RSA算法对一部分验证信息进行加密. 2.使用OpenSSL获取公私钥 我在window系统尝试安装OpenSSL&#xff0c;但是安装不上&#xff0c;我们可以使用linux…

模式识别 第7、8章 特征的选择和提取

基本概念 问题的提出 特征→ 特征空间&#xff1a; 每一个特征对应特征空间的一个维度 &#xff1b;特征越多&#xff0c;特征空间的维度越高原则&#xff1a;在保证分类效果的前提下用尽量少的特征来完成分类基本概念 &#xff08;1&#xff09;特征形成&#xff1a;由仪器…