当前位置:   article > 正文

springboot要点详解_springboot常用技术点

springboot常用技术点

springboot是什么

SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,,所以 SpringBoot是一个服务于框架的框架

 

如何创建一个springboot项目

点击新建一个project项目:

 

选择Spring Initializr,java版本,以及springboot官网地址: next

 

 

 之后定义项目包名和对应java和jar包等版本号一路next之后finish即可

 

spring全家桶后期学习路线:

springboot的核心配置文件

无论是properties还是yaml的配置文件,都要是application为文件名

yaml配置文件

对空格要求极高

 

 

使用yaml给属性赋值 :

 yaml和properties对照:

SpringApplication

这个类主要做了以下四件事情:

 

1.当你导入对应jar包,自动配置生效,对应包中proprieties可以根据自己需求配置,条件适配器就生效,会自动创建对象注入容器中,省去xml配置bean

2.你配置过,就会触发条件适配器,就会创建对应bean,注入到容器中,就可以在这些对象基础上进行业务开发

3.学了spring和mvc我们知道,当你写了一个类想注入到容器中,你需要配置bean,当你想运行一个项目的时候 你需要配置dispatchservlet相关才能运行项目,在springboot中,当你创建了一个项目,springboot已经在底层把所有相关的配置已经完全写好了,当你想用的时候,你就写上想对应的starter,那么 springboot就会判断

4.这个启动类的注解的3个主分支分别作用:标注主类时spring类、标注spring容器要扫描的包即要纳入spring管理的全部类包、加载所有实现自动装配的配置类

 

程序主入口。不能删也不能改

自动装配

 

自动配置真正实现是从classpath中搜寻所有的META-INF/spring.factories配置文件 ,并将其中对应的 org.springframework.boot.autoconfigure. 包下的配置项,通过反射实例化为对应标注了 @Configuration的JavaConfig形式的IOC容器配置类 , 然后将这些都汇总成为一个实例并加载到IOC容器中。

结论:

  1. SpringBoot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值

  2. 将这些值作为自动配置类导入容器 , 自动配置类就生效 , 帮我们进行自动配置工作;

  3. 整个J2EE的整体解决方案和自动配置都在springboot-autoconfigure的jar包中;

  4. 它会给容器中导入非常多的自动配置类 (xxxAutoConfiguration), 就是给容器中导入这个场景需要的所有组件 , 并配置好这些组件 ;

  5. 有了自动配置类 , 免去了我们手动编写配置注入功能组件等的工作。

数据校验

JSR303校验:判断输入的数据合不合法

注解意义如下

 

补充内容: 

什么是多态

 

 

属性不能调用多态,如果java中没有多态性,那么抽象类和接口就没有实际意义

什么是jar包

jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。

这些jar包一般都会放在lib目录下的

什么是Maven

Maven是项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件

什么是Bean

在Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。

bean是计算机自动生成的类,bean是一个由Spring IoC容器实例化、组装和管理的对象。也就是说,bean并不是程序员编辑的,而是程序运行时,由spring通过反射生成的。在程序中,我们并不使用代码去new一个类(service,dao层等),那么谁来new呢?又是如何new的呢?

那么,bean就相当于class AddFactory:IFactory这一层,而为了适用性更广,spring是通过反射来进行new的这个过程的,只要识别到我们打到类上的标签,比如@Service,@Componet等,就会通过反射将类实例化出来,并且统一放到IOC容器(一个map)中管理起来,当发现到@Autowire,@Resource等标签时,就通过名字或者类型将对象从map中拿出来注入进去。

Maven是一个项目管理工具, Maven有一个生命周期,当你运行mvn install的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven 运行了许多默认的插件目标,这些目标完成了像编译和创建一个JAR文件这样的工作。 此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

通俗易懂点来说。项目开发在写代码的同时,会伴随着许多必不可少的事情要做,下面我们举几个例子感受一下:

我们需要引用各种jar包,较大的工程肯能需要引入十几个或者上百个jar包,这都需要我们手动一个一个导入到工程目录,而且经常会遇到各种让人抓狂的jar包冲突,版本冲突。 世界上没有不存在bug的代码,为了减少bug,写完代码后,我们还要写一些单元测试,然后一个个的运行来检查代码质量。 再优雅的代码也是要出来买的。我们后面还需要将代码与各种配置文件、资源整合到一起,定型打包,如果是web项目,还需要将之发布到服务器,供人蹂躏。 试想一下,如果有一种工具,可以将你从上述的繁重工作中解放出来,能帮你构建工程、管理jar包、编译代码,还能帮你自动运行单元测试、打包、生成报表,甚至能帮你部署项目,生成web站点,你会心动吗?

