2021-03-15

SpringBoot入门学习看这一篇就够了

1.SpringBoot是什么?
SpringBoot是一套基于Spring框架的微服务框架。
2.为什么需要SpringBoot
由于Spring是一个轻量级的企业开发框架,主要的功能就是用于整合和管理其他框架。但随着整合的框架越来越多,Spring的整合配置也日益繁琐。在这个情况下,Spring团队有了一个想法:就是将平时主流的、经常使用到的框架的整合配置预先写好,然后通过简单的几个参数就可以实现框架的快速整合。这个想法催生SpringBoot框架,它是实现了各种主流框架与Spring的自动整合的框架。
 
3.SpringBoot的特点
1.实现了各种主流的框架的快速整合
2.实现了Spring的应用的快速部署,使用Spring Boot的Web应用可以以Jar的方式部署。(实现原理是将tomcat服务器打包到我们的web应用里面。)
 
4.参考资料
1.Spring官方的示例代码,地址如下:
https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples
2.SpringBoot官方参考文档,地址如下:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#getting-started
 
3.Spring Boot建议使用Eclipse安装STS插件或者直接使用STS开发工具。
下载官网:https://spring.io/tools/sts
 
5.SpringBoot入门
5.1 简单入门配置
第一步:
到SpringBoot官网https://start.spring.io生成maven项目下载并解压到Eclipse的工作空间导入到Eclipse中
第二步:编写一个简单的Java类
package com.gjs.springBoot.Controller;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controller@EnableAutoConfiguration //启动自动配置,表示程序使用Springboot默认的配置public class HelloController {  /**  * 如果访问路径/,在页面输入字符串Hello World!  */  @RequestMapping("/")  @ResponseBody  public String home() {   return "Hello World!";  }   public static void main(String[] args) {  SpringApplication.run(HelloController.class, args); }}

 


第三步:启动SpringBoot程序
装了STS插件可以直接右击运行
 
 
package com.gjs.springBoot;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication //等同于@EnableAutoConfiguration+@ComponentScan+@Configurationpublic class Application { public static void main(String[] args) {  SpringApplication.run(Application.class, args); }}

 


5.3热启动
使用spring-boot:run命令启动项目,每次修改完成代码都要重新启动。是非常麻烦的。
我们就有那么一个想法,能不能修改完代码,程序不用重启直接自动编译了?
我们将修改完代码开发工具自动编译的过程称为,热启动。Spring boot是支持热启动的。只有加入以下依赖就可以
<dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-devtools</artifactId>         <!--           optional=true,依赖不会传递,该项目依赖devtools;           之后依赖该项目的项目如果想要使用devtools,需要重新引入       -->       <optional>true</optional>  </dependency>

 


6.SpringBoot常见基础包说明
1.spring-boot-starter-web-1.5.4.RELEASE.jar:仅仅存放web项目需要的jar包的pom.2.spring-boot-starter-1.5.4.RELEASE.jar:仅仅存放springboot最小核心需要的jar包的pom.3.spring-boot-starter-logging-1.5.4.RELEASE.jar:仅仅存放日志输出需要的jar包的pom.4.spring-boot-1.5.4.RELEASE.jar:springboot框架核心包
5.spring-boot-autoconfigure-1.5.4.RELEASE.jar:默认支持的自动配置的框架的配置包(重点)
重点是spring-boot-autoconfigure包,因为spring boot的所有内置的自动配置的类都在里面!
 
7.常用API说明
7.1 SpringApplication类
用于启动Spring Boot的程序,根据传入的类声明的注解来决定不同的启动方式。
如:
SpringApplication.run(Application.class, args);

 


7.2 @EnableAutoConfiguration注解
@EnableAutoConfiguration注解的作用是:启动程序时,告诉SpringApplication启动对象使用SpringBoot的默认配置。
只要在SpringBoot项目的入口类配置了@EnableAutoConfiguration,在SpringBoot框架启动是就会自动根据导入的jar包来加载spring-boot-autoconfigure-1.5.4.RELEASE-sources.jar中的xxxAutoconfiguration配置类,使用其默认配置。
 
