了解SpringBoot
Posted 夏嘻嘻嘻嘻嘻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了了解SpringBoot相关的知识,希望对你有一定的参考价值。
一、SpringBoot是什么?
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
spring大家都知道,boot是启动的意思。所以,spring boot其实就是一个启动spring项目的一个工具而已。从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用。
现在流行微服务与分布式系统,springboot就是一个非常好的微服务开发框架,你可以使用它快速的搭建起一个系统。同时,你也可以使用spring cloud(Spring Cloud是一个基于Spring Boot实现的云应用开发工具)来搭建一个分布式的网站。
二、SpringBoot的约定大于配置
约定大于配置:就是说系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置,
三、SpringBoot的核心功能
SpringBoot主要有如下核心功能:
1.独立运行的Spring项目
Spring Boot可以以jar包的形式来运行,运行一个Spring Boot项目我们只需要通过java -jar xx.jar类运行。非常方便。
2.内嵌Servlet容器
spring boot内置了三种servlet容器:tomcat,jetty,undertow。所以,你只需要一个java的运行环境就可以跑spring boot的项目了。
3.提供starter简化Maven配置
使用Spring或者SpringMVC我们需要添加大量的依赖,而这些依赖很多都是固定的,这里Spring Boot 通过starter能够帮助我们简化Maven配置。
4.自动配置Spring
spring boot并不是一个全新的框架,它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring boot都可以做。针对很多Spring应用程序常见的应用功能,Spring Boot能自动提供相关配置。
5.准生产的应用监控
spring boot提供了actuator包,可以使用它来对你的应用进行监控。它主要提供了以下功能:
6.无代码生成和xml配置
spring boot采用java config的方式,对spring进行配置,并且提供了大量的注解,极大地提高了工作效率。
spring boot提供许多默认配置,当然也提供自定义配置。但是所有spring boot的项目都只有一个配置文件:application.properties/application.yml。
四、配置解析
1、自定义属性
application.properties提供自定义属性的支持,这样我们就可以把一些常量配置在这里:
#redis配置
spring.redis.database=6
spring.redis.host=192.168.15.5
spring.redis.password=ZXCasdQWE123
spring.redis.port=6379
然后直接在要使用的地方通过注解@Value(value=”${config.name}”)就可以绑定到你想要的属性上面
@Value("${spring.redis.database}")
private String database;
@Value("${spring.redis.host}")
private String host;
有时候属性太多了,一个个绑定到属性字段上太累,官方提倡绑定一个对象的bean,这里我们建一个ConfigBean.java类,顶部需要使用注解@ConfigurationProperties(prefix = “com.dudu”)来指明使用哪个
@ConfigurationProperties(prefix = "spring.redis")
public class RedisConfig {
private String database;
private String host;
...
// 省略getter和setter
}
这里配置完还需要在spring Boot入口类加上@EnableConfigurationProperties并指明要加载哪个bean,如果不写ConfigBean.class,在bean类那边添加
@SpringBootApplication
@EnableConfigurationProperties({RedisConfig.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
最后通过引入RedisConfig使用即可。
2、参数间引用
在application.properties中的各个参数之间也可以直接引用来使用,就像下面的设置:
com.text.name="张三"
com.test.want="祝大家狗年大吉"
com.test.say=${com.text.name}在此${com.test.want}
这样我们就可以只是用say这个属性就好。
3、使用自定义配置文件
有时候我们不希望把所有配置都放在application.properties里面,这时候我们可以另外定义一个,路径跟也放在src/main/resources下面。
如果你使用的是1.5以前的版本,那么可以通过locations指定properties文件的位置,这样:
@ConfigurationProperties(prefix = "config2",locations="classpath:test.properties")
但是1.5版本后就没有这个属性了,找了半天发现添加@Configuration和@PropertySource(“classpath:test.properties”)后才可以读取。
新建一个bean类:
@Configuration
@ConfigurationProperties(prefix = "com.test")
@PropertySource("classpath:test.properties")
public class ConfigTestBean {
private String name;
private String want;
...
// 省略getter和setter
}
4、随机值配置
配置文件中${random} 可以用来生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如 生成 int 值、long 值或者 string 字符串。
com.secret=${random.value}
com.number=${random.int}
com.bignumber=${random.long}
com.uuid=${random.uuid}
com.number.less.than.ten=${random.int(10)}
com.number.in.range=${random.int[1024,65536]}
5、外部配置-命令行参数配置
Spring Boot是基于jar包运行的,打成jar包的程序可以直接通过下面命令运行:
java -jar xx.jar
可以以下命令修改tomcat端口号:
java -jar xx.jar --server.port=9090
可以看出,命令行中连续的两个减号--
就是对application.properties
中的属性值进行赋值的标识。
所以java -jar xx.jar --server.port=9090
等价于在application.properties
中添加属性server.port=9090
。
如果你怕命令行有风险,可以使用SpringApplication.setAddCommandLineProperties(false)禁用它。
实际上,Spring Boot应用程序有多种设置途径,Spring Boot能从多重属性源获得属性,包括如下几种:
- 根目录下的开发工具全局设置属性(当开发工具激活时为
~/.spring-boot-devtools.properties
)。 - 测试中的@TestPropertySource注解。
- 测试中的@SpringBootTest#properties注解特性。
- 命令行参数
SPRING_APPLICATION_JSON
中的属性(环境变量或系统属性中的内联JSON嵌入)。ServletConfig
初始化参数。ServletContext
初始化参数。- java:comp/env里的JNDI属性
- JVM系统属性
- 操作系统环境变量
- 随机生成的带random.* 前缀的属性(在设置其他属性时,可以应用他们,比如${random.long})
- 应用程序以外的application.properties或者appliaction.yml文件
- 打包在应用程序内的application.properties或者appliaction.yml文件
- 通过@PropertySource标注的属性源
- 默认属性(通过
SpringApplication.setDefaultProperties
指定).
这里列表按组优先级排序,也就是说,任何在高优先级属性源里设置的属性都会覆盖低优先级的相同属性,列如我们上面提到的命令行属性就覆盖了application.properties的属性。
6、配置文件的优先级
application.properties和application.yml文件可以放在以下四个位置:
- 外置,在相对于应用程序运行目录的/congfig子目录里。
- 外置,在应用程序运行的目录里
- 内置,在config包内
- 内置,在Classpath根目录
同样,这个列表按照优先级排序,也就是说,src/main/resources/config下application.properties覆盖src/main/resources下application.properties中相同的属性。
此外,如果你在相同优先级位置同时有application.properties和application.yml,那么application.properties里的属性里面的属性就会覆盖application.yml。
7、Profile-多环境配置
当应用程序需要部署到不同运行环境时,一些配置细节通常会有所不同,最简单的比如日志,生产日志会将日志级别设置为WARN或更高级别,并将日志写入日志文件,而开发的时候需要日志级别为DEBUG,日志输出到控制台即可。
如果按照以前的做法,就是每次发布的时候替换掉配置文件,这样太麻烦了,Spring Boot的Profile就给我们提供了解决方案,命令带上参数就搞定。
这里我们来模拟一下,只是简单的修改端口来测试
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties
的格式,其中{profile}
对应你的环境标识,比如:
- application-dev.properties:开发环境
- application-prod.properties:生产环境
想要使用对应的环境,只需要在application.properties中使用spring.profiles.active属性来设置,值对应上面提到的{profile},这里就是指dev、prod这2个。
当然你也可以用命令行启动的时候带上参数:
java -jar xxx.jar --spring.profiles.active=dev
除了可以用profile的配置文件来分区配置我们的环境变量,在代码里,我们还可以直接用@Profile注解来进行配置
例如数据库配置,这里我们先定义一个接口
public interface DBConnector { public void configure(); }
分别定义俩个实现类来实现它
/**
* 测试数据库
*/
@Component
@Profile("testdb")
public class TestDBConnector implements DBConnector {
@Override
public void configure() {
System.out.println("testdb");
}
}
/**
* 生产数据库
*/
@Component
@Profile("devdb")
public class DevDBConnector implements DBConnector {
@Override
public void configure() {
System.out.println("devdb");
}
}
通过在配置文件激活具体使用哪个实现类
spring.profiles.active=testdb
然后就可以这么用了
除了spring.profiles.active来激活一个或者多个profile之外,还可以用spring.profiles.include来叠加profile
spring.profiles.active: testdb
spring.profiles.include: proddb,prodmq
五、常用应用程序属性
1 # ===================================================================
2 # COMMON SPRING BOOT PROPERTIES
3 #
4 # This sample file is provided as a guideline. Do NOT copy it in its
5 # entirety to your own application. ^^^
6 # ===================================================================
7
8
9 # ----------------------------------------
10 # CORE PROPERTIES
11 # ----------------------------------------
12
13 # BANNER
14 banner.charset=UTF-8 # Banner file encoding.
15 banner.location=classpath:banner.txt # Banner file location.
16 banner.image.location=classpath:banner.gif # Banner image file location (jpg/png can also be used).
17 banner.image.width= # Width of the banner image in chars (default 76)
18 banner.image.height= # Height of the banner image in chars (default based on image height)
19 banner.image.margin= # Left hand image margin in chars (default 2)
20 banner.image.invert= # If images should be inverted for dark terminal themes (default false)
21
22 # LOGGING
23 logging.config= # Location of the logging configuration file. For instance `classpath:logback.xml` for Logback
24 logging.exception-conversion-word=%wEx # Conversion word used when logging exceptions.
25 logging.file= # Log file name. For instance `myapp.log`
26 logging.level.*= # Log levels severity mapping. For instance `logging.level.org.springframework=DEBUG`
27 logging.path= # Location of the log file. For instance `/var/log`
28 logging.pattern.console= # Appender pattern for output to the console. Only supported with the default logback setup.
29 logging.pattern.file= # Appender pattern for output to the file. Only supported with the default logback setup.
30 logging.pattern.level= # Appender pattern for log level (default %5p). Only supported with the default logback setup.
31 logging.register-shutdown-hook=false # Register a shutdown hook for the logging system when it is initialized.
32
33 # AOP
34 spring.aop.auto=true # Add @EnableAspectJAutoProxy.
35 spring.aop.proxy-target-class=false # Whether subclass-based (CGLIB) proxies are to be created (true) as opposed to standard Java interface-based proxies (false).
36
37 # IDENTITY (ContextIdApplicationContextInitializer)
38 spring.application.index= # Application index.
39 spring.application.name= # Application name.
40
41 # ADMIN (SpringApplicationAdminJmxAutoConfiguration)
42 spring.application.admin.enabled=false # Enable admin features for the application.
43 spring.application.admin.jmx-name=org.springframework.boot:type=Admin,name=SpringApplication # JMX name of the application admin MBean.
44
45 # AUTO-CONFIGURATION
46 spring.autoconfigure.exclude= # Auto-configuration classes to exclude.
47
48 # SPRING CORE
49 spring.beaninfo.ignore=true # Skip search of BeanInfo classes.
50
51 # SPRING CACHE (CacheProperties)
52 spring.cache.cache-names= # Comma-separated list of cache names to create if supported by the underlying cache manager.
53 spring.cache.caffeine.spec= # The spec to use to create caches. Check CaffeineSpec for more details on the spec format.
54 spring.cache.couchbase.expiration=0 # Entry expiration in milliseconds. By default the entries never expire.
55 spring.cache.ehcache.config= # The location of the configuration file to use to initialize EhCache.
56 spring.cache.guava.spec= # The spec to use to create caches. Check CacheBuilderSpec for more details on the spec format.
57 spring.cache.hazelcast.config= # The location of the configuration file to use to initialize Hazelcast.
58 spring.cache.infinispan.config= # The location of the configuration file to use to initialize Infinispan.
59 spring.cache.jcache.config= # The location of the configuration file to use to initialize the cache manager.
60 spring.cache.jcache.provider= # Fully qualified name of the CachingProvider implementation to use to retrieve the JSR-107 compliant cache manager. Only needed if more than one JSR-107 implementation is available on the classpath.
61 spring.cache.type= # Cache type, auto-detected according to the environment by default.
62
63 # SPRING CONFIG - using environment property only (ConfigFileApplicationListener)
64 spring.config.location= # Config file locations.
65 spring.config.name=application # Config file name.
66
67 # HAZELCAST (HazelcastProperties)
68 spring.hazelcast.config= # The location of the configuration file to use to initialize Hazelcast.
69
70 # PROJECT INFORMATION (ProjectInfoProperties)
71 spring.info.build.location=classpath:META-INF/build-info.properties # Location of the generated build-info.properties file.
72 spring.info.git.location=classpath:git.properties # Location of the generated git.properties file.
73
74 # JMX
75 spring.jmx.default-domain= # JMX domain name.
76 spring.jmx.enabled=true # Expose management beans to the JMX domain.
77 spring.jmx.server=mbeanServer # MBeanServer bean name.
78
79 # Email (MailProperties)
80 spring.mail.default-encoding=UTF-8 # Default MimeMessage encoding.
81 spring.mail.host= # SMTP server host. For instance `smtp.example.com`
82 spring.mail.jndi-name= # Session JNDI name. When set, takes precedence to others mail settings.
83 spring.mail.password= # Login password of the SMTP server.
84 spring.mail.port= # SMTP server port.
85 spring.mail.properties.*= # Additional JavaMail session properties.
86 spring.mail.protocol=smtp # Protocol used by the SMTP server.
87 spring.mail.test-connection=false # Test that the mail server is available on startup.
88 spring.mail.username= # Login user of the SMTP server.
89
90 # APPLICATION SETTINGS (SpringApplication)
91 spring.main.banner-mode=console # Mode used to display the banner when the application runs.
92 spring.main.sources= # Sources (class name, package name or XML resource location) to include in the ApplicationContext.
93 spring.main.web-environment= # Run the application in a web environment (auto-detected by default).
94
95 # FILE ENCODING (FileEncodingApplicationListener)
96 spring.mandatory-file-encoding= # Expected character encoding the application must use.
97
98 # INTERNATIONALIZATION (MessageSourceAutoConfiguration)
99 spring.messages.always-use-message-format=false # Set whether to always apply the MessageFormat rules, parsing even messages without arguments.
100 spring.messages.basename=messages # Comma-separated list of basenames, each following the ResourceBundle convention.
101 spring.messages.cache-seconds=-1 # Loaded resource bundle files cache expiration, in seconds. When set to -1, bundles are cached forever.
102 spring.messages.encoding=UTF-8 # Message bundles encoding.
103 spring.messages.fallback-to-system-locale=true # Set whether to fall back to the system Locale if no files for a specific Locale have been found.
104
105 # OUTPUT
106 spring.output.ansi.enabled=detect # Configure the ANSI output.
107
108 # PID FILE (ApplicationPidFileWriter)
109 spring.pid.fail-on-write-error= # Fail if ApplicationPidFileWriter is used but it cannot write the PID file.
110 spring.pid.file= # Location of the PID file to write (if ApplicationPidFileWriter is used).
111
112 # PROFILES
113 spring.profiles.active= # Comma-separated list (or list if using YAML) of active profiles.
114 spring.profiles.include= # Unconditionally activate the specified comma separated profiles (or list of profiles if using YAML).
115
116 # SENDGRID (SendGridAutoConfiguration)
117 spring.sendgrid.api-key= # SendGrid api key (alternative to username/password)
118 spring.sendgrid.username= # SendGrid account username
119 spring.sendgrid.password= # SendGrid account password
120 spring.sendgrid.proxy.host= # SendGrid proxy host
121 spring.sendgrid.proxy.port= # SendGrid proxy port
122
123
124 # ----------------------------------------
125 # WEB PROPERTIES
126 # ----------------------------------------
127
128 # EMBEDDED SERVER CONFIGURATION (ServerProperties)
129 server.address= # Network address to which the server should bind to.
130 server.compression.enabled=false # If response compression is enabled.
131 server.compression.excluded-user-agents= # List of user-agents to exclude from compression.
132 server.compression.mime-types= # Comma-separated list of MIME types that should be compressed. For instance `text/html,text/css,application/json`
133 server.compression.min-response-size= # Minimum response size that is required for compression to be performed. For instance 2048
134 server.connection-timeout= # Time in milliseconds that connectors will wait for another HTTP request before closing the connection. When not set, the connector\'s container-specific default will be used. Use a value of -1 to indicate no (i.e. infinite) timeout.
135 server.context-parameters.*= # Servlet context init parameters. For instance `server.context-parameters.a=alpha`
136 server.context-path= # Context path of the application.
137 server.display-name=application # Display name of the application.
138 server.max-http-header-size=0 # Maximum size in bytes of the HTTP message header.
139 server.error.include-stacktrace=never # When to include a "stacktrace" attribute.
140 server.error.path=/error # Path of the error controller.
141 server.error.whitelabel.enabled=true # Enable the default error page displayed in browsers in case of a server error.
142 server.jetty.acceptors= # Number of acceptor threads to use.
143 server.jetty.max-http-post-size=0 # Maximum size in bytes of the HTTP post or put content.
144 server.jetty.selectors= # Number of selector threads to use.
145 server.jsp-servlet.class-name=org.apache.jasper.servlet.JspServlet # The class name of the JSP servlet.
146 server.jsp-servlet.init-parameters.*= # Init parameters used to configure the JSP servlet
147 server.jsp-servlet.registered=true # Whether or not the JSP servlet is registered
148 server.port=8080 # Server HTTP port.
149 server.server-header= # Value to use for the Server response header (no header is sent if empty)
150 server.servlet-path=/ # Path of the main dispatcher servlet.
151 server.use-forward-headers= # If X-Forwarded-* headers should be applied to the HttpRequest.
152 server.session.cookie.comment= # Comment for the session cookie.
153 server.session.cookie.domain= # Domain for the session cookie.
154 server.session.cookie.http-only= # "HttpOnly" flag for the session cookie.
155 server.session.cookie.max-age= # Maximum age of the session cookie in seconds.
156 server.session.cookie.name= # Session cookie name.
157 server.session.cookie.path= # Path of the session cookie.
158 server.session.cookie.secure= # "Secure" flag for the session cookie.
159 server.session.persistent=false # Persist session data between restarts.
160 server.session.store-dir= # Directory used to store session data.
161 server.session.timeout= # Session timeout in seconds.
162 server.session.tracking-modes= # Session tracking modes (one or more of the following: "cookie", "url", "ssl").
163 server.ssl.ciphers= # Supported SSL ciphers.
164 server.ssl.client-auth= # Whether client authentication is wanted ("want") or needed ("need"). Requires a trust store.
165 server.ssl.enabled= # Enable SSL support.
166 server.ssl.enabled-protocols= # Enabled SSL protocols.
167 server.ssl.key-alias= # Alias that identifies the key in the key store.
168 server.ssl.key-password= # Password used to access the key in the key store.
169 server.ssl.key-store= # Path to the key store that holds the SSL certificate (typically a jks file).
170 server.ssl.key-store-password= # Password used to access the key store.
171 server.ssl.key-store-provider= # Provider for the key store.
172 server.ssl.key-store-type= # Type of the key store.
173 server.ssl.protocol=TLS # SSL protocol to use.
174 server.ssl.trust-store= # Trust store that holds SSL certificates.
175 server.ssl.trust-store-password= # Password used to access the trust store.
176 server.ssl.trust-store-provider= # Provider for the trust store.
177 server.ssl.trust-store-type= # Type of the trust store.
178 server.tomcat.accept-count= # Maximum queue length for incoming connection requests when all possible request processing threads are in use.
179 server.tomcat.accesslog.buffered=true # Buffer output such that it is only flushed periodically.
180 server.tomcat.accesslog.directory=logs # Directory in which log files are created. Can be relative to the tomcat base dir or absolute.
181 server.tomcat.accesslog.enabled=false # Enable access log.
182 server.tomcat.accesslog.pattern=common # Format pattern for access logs.
183 server.tomcat.accesslog.prefix=access_log # Log file name prefix.
184 server.tomcat.accesslog.rename-on-rotate=false # Defer inclusion of the date stamp in the file name until rotate time.
185 server.tomcat.accesslog.request-attributes-enabled=false # Set request attributes for IP address, Hostname, protocol and port used for the request.
186 server.tomcat.accesslog.rotate=true # Enable access log rotation.
187 server.tomcat.accesslog.suffix=.log # Log file name suffix.
188 server.tomcat.additional-tld-skip-patterns= # Comma-separated list of additional patterns that match jars to ignore for TLD scanning.
189 server.tomcat.background-processor-delay=30 # Delay in seconds between the invocation of backgroundProcess methods.
190 server.tomcat.basedir= # Tomcat base directory. If not specified a temporary directory will be used.
191 server.tomcat.internal-proxies=10\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
192 192\\\\.168\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
193 169\\\\.254\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
194 127\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
195 172\\\\.1[6-9]{1}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
196 172\\\\.2[0-9]{1}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}|\\\\
197 172\\\\.3[0-1]{1}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3} # regular expression matching trusted IP addresses.
198 server.tomcat.max-connections= # Maximum number of connections that the server will accept and process at any given time.
199 server.tomcat.max-http-post-size=0 # Maximum size in bytes of the HTTP post content.
200 server.tomcat.max-threads=0 # Maximum amount of worker threads.
201 server.tomcat.min-spare-threads=0 # Minimum amount of worker threads.
202 server.tomcat.port-header=X-Forwarded-Port # Name of the HTTP header used to override the original port value.
203 server.tomcat.protocol-header= # Header that holds the incoming protocol, usually named "X-Forwarded-Proto".
204 server.tomcat.protocol-header-https-value=https # Value of the protocol header that indicates that the incoming request uses SSL.
205 server.tomcat.redirect-context-root= # Whether requests to the context root should be redirected by appending a / to the path.
206 server.tomcat.remote-ip-header= # Name of the http header from which the remote ip is extracted. For instance `X-FORWARDED-FOR`
207 server.tomcat.uri-encoding=UTF-8 # Character encoding to use to decode the URI.
208 server.undertow.accesslog.dir= # Undertow access log directory.
209 server.undertow.accesslog.enabled=false # Enable access log.
210 server.undertow.accesslog.pattern=common # Format pattern for access logs.
211 server.undertow.accesslog.prefix=access_log. # Log file name prefix.
212 server.undertow.accesslog.rotate=true # Enable access log rotation.
213 server.undertow.accesslog.suffix=log # Log file name suffix.
214 server.undertow.buffer-size= # Size of each buffer in bytes.
215 server.undertow.buffers-per-region= # Number of buffer per region.
216 server.undertow.direct-buffers= # Allocate buffers outside the Java heap.
217 server.undertow.io-threads= # Number of I/O threads to create for the worker.
218 server.undertow.max-http-post-size=0 # Maximum size in bytes of the HTTP post content.
219 server.undertow.worker-threads= # Number of worker threads.
220
221 # FREEMARKER (FreeMarkerAutoConfiguration)
222 spring.freemarker.allow-request-override=false # Set whether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name.
223 spring.freemarker.allow-session-override=false # Set whether HttpSession attributes are allowed to override (hide) controller generated model attributes of the same name.
224 spring.freemarker.cache=false # Enable template caching.
225 spring.freemarker.charset=UTF-8 # Template encoding.
226 spring.freemarker.check-template-location=true # Check that the templates location exists.
227 spring.freemarker.content-type=text/html # Content-Type value.
228 spring.freemarker.enabled=true # Enable MVC view resolution for this technology.
229 spring.freemarker.expose-request-attributes=false # Set whether all request attributes should be added to the model prior to merging with the template.
230 spring.freemarker.expose-session-attributes=false # Set whether all HttpSession attributes should be added to the model prior to merging with the template.
231 spring.freemarker.expose-spring-macro-helpers=true # Set whether to expose a RequestContext for use by Spring\'s macro library, under the name "springMacroRequestContext".
232 spring.freemarker.prefer-file-system-access=true # Prefer file system access for template loading. File system access enables hot detection of template changes.
233 spring.freemarker.prefix= # Prefix that gets prepended to view names when building a URL.
234 spring.freemarker.request-context-attribute= # Name of the RequestContext attribute for all views.
235 spring.freemarker.settings.*= # Well-known FreeMarker keys which will be passed to FreeMarker\'s Configuration.
236 spring.freemarker.suffix= # Suffix that gets appended to view names when building a URL.
237 spring.freemarker.template-loader-path=classpath:/templates/ # Comma-separated list of template paths.
238 spring.freemarker.view-names= # White list of view names that can be resolved.
239
240 # GROOVY TEMPLATES (GroovyTemplateAutoConfiguration)
241 spring.groovy.template.allow-request-override=false # Set whether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name.
242 spring.groovy.template.allow-session-override=false # Set whether HttpSession attributes are allowed to override (hide) controller generated model attributes of the same name.
243 spring.groovy.template.cache= # Enable template caching.
244 spring.groovy.template.charset=UTF-8 # Template encoding.
245 spring.groovy.template.check-template-location=true # Check that the templates location exists.
246 spring.groovy.template.configuration.*= # See GroovyMarkupConfigurer
247 spring.groovy.template.content-type=test/html # Content-Type value.
248 spring.groovy.template.enabled=true # Enable MVC view resolution for this technology.
249 spring.groovy.template.expose-request-attributes=false # Set whether all request attributes should be added to the model prior to merging with the template.
250 spring.groovy.template.expose-session-attributes=false # Set whether all HttpSession attributes should be added to the model prior to merging with the template.
251 spring.groovy.template.expose-spring-macro-helpers=true # Set whether to expose a RequestContext for use by Spring\'s macro library, under the name "springMacroRequestContext".
252 spring.groovy.template.prefix= # Prefix that gets prepended to view names when building a URL.
253 spring.groovy.template.request-context-attribute= # Name of the RequestContext attribute for all views.
254 spring.groovy.template.resource-loader-path=classpath:/templates/ # Template path.
255 spring.groovy.template.suffix=.tpl # Suffix that gets appended to view names when building a URL.
256 spring.groovy.template.view-names= # White list of view names that can be resolved.
257
258 # SPRING HATEOAS (HateoasProperties)
259 spring.hateoas.use-hal-as-default-json-media-type=true # Specify if application/hal+json responses should be sent to requests that accept application/json.
260
261 # HTTP message conversion
262 spring.http.converters.preferred-json-mapper=jackson # Preferred JSON mapper to use for HTTP message conversion. Set to "gson" to force the use of Gson when both it and Jackson are on the classpath.
263
264 # HTTP encoding (HttpEncodingProperties)
265 spring.http.encoding.charset=UTF-8 # Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.
266 spring.http.encoding.enabled=true # Enable http encoding support.
267 spring.http.encoding.force= # Force the encoding to the configured charset on HTTP requests and responses.
268 spring.http.encoding.force-request= # Force the encoding to the configured charset on HTTP requests. Defaults to true when "force" has not been specified.
269 spring.http.encoding.force-response= # Force the encoding to the configured charset on HTTP responses.
270 spring.http.encoding.mapping= # Locale to Encoding mapping.
271
272 # MULTIPART (MultipartProperties)
273 spring.http.multipart.enabled=true # Enable support of multi-part uploads.
274 spring.http.multipart.file-size-threshold=0 # Threshold after which files will be written to disk. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.
275 spring.http.multipart.location= # Intermediate location of uploaded files.
276 spring.http.multipart.max-file-size=1MB # Max file size. Values can use the suffixed "MB" or "KB" to indicate a Megabyte or Kilobyte size.
以上是关于了解SpringBoot的主要内容,如果未能解决你的问题,请参考以下文章
SpringBoot中表单提交报错“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“(代码片段
Spring boot:thymeleaf 没有正确渲染片段
11SpringBoot-CRUD-thymeleaf公共页面元素抽取