springboot
一、什么是springboot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot让Spring的开发变得更简单、快速。它内嵌了服务器,Spring 容器中预装配了大量的第三方组件,完全抛弃了XML配置。也就是说Springboot并不是什么新技术,而是让spring项目开发更加自动化。
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
1.1、SpringBoot四个主要特性
1、SpringBoot Starter:他将常用的依赖分组进行了整合,将其合并到一个依赖中,这样就可以一次性添加到项目的Maven或Gradle构建中;
2、自动配置:SpringBoot的自动配置特性利用了Spring4对条件化配置的支持,合理地推测应用所需的bean并自动化配置他们;
3、命令行接口:(Command-line-interface, CLI):SpringBoot的CLI发挥了Groovy编程语言的优势,并结合自动配置进一步简化Spring应用的开发;
4、Actuatir:它为SpringBoot应用的所有特性构建一个小型的应用程序。但首先,我们快速了解每项特性,更好的体验他们如何简化Spring编程模型。
1.2 SpringBoot开发的具体好处
回顾我们之前的 SSM 项目,搭建过程还是比较繁琐的,需要:
1、配置web.xml,加载spring和spring mvc
2、配置数据库连接、配置spring事务
3、配置加载配置文件的读取,开启注解
。。。
配置完成之后部署tomcat 调试
而使用 Spring Boot 来开发项目则只需要非常少的几个配置就可以了
二、使用配置
Springboot运行步骤
1、在application.yml中配置必要指令,这些指令一般是全局指令。比如连接数据库的用户名密码、内嵌tomcat的端口号等,后面将给出具体配置。
2、在Main方法中执行SpringApplication.run()启动springboot,加@SpringBootApplication 注解标注为入口。
3、Springboot会自动扫描Main方法所在类的同级和下级包,可以加@ComponentScan(包),扫描任意包。
4、配置类可以实现WebMvcConfigurer接口,它已经写好常用的配置接口。
5、如果不实现WebMvcConfigurer接口可以加@Configuration注解标注为配置类,只要被springboot扫描到就会自动加载配置。
下面简单的演示一下怎么使用springboot吧
配置类的常用配置
1、@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理
跨域访问
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") //运行所有请求地址
.allowedOrigins("*") //允许所有域名
.allowedHeaders("*")//允许所有头
.allowedMethods("*");//允许所有方法
// /** ->1个或多个地址 *->1个或多个字符串}
资源放行
public void addResourceHandlers(ResourceHandlerRegistry registry) {
//放行static下所有资源
registry.addResourceHandler("/static/**")
//本地static下的所有资源}
.addResourceLocations("classpath:/static/");
拦截器
// 拦截器
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new MyInterceptor())
//拦截所有
.addPathPatterns("/**")
//放行资源
.excludePathPatterns("/gotoAddUser","/static/**");
}
yaml与jar包依赖
首先创建好一个maven项目(这里我就不演示怎么创建了(`へ´*)ノ)
在pom文件中添加依赖
<!-- 继承父包 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.3.RELEASE</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-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--thymeleaf模板jar,是很不错的html数据传递取值,类似jsp的jstl -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!--<!–jpa的jar包 ,操作数据库的,hibernate –>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
</dependencies>
使用springboot就不需要像之前使用spring那样需要书写xml配置文件手动的去装载类或是去配置
但是一些常用的配置会以yaml文件进行配置,一些其他的配置,比如跨域,静态资源映射等可以在WebMvcConfigurer里面配置
yaml配置
server:
port: 8080
# servlet:
# context-path: /mvc
spring:
datasource: #数据库源的配置
url: jdbc:mysql://localhost:3306/springproject?useUnicode=true&characterEncoding=UTF-8
driver-class-name: com.mysql.jdbc.Driver
password: 123456
username: root
thymeleaf: #thymeleaf模板配置
suffix: .html
mvc:
static-path-pattern: classpath:/templates/
servlet: #servlet配置
multipart:
enabled: true
max-file-size: 10240000
file-size-threshold: 10240
max-request-size: 20240000
jpa: #hibernate配置
show-sql: true
database: mysql
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL5Dialect
mybatis: #mybatis配置
type-aliases-package: com.entity
mapper-locations: classpath:mapper/*.xml
然后写一个启动类如下就可以运行了
@SpringBootApplication
public class QuestionMvcMain {
public static void main(String[] args) {
SpringApplication.run(QuestionMvcMain.class);
}
}