Spring Boot基础
2022-03-31 10:45:49 64 举报
Spring Boot基础
作者其他创作
大纲/内容
启动方式
在IDE中启动spring boot程序
直接运行main方法,默认会绑定在8080端口上
在命令行执行jar包启动spring boot程序
使用mvn package将应用程序打成一个可以执行的jar之后,就可以在命令行使用java -jar命令来启动了
同样在启动spring boot的时候可以传递一些参数
在命令行直接启动spring boot程序
mvn spring-boot:run
devtools工具
spring-boot-devtools
让系统代码变化的时候自动重启
spring.devtools.restart.enabled=true
spring.devtools.remote.secret=123456
将本地修改的代码同步到远程服务器上部署的应用,强烈建议不要用于生产环境。
启动失败的处理
如果启动失败了,那么失败了就会基于FailureAnalyzer分析错误
典型的就是控制台启动报错提示APPLICATION FAILED TO START
传递启动参数
ApplicationRunner/CommandaLineRunner
如果要在SpringApplication.run()开始运行,但是完成应用启动之前,同时并行运行某些代码,比如系统初始化的工作,可以用ApplicationRunner/CommandLineRunner,两者唯一的区别,就是ApplicationRunner会传递进来ApplicationArguments,CommandLineRunner会传递进来数组
四大核心框架开发整合案例实战
Spring boot + Spring core
Spring Boot默认原生就是支持Spring Core的,只要在main类上加了@ComponentScan,就会自动扫描各种spring bean,同时基于@Autowire可以完成自动装配。
Spring boot + Spring mvc + Spring core
如果要在Spring boot中使用spring mvc,就意味着你肯定是要做web应用了,那么就在pom.xml中声明对spring-boot-starter-web的依赖,可以让spring boot自动配置好内置的tomcat容器,同时支持spring mvc接收http请求,接着可以在包中创建你的controller,对于Controller而言,一般会使用@RestController注解,因为现在大多数都是前后端彻底分离的架构,很少有用Controller接收请求后再去渲染视图的了,只要提供RESTful接口就可以。Controller可以基于@Autowired来装配后面的@Service业务逻辑组件。
Spring boot + Spring MVC +Spring Core + MyBatis
对于常规的j2ee应用来说,一般都是轻量级的Spring MVC + Spring Core + Mybatis架构进行开发的,Spring MVC负责MVC层,Spring Core负责业务逻辑层,MyBatis负责ORM层,那么就需要将MyBatis整合到Spring boot来使用。
网上各种乱七八糟的spring boot和mybatis整合文章,都不太标准和靠谱,标准的整合方式就是基于mybatis提供的mybatis-spring-boot-starter,基于近乎0配置的方式,完成spring boot和mybatis的整合。
Spring boot 1.5以上的版本,对应的是mybatis-spring-boot-starter的1.3版本,工作原理如左边
自动发现一个注册好的DataSource
创建一个sqlSessionFactory,并将DataSource传入SqlSessionFactory中
基于SqlSessionFactory创建一个SqlSessionTemplate
扫描所有的Mapper,将SqlSessionTemplate注入
Spring boot + Spring MVC + Spring Core + Mybatis + Druild 整合案例
章节22
Spring boot几大特点总结
对于常用依赖进行统一的版本约束,让各依赖的版本都可以兼容,通过spring-boot-starter-parent中的dependencyManagement实现
简化配置,内置web容器,Auto Configuration,内置打包插件,都是能让你写了代码就可以立刻运行起来,比如mybatis-spring-boot-starter,直接按照约定,找到一个数据源就可以完成实现所有的事情,不需要再进行繁琐的xml配置,比如spring-boot-starter-web,也是按照约定,直接完成默认的web程序相关的配置,比如内置的web容器接口,spring mvc配置等,最后发现,整合常用的框架,除了在外部文件,配置Druid连接池的一些东西,其他框架几乎没有配置,全部都是基于默认的约定完成,内置的打包插件可以让我们不做任何配置,直接就完成一个fat jar的打包,可以执行的jar包就是
spring-boot-starter-web介绍
只要在依赖中引入spring-boot-starter-web,其实spring boot就会基于自己的Auto Configuration功能,完成web服务器和spring mvc的自动配置,然后我们上手就可以开发web程序,直接运行main类就可以启动内置的web服务器,这就能让我们快速启动web程序的开发,调试和验证。
Spring MVC介绍
spring mvc是一个mvc层框架,可以接收http请求,将请求转发路由到对应的类方法中处理,接着将响应映射到视图文件,或者直接返回给浏览器
Spring Boot支持RESTful接口
Spring Boot提供了一个RestTemplate来辅助发起REST请求,底层通过HttpURLConnection来发送HTTP请求,使用jackson来进行JSON序列化
RestTemplateBuilder
用法百度
ModelAndView
spring-boot-start-parent作用
默认编译级别是jdk1.6
指定utf-8为source coding
有一个dependency management声明,对spring boot 可以集成的大部分流行第三方依赖,都指定了对应的可以互相兼容的版本
开启资源过滤器,支持对应资源文件中占位符的替换
指定多个插件:exec,surefire,git commit id,shade,用来支持运行,测试,版本控制,打包
不直接继承spring-boot-starter-parent
如果要继承自己的parent工程,而不是直接继承spring-boot-starter-parent,那么可以考虑import方式,将spring-boot-start-parent中dependency management引入进来,不过如果是这样就没法引用plugin management了。
依赖文件参考21节
自己指定jdk版本
使用spring boot的打包插件
spring-boot-start-parent指定了pluginManagement,配置好了一系列的插件,其中一个就是用于打成可执行jar包的shade插件,如果我们要使用的话,需要自己手动声明这个插件,然后通过mvn package命令就可以将工程打包成可执行的jar包了。
spring-boot-starter-*
spring-boot提供了一系列的starter类依赖,跟流行的常用项目进行整合,比如mybatis,redis,mongodb,elasticsearch等,我们只要声明对应的spring-boot-starter-*,就可以使用对应版本的依赖,多个依赖的版本都是兼容的。
基于spring boot进行开发要遵守的约定规则
一般建议基于spring boot开发的时候,按照spring boot约定的规则来设置我们的包结构,代码布局,比如下面这样的,这样spring boot在按照约定搜索各种注解的时候,一般不会出现什么问题。
Configuration
Configuration类
意义
spring boot核心思想是简化各种复杂的xml配置,所以一般建议如果要进行配置,可以采用configuration类。
@Configuration注解
@Configuration就相当于以前的ApplicationContext.xml这样的配置文件
@Configuration中,可以基于@Value注解将这些配置加载到类里面
同时@Configuration中,可以基于@Bean注解,直接在代码层面申明各种bean,包括Bean和bean之间依赖关系。
全部基于注解来完成装配
Application类
在java类中做一些配置,而且比较好的实践就是,就将用放main方法的Application类,作为Configuration类,所以一般会给Application类加@Configuration注解.
@Import
如果不想将所有的配置都放在Application类中,也可以使用@Import注解将其他的Configuration类引入进来,或者是依靠@ComponentScan注解自动扫描其他的Configuration类。
@ImportResource
即使一定要使用一个xml配置文件,建议是用@ImportResource来导入一个xml配置文件。
application.properties
将所有外部文件中的配置集中到application.properties中。
@Primary
首选bean
Auto Configuration
定义
自动配置是spring boot非常核心的一个功能,因为springboot核心思想,就是要尽可能地减少我们要配置的东西,尽量才有约定规则完成一些配置,这个功能会根据我们引入的依赖,来推测我们做什么事情,自动给我们完成需要的一些配置
如何启用
给@Configuration类增加@EnableAutoConfiguration注解之后,就会开启Auto Configuration功能,而且一般推荐使用@EnableAutoConfiguration开启Auto Configuration功能
查看情况
在启动spring boot应用的时候,加上--debug参数,就会打印出来Auto Configuration的具体情况了
手动禁用
与spring核心框架进行整合使用
一般就是在Application类上加@Configuration注解,启用自动扫描所有的spring bean,同时搭建好@Autowired注解来进行自动装配
只要按照上面那个约定,将Application类放在最顶层的包结构中,那么使用了@ComponentScan之后,就可以自动扫描和搜索所有的spring bean了,包括@Component,@Controller,@Service,@Repository
@SpringBootApplication
大多数spring boot的项目,都会在mian类上标注:@Configuration,@EnableAutoConfiguration,@ComponentScan,因为这个实在是太过于常见了,所以spring boot提供了一个@SpringBootApplication注解,这个注解相当于三个注解的综合体,所以在实际开发的时候,一般就会在main类上加上一个@SpringBootApplication注解。
一些注解
@RestController
对每个方法返回的值默认采用@ResponseBody方式来处理
不会去找某个视图资源文件来渲染后发回浏览器,因为@RestController就代表了这是一个负责提供RESTful接口的Controller
@RequestMapping
一般在Controller级别加一个@RequestMapping注解,代表对一类资源的映射
在Controller中每个方法级别加一个@RequestMapping,支持某一类请求
@PathVariable
0 条评论
下一页