Maven就可以解决上面所提到的这些问题

Bean 管理指的是两个操作

(1)Spring 创建对象

(2)Spirng 注入属性

Bean 管理操作有两种方式:1.基于 xml 配置文件方式实现

2.基于注解方式实现

ToString()的作用

springboot注解

1、@SpringBootApplication

这是 Spring Boot 最最最核心的注解,用在 Spring Boot 主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。

其实这个注解就是 @SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan 这三个注解的组合,也可以用这三个注解来代替 @SpringBootApplication 注解。 @Configuration 等同于spring的XML配置文件;使用Java代码可以检查类型安全。

@EnableAutoConfiguration 自动配置。

@ComponentScan 组件扫描,可自动发现和装配一些Bean。

@Component可配合CommandLineRunner使用,在程序启动后执行一些基础任务。

@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。

@Autowired自动导入。

@PathVariable获取参数。

2、@Repository

用于标注数据访问组件,即DAO组件。

3、@Service

用于标注业务层组件。

4、@RestController

用于标注控制层组件(如struts中的action),包含@Controller和@ResponseBody

5、@ResponseBody

表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,加上@responsebody后返回结果不会被解析

为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@responsebody后,会直接返回json数据。

6、@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

7、@ComponentScan

组件扫描。相当于,如果扫描到有@Component @Controller @Service等这些注解的类,则把

这些类注册为bean。

8、@Configuration

指出该类是 Bean 配置的信息源,相当于XML中的,一般加在主类上。

9、@Bean

相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

10、@EnableAutoConfiguration

让 Spring Boot 根据应用所声明的依赖来对 Spring 框架进行自动配置,一般加在主类上。

11、@AutoWired

byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 当加上(required=false)时,就算找不到bean也不报错。

12、@Qualifier

当有多个同一类型的Bean时,可以用@Qualifier("name")来指定。与@Autowired配合使用

13、@Resource(name="name",type="type")

没有括号内内容的话,默认byName。与@Autowired干类似的事。

14、@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

该注解有六个属性:

params:指定request中必须包含某些参数值是,才让该方法处理。

headers:指定request中必须包含某些指定的header值,才能让该方法处理请求。

value:指定请求的实际地址,指定的地址可以是URI Template 模式

method:指定请求的method类型, GET、POST、PUT、DELETE等

consumes:指定处理请求的提交内容类型(Content-Type),如application/json,text/html;

produces:指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回

15、@RequestParam

用在方法的参数前面。 @RequestParam String a =request.getParameter("a")。

16、@PathVariable

路径变量。参数与大括号里的名字一样要相同。 RequestMapping("user/get/mac/{macAddress}") public String getByMacAddress(@PathVariable String macAddress){   //do something;   }

配置文件优先级问题

1.根目录下的config优先级最高

2.项目下的配置文件第二

3.resource下的配置文件第三

4.类路径下的配置文件第四(默认的) ,所以添加配置文件很简单

 

 

多环境配置

 

yaml实现多文档模块:

可以在yaml里面配置多环境配置文件

 

访问静态资源优先级问题

 

页面跳转

跳转的页面一般都放在templates文件夹下

前端写一个按钮(请求),点击之后会触发一个超链接,这个超链接对应的就是后端controller的request mapping(“/emps”),点击之后会进行后端的这个方法的处理,比如处理之后会return一个页面返回给前端

 

 

Thymeleaf模板引擎

模板引擎

前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等。

jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war,像第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的

那不支持jsp,如果我们直接用纯静态页面的方式,那给我们开发会带来非常大的麻烦,那怎么办呢?

SpringBoot推荐你可以来使用模板引擎:

模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想都是一样的,什么样一个思想呢我们来看一下这张图:

模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,就是我们在后台封装一些数据。然后把这个模板和这个数据交给我们模板引擎,模板引擎按照我们这个数据帮你把这表达式解析、填充到我们指定的位置,然后把这个数据最终生成一个我们想要的内容给我们写出去,这就是我们这个模板引擎,不管是jsp还是其他模板引擎,都是这个思想。只不过呢,就是说不同模板引擎之间,他们可能这个语法有点不一样。其他的我就不介绍了,我主要来介绍一下SpringBoot给我们推荐的Thymeleaf模板引擎,这模板引擎呢,是一个高级语言的模板引擎,他的这个语法更简单。而且呢,功能更强大。  

什么是泛型?

模拟数据库中的数据

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/513471
推荐阅读
相关标签
  

闽ICP备14008679号