Springboot使用杂谈
1、springboot配置
1.0 maven配置最好增加对jdk版本的确认
<profiles><profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerversion></properties></profile>
</profiles>
1.1、pom引入springboot 文件配置:
<groupId>org.example</groupId>
<artifactId>www-ES-Api</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<!-- 依赖管理 -->
<parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.5.RELEASE</version>
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
<!-- 几乎声明了所有开发中常用的依赖的版本号,自动版本仲裁机制. -->
<!--org.springframework.boot的父项目包-->
<parent><groupId>org.springframework. boot</ groupId><artifactId>spring-boot-dependencies</artifactId><version>2.3.4.RELEASE</version>
</parent>
starter场景启动器
<!--
1、见到很多spring-boot-starter-* :*就某种场景
2、只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
3、SpringBoot所有支持的场景
https://docs.spring.io/spring-boot/docs/current/reference/html/using-spring-boot
4、见到的 *-spring-boot-starter:第三方为我们提供的简化开发的场景启动器。版本控制:
1、引入依赖默认都可以不写版本
2、引入非版本仲裁的jar,要写版本别
2、springboot以外的其他依赖版本的配置
<properties><!--版本设置--><mysql.version>5.1.30</mysql.version></properties><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.3.5.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency></dependencies>
2.1自动配置
自动配好Tomcat
引入Tomcat依赖。
配置Tomcat
<dependency><groupId>org.springframework.boot</ groupId><artifactId>spring-boot-starter-tomcat</artifactId><version>2.3.4.RELEASE</version><scope>compile</scope> </dependency>
自动配好SpringMVC
- 引入SpringMVC全套组件
- 自动配好SpringMVC常用组件(功能)
自动配好Web常见功能,如:字符编码问题
- SpringBoot帮我们配置好了所有web开发的常见场景
默认的包结构
主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来。
无需以前的包扫描配置
想要改变扫描路径,@SpringBootApplication(scanBasePackages=“com.atguigu”)或者
@ComponentScan指定扫描路径
@SpringBootApplication 等同于@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan("com.atguigu.boot"")
各种配置拥有默认值
- 默认配置最终都是映射到MultipartProperties
- 配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
按需加载所有自动配置项
- 非常多的starter
- 引入了哪些场景这个场景的自动配置才会开启
- SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-batch</artifactId></dependency>
</dependencies>
3、使用
主程序入口
package com.toec.boot;import com.toec.boot.bean.Pet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.ConfigurableApplicationContext;/*** @Package: com.toec.boot* @ClassName: MainApplication* @Description: springboot初始化,主类设置* @Date: 1/9/2022 3:19 PM* @Version: 1.0*/ @SpringBootApplication(scanBasePackages="com.toec") public class MainApplication {public static void main(String[] args) {// 1、返回我们IoC容器ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);//2、查看容器里面的组件String[] beanDefinitionNames = run.getBeanDefinitionNames();for (String name:beanDefinitionNames){System.out.println(name);}// 3、从容器中获取组件Pet tom = run.getBean("tom",Pet.class);Pet tom1 = run.getBean("tom",Pet.class);// Pet tom2 = run.getBean("tom",Pet.class);System.out.println("组件:"+(tom==tom1));} }
控制层接口
package com.toec.boot.controller;import com.toec.boot.vo.DeviceVo; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*;/*** @Package: com.toec.boot.controller* @ClassName: HelloController* @Description: 请求接口* @Date: 1/9/2022 3:23 PM* @Version: 1.0*/ //@ResponseBody //@Controller @RestController public class HelloController {@RequestMapping("/hello")public String Handler(){return "Hello,Spring boot";}@GetMapping("getHello")public String HandlerGet(){return "Hello,Spring boot,get";}@PostMapping("/postHello")public String HandlerPost(DeviceVo deviceVo){String msg = deviceVo.getDeviceId();System.out.println(msg);return "hello,Spring boot , post,"+msg;} }
bean实体
package com.toec.boot.bean;/*** @Package: com.toec.boot.bean* @ClassName: Pet* @Description: 宠物* @Date: 1/9/2022 10:04 PM* @Version: 1.0*/ public class Pet {private String name;public Pet() {}public Pet(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Pet{" +"name='" + name + '\'' +'}';} }
package com.toec.boot.bean;/*** @Package: com.toec.boot.bean* @ClassName: User* @Description: 用户* @Date: 1/9/2022 10:05 PM* @Version: 1.0*/ public class User {private String name;private int age;public User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';} }
bean配置
@Configuration 基本使用
配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的
配置类本身也是组件
@Import({User.class, DBHelper.class}) //可以导入全类名组件,默认组件的名字就是全类名
proxyBeanMethods:代理bean的方法
- Full(proxyBeanMethods = true)、【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
- Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
- 组件依赖必须使用Full模式默认。其他默认是否Lite模式
package com.toec.boot.config;import com.toec.boot.bean.Pet; import com.toec.boot.bean.User; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** @Package: com.toec.boot.config* @ClassName: Config* @Description: bean配置* @Date: 1/9/2022 10:07 PM* @Version: 1.0* 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的* 2、配置类本身也是组件* 3、Configuration中属性proxyBeanMethods :代理bean的方法* 若配置为true,外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器中的单实例对象* //如果@Configuration(proxyBeanMethods = true )代理对象调用方法。* SpringBoot总会检查这个组件是否在注册容器中的单实例对象* 保持组件单实例*/ @Import({User.class, DBHelper.class}) //可以导入全类名组件,可以不用 @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类==配置文件 public class MyConfig {@Beanpublic User user(){return new User("toec",20);}@Bean("tom")public Pet pet(){return new Pet("dog");} }
配置文件
server.port=8088 spring.servlet.multipart.max-file-size=10000MB spring.datasource.url = jdbc:mysql://localhost:3306/test?setUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=1234 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
Springboot使用杂谈相关推荐
- springMVC web项目转springboot web项目的杂谈
文章背景: 一个老的web项目是用springMVC做的,最近需要修改一些功能,然后用本地部署的Tomcat启动,启动过程中各种报错,在网上百度半天都是spring版本的问题,纠结了一段时间,终于有了 ...
- SpringBoot+MyBatis+Shiro 搭建杂谈
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:用好Java中的枚举,真的没有那么简单!个人原创+1博客:点击前往,查看更多 链接:https://www.cn ...
- springboot杂谈
@DOC Windows 安装pytest pip install pytest Collecting pytestDownloading pytest-6.2.1-py3-none-any.whl ...
- springboot的jsp应该放在哪_web项目jsp放在哪里 Spring Boot 静态资源处理(4)
Spring Boot 默认将 /webjars/** 映射到 classpath:/META-INF/resources/webjars/ ,结合我们上面讲到的访问资源的规则,便可以得知我们在JSP ...
- 【转载】SpringBoot 事件发布监听机制使用
前言 这一篇从应用角度来跟大伙讲讲 这个 spring 事件监听机制 ,顺便涉及到那些我认为大家应该一块了解的,我也会展开说说. 文章内容(包括不限于) : 1. 对比观察者模式 2. 应用场景的分析 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- Dockerfile springboot项目拿走即用,将yml配置文件从外部挂入容器
Dockerfile 将springboot项目jar包打成镜像,并将yml配置文件外挂. # 以一个镜像为基础,在其上进行定制.就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜 ...
- SpringBoot部署脚本,拿走即用!
一个可以直接拿来使用的shell脚本,适用于springboot项目 #!/bin/bash # 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可. # 若使用jenkins等工具 ...
- SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos
SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...
最新文章
- Promise的实例用法
- WDS使用捕获映像制作企业自定义映像
- 说明 modbus 台达ups_改造机架式UPS风扇,让机柜内最大噪音污染源安静下来
- 不到50行代码实现一个能对请求并发数做限制的通用RequestDecorator
- Android Studio下载安装教程及开发环境搭建
- matlab排序函数 下标,Matlab自带排序函数sort用法
- python读取地震信号【sgy,segy】
- 如何让网站快速被收录,试试这个方法!
- java编程:假定公鸡5元钱1只,母鸡3元钱1只,小鸡1元钱3只。现在有100元钱要求买100只鸡,请编程列出所有可能的购鸡方案。
- 用户体验是什么?如何把用户体验做到极致, 这里有答案
- re管理器修改音量_[教程] 自己手动修改音量键和开机键的功能方法(小更新)
- h5画三角形_H5如何在网页中绘制三角形,值得一看
- 阿里/京东入局,多家年营收过亿公司诞生,解析居家护理市场三大趋势
- 【cocos shader 004】 聚光灯 灯光 烘焙 效果
- 如何让孩子戒掉手机瘾游戏瘾,小学生迷恋游戏怎么办?
- betaflight 代码结构
- Brave 浏览器集成 Solana 支持
- 有道云笔记,同步失败。显示红色感叹号的解决办法!
- 鲁班-h5带你把项目跑起来
- 为什么是张一鸣?为什么是抖音?
热门文章
- Java参数传递(值传递还是引用传递)
- User-Agent代理的作用(最易懂!!)
- Qt鼠标点击不响应QMouseEvent事件的解决办法
- 基于机智云物联网平台的智能种树小车
- 解决Unlinking stale socket /var/run/supervisor.sock问题
- ie历史记录值不能触发onchange事件
- MAC RStudio安装rJava等需要java环境依赖包教程
- Oracle 10g SGA 的自动化管理
- 微信小程序获取用户唯一标识openid的若干个坑
- Error parsing Mapper XML. The XML location is ‘com/kkb/mapper/TeamMapper.xml‘. Cause: java.lang.Ille