源码:
@SuppressWarnings("deprecation")@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented@Inherited@AutoConfigurationPackage@Import(EnableAutoConfigurationImportSelector.class)public @interface EnableAutoConfiguration { String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; Class<?>[] exclude() default {}; String[] excludeName() default {};}


属性说明:
exclude属性:使用Class格式的方式,排除默认自动启动中不需要的配置类
excludeName属性:使用类的限制名的方式,排序默认自动启动中不需要的配置类
 
7.3 @SpringBootApplication注解
源码:
@EnableAutoConfiguration@ComponentScan(excludeFilters = {@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),@Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })public @interface SpringBootApplication {@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "exclude")Class<?>[] exclude() default {};@AliasFor(annotation = EnableAutoConfiguration.class, attribute = "excludeName")String[] excludeName() default {};@AliasFor(annotation = ComponentScan.class, attribute = "basePackages")String[] scanBasePackages() default {};@AliasFor(annotation = ComponentScan.class, attribute = "basePackageClasses")Class<?>[] scanBasePackageClasses() default {};}

 


根据源码可以得出:@SpringBootApplication注解也是启动Springboot的默认配置。只是在@EnableAutoConfiguration注解的基础上增加了扫描包@ComponentScan的这个注解。实现了并且扫描指定范围的类创建对象到容器里面。
 
属性说明:
1.basePackages属性
@SpringBootApplication默认扫描的范围是使用该注解的当前的类的包以及子包,如果要指定其他范围的包,可以是basePackages指定。
2.basePackageClasses属性
用于精确指定哪些类需要创建对象加载到Spring容器里面。
3.exclude属性
通过Class的方式排除不扫描的类,就是该类不创建对象。
4.excludeName属性
通过类的全限制名的方式,排除不扫描的类,指定的类不会在容器中创建对象。
 
7.4 @AutoConfigureBefore注解
作用:指定在SpringBoot框架自动配置的配置类执行完成之前,执行指定的自定义的配置类。
如果放在Application入口类,表示在所有自动配置的配置类还没有执行就先加载自定义的配置类。
 
源码:
@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE })public @interface AutoConfigureBefore { Class<?>[] value() default {}; String[] name() default {};}


属性说明:
value:使用类的方式指定自动配置类
name:使用类的全限制名(字符串)类指定配置类
 
7.5 @AutoConfigureAfter注解
作用:指定在SpringBoot框架自动配置的配置类执行完成之后,然后执行指定的自定义的配置类。
源码:
@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE })public @interface AutoConfigureAfter { Class<?>[] value() default {}; String[] name() default {};}


属性说明:
value:使用类的方式指定自动配置类
name:使用类的全限制名(字符串)类指定配置类
 
7.6 @SpringBootTest注解
作用:用于使用JUnit测试SpringBoot程序时,启动SpringBoot框架。测试SpringBoot一定要加上。
示例:
package com.gjs.springBoot.test; import java.sql.SQLException;import javax.sql.DataSource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest//如果不加该注解,无法启动SpringBootpublic class DataSourceTest { @Autowired private DataSource dataSource; @Test public void dataSource() {  try {   System.out.println(dataSource.getConnection());   } catch (SQLException e) {    e.printStackTrace();   }   }}

 


8.SpringBoot配置流程(A)
SpringBoot框架是一个将整合框架的整合代码都写好了的框架。但整合框架有些属性是需要我们配置的,而这些属性名是SpringBoot规定好的,我们需要找到这些属性然后对其进行配置。
我们需要知道如何找到各种整合框架可以配置的属性,以及属性对应的属性名。
 
配置流程说明:
1.在SpringBoot的spring-boot-autoconfigure-1.5.4.RELEASE.jar中编写了所以内置支持的框架的自动整合代码
2.所有支持的框架根据功能类型来划分包,每个包都有一个XxxxAutoConfiguration配置类,都是一个基于纯注解的配置类,是各种框架整合的框架代码。
3.如果配置的框架有默认的配置参数,都放在一个命名为XxxxProperties的属性
4.通过项目的resources下的application.properties文件可以修改每个整合框架的默认属性,从而实现了快速整合的目的。
 
配置流程图:
3.数据源的配置类的属性如下
/prefix 前缀:在配置文件用spring.datasource.属性名=值 来配置属性@ConfigurationProperties(prefix = "spring.datasource") public class DataSourceProperties  implements BeanClassLoaderAware, EnvironmentAware, InitializingBean { private ClassLoader classLoader; private Environment environment; private String name = "testdb"; private boolean generateUniqueName; //必须配置的属性  private Class<? extends DataSource> type; //数据源类型:数据源全限定名 private String driverClassName; //数据库驱动名 private String url; //数据库地址 private String username; //数据库账号 private String password; //数据库密码 private String jndiName; private boolean initialize = true; private String platform = "all"; private List<String> schema; private String schemaUsername; private String schemaPassword; private List<String> data; private String dataUsername; private String dataPassword; private boolean continueOnError = false; private String separator = ";"; private Charset sqlScriptEncoding; private EmbeddedDatabaseConnection embeddedDatabaseConnection = EmbeddedDatabaseConnection.NONE; private Xa xa = new Xa(); private String uniqueName;

 


4.application.properties配置文件修改数据源参数:
#datasourcespring.datasource.url=jdbc:mysql://localhost:3306/springbootspring.datasource.driverClassName=com.mysql.jdbc.Driverspring.datasource.username=rootspring.datasource.password=1234#support dbcp2 datasourcespring.datasource.type=org.apache.commons.dbcp2.BasicDataSource

 


5. 测试代码
package com.gjs.springBoot.tset;import java.sql.SQLException;import javax.sql.DataSource;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)//SpringBoot测试要加上这个注解@SpringBootTestpublic class DataSourceTest {  @Autowired private DataSource dataSource; @Test public void dataSource() {  try {   System.out.println(dataSource.getConnection());  } catch (SQLException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } }}

 


9.4 获得自定义application.properties声明的属性值
使用@ConfigurationProperties注解可以直接获得application.properties配置的属性值。
 
1.@ConfigurationProperties属性说明:
prefix属性:表示获得application.properties时忽略的指定的前缀,如:
@ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false)


ignoreUnknownFields属性:忽略未知的字段值。如果为true时,就是当application.properties设置的输入找不到对应的字段时,就忽略它。
 
2.使用@ConfigurationProperties需要导入支持的依赖包:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency>

 


3.只需要在类上打上@ConfigurationProperties就能直接使用application.properties配置的属性值
不用再使用@value注解
 
 
 
原文链接:https://www.cnblogs.com/gaojinshun/p/14529389.html
 
 








原文转载:http://www.shaoqun.com/a/626668.html

跨境电商:https://www.ikjzd.com/

rakuten:https://www.ikjzd.com/w/2718

燕文物流:https://www.ikjzd.com/w/2229


1.SpringBoot是什么?SpringBoot是一套基于Spring框架的微服务框架。2.为什么需要SpringBoot由于Spring是一个轻量级的企业开发框架,主要的功能就是用于整合和管理其他框架。但随着整合的框架越来越多,Spring的整合配置也日益繁琐。在这个情况下,Spring团队有了一个想法:就是将平时主流的、经常使用到的框架的整合配置预先写好,然后通过简单的几个参数就可以实现框
parenthood:https://www.ikjzd.com/w/2497
刘军:https://www.ikjzd.com/w/1835
wario:https://www.ikjzd.com/w/887
口述:老公嫌我太瘦 找40岁胖姐亲热:http://lady.shaoqun.com/m/a/10777.html
为什么要在Amazon Live上推广产品?:https://www.ikjzd.com/home/135028
口述:婆婆帮老公和小三办模拟婚礼:http://lady.shaoqun.com/m/a/42045.html

No comments:

Post a Comment