| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> springboot -> 正文阅读 |
|
[Java知识库]springboot |
Springboot
基础入门--Hello World 首先,创建maven工程,并引入对应的依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.4.RELEASE</version> </parent> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies> 接着,创建一个spirngboot的主程序: /** * 主程序类 * @SpringBootApplication 这是一个SpirngBoot应用 */ @SpringBootApplication public class MainApplication { public static void main(String[] args) { SpringApplication.run(MainApplication.class,args); } } 接着创建controller层。 在springBoot中,有controller和Responbody的复合注解:RestController 然后只需要在spirngboot的主程序中启动,即可在浏览器中打开; 配置文件 配置中都是能抽取出来为全局使用的 自动配置 ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args); 主程序类中,返回的是一个包含很多的IOC容器。 默认的包结构: 主程序所在包及其下面的所有子包里面的组件都会被默认扫描。
容器功能 --Spring中注册了一个组件交给容器管理后,而在容器中,这是单实例的,不管获取多少次,都还是这个组件。 使用注解代替xml来注册组件。 1、配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的。 2、配置类本身也是组件 3、如果@Configuration(proxyBeanMethods = true) 代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有。如果有,就不会新创,保证单实例。如果是false,那么就会变成多实例了。 外部无论对配置类中的这个组件注册方法调用多少次获取的都是之前注册容器的单实例对象。 组件依赖:比如用户养的宠物,如果是true,那么从用户中取出宠物的class和从容器中取出宠物的class是相同的。 调成false的优势:Spring就不会检查是否会有这个代理对象,跳过了检查,启动就会非常快。
4、@Import注解 * 4、@Import({User.class, DBHelper.class}) * 给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名 * * * */ @Import({User.class, DBHelper.class}) @Configuration(proxyBeanMethods = false) //告诉SpringBoot这是一个配置类 == 配置文件 public class MyConfig { } @Conditional 条件装配 配置绑定 springIOC管理,当bean加入了容器交给了Spirng管理的时候,就能在配置文件中,直接去修改这个组件的某个属性的值。 属性绑定:@ConfigurationProperties(prefix="xxx") @EnableConfigurationProperties(car.class): 1、开启car配置绑定功能 2、把这个car组件自动注册到容器中 场景问题:当引用第三方包时,不能在其bean上标注@component,但可以使用@EnableConfigurationProperties SpirngBoot默认会在底层配好所有的组件,但是如果用户自己配置了以用户的优先 总结
xxxxxAutoConfiguration ---> 组件 ---> xxxxProperties里面拿值 ----> application.properties 最佳实践 开发小技巧 Lombok get、set、toString方法:@Date 全参构造器:@AllArgsConstructor 无参构造器:@NoArgsConstructor Hashcode:@EqualsAndHashCode 日志属性添加:@Slf4j : 直接可以在对应的地方加上: log.info("xxx"); <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> idea中搜索安装lombok插件 dev-tools 项目或者页面修改以后:Ctrl+F9; <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> Spring Initailizr(项目初始化向导) 核心功能篇 配置文件 yaml 1.2.2、基本语法
双引号不会转义,单引号会转义 Web开发 2、简单功能分析 2.1、静态资源访问 1、静态资源目录 只要静态资源放在类路径下: called?/static?(or?/public?or?/resources?or?/META-INF/resources 访问 : 当前项目根路径/ + 静态资源名 原理: 静态映射/**。 请求进来,先去找Controller看能不能处理。不能处理的所有请求又都交给静态资源处理器。静态资源也找不到则响应404页面 改变默认的静态资源路径 spring: mvc: static-path-pattern: /res/** resources: static-locations: [classpath:/haha/] 2、静态资源访问前缀 默认无前缀 spring: mvc: static-path-pattern: /res/** 当前项目 + static-path-pattern + 静态资源名 = 静态资源文件夹下找 3、webjar 自动映射 /webjars/** WebJars - Web Libraries in Jars <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.5.1</version> </dependency> 访问地址:http://localhost:8080/webjars/jquery/3.5.1/jquery.js 后面地址要按照依赖里面的包路径 2.2、欢迎页支持
spring: # mvc: # static-path-pattern: /res/** 这个会导致welcome page功能失效 resources: static-locations: [classpath:/haha/]
2.3、自定义 Favicon favicon.ico 放在静态资源目录下即可。 spring: # mvc: # static-path-pattern: /res/** 这个会导致 Favicon 功能失效 如果一个配置类只有一个有参构造器,那么其所有属性的值,都会默认从容器中找。 小记:@responseBody 是将后端返回的数据封装成json串 矩阵变量,分号的形式: /cars/sell;low=34;brand=byd/xxx;xx=xx 自定义convert:相当于在配置类中进行方法的重写 3、开启浏览器参数方式内容协商功能 为了方便内容协商,开启基于请求参数的内容协商功能。 spring: contentnegotiation: favor-parameter: true #开启请求参数内容协商模式 发请求: http://localhost:8080/test/person?format=json http://localhost:8080/test/person?format=xml format后面带上具体想要的方式 视图解析 渲染 使用模板引擎渲染: 表单发送(转发重定向),刷新仍停留上一次发送的请求(表单的post),但是不能直接重定向,因为非静态资源,模板引擎templates文件夹下所有的页面都需要经过请求处理(controller),最后由模板的渲染。 要被thymeleaf解析,每一个html都要加上thymeleaf的名称空间。 文件上传 异常处理 导入的服务器只能有一个,不然会报错。 数据访问 maven的最短路径原则 通过最短路径,最佳匹配来直接修改mysql驱动版本 自定义datasource版本时,可以通过@Bean方式添加组件,返回一个Datasource,同时,可以绑定配置文件: @ConfigurationProperties("") 单元测试 Junit5 springboot整合了Junit5的功能,junit类具有Spring的功能,@Autowire,比如@Transactional标注测试方法,测试完成后自动回滚; 特性 @EnableConfigurationProperties(xxx.class) 将对应类和配置文件绑定并且自动放到容器中 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:25:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |