SpringBoot附录

来源:互联网 发布:星空软件安卓版 编辑:程序博客网 时间:2024/05/01 06:24

附录A. 常见应用属性

http://blog.csdn.net/jsyxcjw/article/details/46764447

你可以在application.properties/application.yml文件内部或通过命令行开关来指定各种属性。本章节提供了一个常见Spring Boot属性的列表及使用这些属性的底层类的引用。

注:属性可以来自classpath下的其他jar文件中,所以你不应该把它当成详尽的列表。定义你自己的属性也是相当合法的。

注:示例文件只是一个指导。不要拷贝/粘贴整个内容到你的应用,而是只提取你需要的属性。

# ===================================================================# COMMON SPRING BOOT PROPERTIES## This sample file is provided as a guideline. Do NOT copy it in its# entirety to your own application.               ^^^# ===================================================================# ----------------------------------------# CORE PROPERTIES# ----------------------------------------# SPRING CONFIG (ConfigFileApplicationListener)spring.config.name= # config file name (default to 'application')spring.config.location= # location of config file# PROFILESspring.profiles.active= # comma list of active profilesspring.profiles.include= # unconditionally activate the specified comma separated profiles# APPLICATION SETTINGS (SpringApplication)spring.main.sources=spring.main.web-environment= # detect by defaultspring.main.show-banner=truespring.main....= # see class for all properties# LOGGINGlogging.path=/var/logslogging.file=myapp.loglogging.config= # location of config file (default classpath:logback.xml for logback)logging.level.*= # levels for loggers, e.g. "logging.level.org.springframework=DEBUG" (TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF)# IDENTITY (ContextIdApplicationContextInitializer)spring.application.name=spring.application.index=# EMBEDDED SERVER CONFIGURATION (ServerProperties)server.port=8080server.address= # bind to a specific NICserver.session-timeout= # session timeout in secondsserver.context-parameters.*= # Servlet context init parameters, e.g. server.context-parameters.a=alphaserver.context-path= # the context path, defaults to '/'server.servlet-path= # the servlet path, defaults to '/'server.ssl.enabled=true # if SSL support is enabledserver.ssl.client-auth= # want or needserver.ssl.key-alias=server.ssl.ciphers= # supported SSL ciphersserver.ssl.key-password=server.ssl.key-store=server.ssl.key-store-password=server.ssl.key-store-provider=server.ssl.key-store-type=server.ssl.protocol=TLSserver.ssl.trust-store=server.ssl.trust-store-password=server.ssl.trust-store-provider=server.ssl.trust-store-type=server.tomcat.access-log-pattern= # log pattern of the access logserver.tomcat.access-log-enabled=false # is access logging enabledserver.tomcat.compression=off # is compression enabled (off, on, or an integer content length limit)server.tomcat.compressable-mime-types=text/html,text/xml,text/plain # comma-separated list of mime types that Tomcat will compressserver.tomcat.internal-proxies=10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|\\        192\\.168\\.\\d{1,3}\\.\\d{1,3}|\\        169\\.254\\.\\d{1,3}\\.\\d{1,3}|\\        127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3} # regular expression matching trusted IP addressesserver.tomcat.protocol-header=x-forwarded-proto # front end proxy forward headerserver.tomcat.port-header= # front end proxy port headerserver.tomcat.remote-ip-header=x-forwarded-forserver.tomcat.basedir=/tmp # base dir (usually not needed, defaults to tmp)server.tomcat.background-processor-delay=30; # in secondsserver.tomcat.max-http-header-size= # maximum size in bytes of the HTTP message headerserver.tomcat.max-threads = 0 # number of threads in protocol handlerserver.tomcat.uri-encoding = UTF-8 # character encoding to use for URL decoding# SPRING MVC (WebMvcProperties)spring.mvc.locale= # set fixed locale, e.g. en_UKspring.mvc.date-format= # set fixed date format, e.g. dd/MM/yyyyspring.mvc.favicon.enabled=truespring.mvc.message-codes-resolver-format= # PREFIX_ERROR_CODE / POSTFIX_ERROR_CODEspring.mvc.ignore-default-model-on-redirect=true # If the the content of the "default" model should be ignored redirectsspring.view.prefix= # MVC view prefixspring.view.suffix= # ... and suffix# SPRING RESOURCES HANDLING (ResourceProperties)spring.resources.cache-period= # cache timeouts in headers sent to browserspring.resources.add-mappings=true # if default mappings should be added# MULTIPART (MultipartProperties)multipart.enabled=truemultipart.file-size-threshold=0 # Threshold after which files will be written to disk.multipart.location= # Intermediate location of uploaded files.multipart.max-file-size=1Mb # Max file size.multipart.max-request-size=10Mb # Max request size.# SPRING HATEOAS (HateoasProperties)spring.hateoas.apply-to-primary-object-mapper=true # if the primary mapper should also be configured# HTTP encoding (HttpEncodingProperties)spring.http.encoding.charset=UTF-8 # the encoding of HTTP requests/responsesspring.http.encoding.enabled=true # enable http encoding supportspring.http.encoding.force=true # force the configured encoding# HTTP message conversionspring.http.converters.preferred-json-mapper= # the 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.# HTTP response compression (GzipFilterProperties)spring.http.gzip.buffer-size= # size of the output buffer in bytesspring.http.gzip.deflate-compression-level= # the level used for deflate compression (0-9)spring.http.gzip.deflate-no-wrap= # noWrap setting for deflate compression (true or false)spring.http.gzip.enabled=true # enable gzip filter supportspring.http.gzip.excluded-agents= # comma-separated list of user agents to exclude from compressionspring.http.gzip.excluded-agent-patterns= # comma-separated list of regular expression patterns to control user agents excluded from compressionspring.http.gzip.excluded-paths= # comma-separated list of paths to exclude from compressionspring.http.gzip.excluded-path-patterns= # comma-separated list of regular expression patterns to control the paths that are excluded from compressionspring.http.gzip.methods= # comma-separated list of HTTP methods for which compression is enabledspring.http.gzip.mime-types= # comma-separated list of MIME types which should be compressedspring.http.gzip.min-gzip-size= # minimum content length required for compression to occurspring.http.gzip.vary= # Vary header to be sent on responses that may be compressed# JACKSON (JacksonProperties)spring.jackson.date-format= # Date format string (e.g. yyyy-MM-dd HH:mm:ss), or a fully-qualified date format class name (e.g. com.fasterxml.jackson.databind.util.ISO8601DateFormat)spring.jackson.property-naming-strategy= # One of the constants on Jackson's PropertyNamingStrategy (e.g. CAMEL_CASE_TO_LOWER_CASE_WITH_UNDERSCORES) or the fully-qualified class name of a PropertyNamingStrategy subclassspring.jackson.deserialization.*= # see Jackson's DeserializationFeaturespring.jackson.generator.*= # see Jackson's JsonGenerator.Featurespring.jackson.mapper.*= # see Jackson's MapperFeaturespring.jackson.parser.*= # see Jackson's JsonParser.Featurespring.jackson.serialization.*= # see Jackson's SerializationFeaturespring.jackson.serialization-inclusion= # Controls the inclusion of properties during serialization (see Jackson's JsonInclude.Include)# THYMELEAF (ThymeleafAutoConfiguration)spring.thymeleaf.check-template-location=truespring.thymeleaf.prefix=classpath:/templates/spring.thymeleaf.excluded-view-names= # comma-separated list of view names that should be excluded from resolutionspring.thymeleaf.view-names= # comma-separated list of view names that can be resolvedspring.thymeleaf.suffix=.htmlspring.thymeleaf.mode=HTML5spring.thymeleaf.encoding=UTF-8spring.thymeleaf.content-type=text/html # ;charset= is addedspring.thymeleaf.cache=true # set to false for hot refresh# FREEMARKER (FreeMarkerAutoConfiguration)spring.freemarker.allow-request-override=falsespring.freemarker.cache=truespring.freemarker.check-template-location=truespring.freemarker.charset=UTF-8spring.freemarker.content-type=text/htmlspring.freemarker.expose-request-attributes=falsespring.freemarker.expose-session-attributes=falsespring.freemarker.expose-spring-macro-helpers=falsespring.freemarker.prefix=spring.freemarker.request-context-attribute=spring.freemarker.settings.*=spring.freemarker.suffix=.ftlspring.freemarker.template-loader-path=classpath:/templates/ # comma-separated listspring.freemarker.view-names= # whitelist of view names that can be resolved# GROOVY TEMPLATES (GroovyTemplateAutoConfiguration)spring.groovy.template.cache=truespring.groovy.template.charset=UTF-8spring.groovy.template.configuration.*= # See Groovy's TemplateConfigurationspring.groovy.template.content-type=text/htmlspring.groovy.template.prefix=classpath:/templates/spring.groovy.template.suffix=.tplspring.groovy.template.view-names= # whitelist of view names that can be resolved# VELOCITY TEMPLATES (VelocityAutoConfiguration)spring.velocity.allow-request-override=falsespring.velocity.cache=truespring.velocity.check-template-location=truespring.velocity.charset=UTF-8spring.velocity.content-type=text/htmlspring.velocity.date-tool-attribute=spring.velocity.expose-request-attributes=falsespring.velocity.expose-session-attributes=falsespring.velocity.expose-spring-macro-helpers=falsespring.velocity.number-tool-attribute=spring.velocity.prefer-file-system-access=true # prefer file system access for template loadingspring.velocity.prefix=spring.velocity.properties.*=spring.velocity.request-context-attribute=spring.velocity.resource-loader-path=classpath:/templates/spring.velocity.suffix=.vmspring.velocity.toolbox-config-location= # velocity Toolbox config location, for example "/WEB-INF/toolbox.xml"spring.velocity.view-names= # whitelist of view names that can be resolved# JERSEY (JerseyProperties)spring.jersey.type=servlet # servlet or filterspring.jersey.init= # init paramsspring.jersey.filter.order=# INTERNATIONALIZATION (MessageSourceAutoConfiguration)spring.messages.basename=messagesspring.messages.cache-seconds=-1spring.messages.encoding=UTF-8# SECURITY (SecurityProperties)security.user.name=user # login usernamesecurity.user.password= # login passwordsecurity.user.role=USER # role assigned to the usersecurity.require-ssl=false # advanced settings ...security.enable-csrf=falsesecurity.basic.enabled=truesecurity.basic.realm=Springsecurity.basic.path= # /**security.basic.authorize-mode= # ROLE, AUTHENTICATED, NONEsecurity.filter-order=0security.headers.xss=falsesecurity.headers.cache=falsesecurity.headers.frame=falsesecurity.headers.content-type=falsesecurity.headers.hsts=all # none / domain / allsecurity.sessions=stateless # always / never / if_required / statelesssecurity.ignored= # Comma-separated list of paths to exclude from the default secured paths# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)spring.datasource.name= # name of the data sourcespring.datasource.initialize=true # populate using data.sqlspring.datasource.schema= # a schema (DDL) script resource referencespring.datasource.data= # a data (DML) script resource referencespring.datasource.sql-script-encoding= # a charset for reading SQL scriptsspring.datasource.platform= # the platform to use in the schema resource (schema-${platform}.sql)spring.datasource.continue-on-error=false # continue even if can't be initializedspring.datasource.separator=; # statement separator in SQL initialization scriptsspring.datasource.driver-class-name= # JDBC Settings...spring.datasource.url=spring.datasource.username=spring.datasource.password=spring.datasource.jndi-name= # For JNDI lookup (class, url, username & password are ignored when set)spring.datasource.max-active=100 # Advanced configuration...spring.datasource.max-idle=8spring.datasource.min-idle=8spring.datasource.initial-size=10spring.datasource.validation-query=spring.datasource.test-on-borrow=falsespring.datasource.test-on-return=falsespring.datasource.test-while-idle=spring.datasource.time-between-eviction-runs-millis=spring.datasource.min-evictable-idle-time-millis=spring.datasource.max-wait=spring.datasource.jmx-enabled=false # Export JMX MBeans (if supported)# DAO (PersistenceExceptionTranslationAutoConfiguration)spring.dao.exceptiontranslation.enabled=true# MONGODB (MongoProperties)spring.data.mongodb.host= # the db hostspring.data.mongodb.port=27017 # the connection port (defaults to 27107)spring.data.mongodb.uri=mongodb://localhost/test # connection URLspring.data.mongodb.database=spring.data.mongodb.authentication-database=spring.data.mongodb.grid-fs-database=spring.data.mongodb.username=spring.data.mongodb.password=spring.data.mongodb.repositories.enabled=true # if spring data repository support is enabled# JPA (JpaBaseConfiguration, HibernateJpaAutoConfiguration)spring.jpa.properties.*= # properties to set on the JPA connectionspring.jpa.open-in-view=truespring.jpa.show-sql=truespring.jpa.database-platform=spring.jpa.database=spring.jpa.generate-ddl=false # ignored by Hibernate, might be useful for other vendorsspring.jpa.hibernate.naming-strategy= # naming classnamespring.jpa.hibernate.ddl-auto= # defaults to create-drop for embedded dbsspring.data.jpa.repositories.enabled=true # if spring data repository support is enabled# JTA (JtaAutoConfiguration)spring.jta.log-dir= # transaction log dirspring.jta.*= # technology specific configuration# ATOMIKOSspring.jta.atomikos.connectionfactory.borrow-connection-timeout=30 # Timeout, in seconds, for borrowing connections from the poolspring.jta.atomikos.connectionfactory.ignore-session-transacted-flag=true # Whether or not to ignore the transacted flag when creating sessionspring.jta.atomikos.connectionfactory.local-transaction-mode=false # Whether or not local transactions are desiredspring.jta.atomikos.connectionfactory.maintenance-interval=60 # The time, in seconds, between runs of the pool's maintenance threadspring.jta.atomikos.connectionfactory.max-idle-time=60 # The time, in seconds, after which connections are cleaned up from the poolspring.jta.atomikos.connectionfactory.max-lifetime=0 # The time, in seconds, that a connection can be pooled for before being destroyed. 0 denotes no limit.spring.jta.atomikos.connectionfactory.max-pool-size=1 # The maximum size of the poolspring.jta.atomikos.connectionfactory.min-pool-size=1 # The minimum size of the poolspring.jta.atomikos.connectionfactory.reap-timeout=0 # The reap timeout, in seconds, for borrowed connections. 0 denotes no limit.spring.jta.atomikos.connectionfactory.unique-resource-name=jmsConnectionFactory # The unique name used to identify the resource during recoveryspring.jta.atomikos.datasource.borrow-connection-timeout=30 # Timeout, in seconds, for borrowing connections from the poolspring.jta.atomikos.datasource.default-isolation-level= # Default isolation level of connections provided by the poolspring.jta.atomikos.datasource.login-timeout= # Timeout, in seconds, for establishing a database connectionspring.jta.atomikos.datasource.maintenance-interval=60 # The time, in seconds, between runs of the pool's maintenance threadspring.jta.atomikos.datasource.max-idle-time=60 # The time, in seconds, after which connections are cleaned up from the poolspring.jta.atomikos.datasource.max-lifetime=0 # The time, in seconds, that a connection can be pooled for before being destroyed. 0 denotes no limit.spring.jta.atomikos.datasource.max-pool-size=1 # The maximum size of the poolspring.jta.atomikos.datasource.min-pool-size=1 # The minimum size of the poolspring.jta.atomikos.datasource.reap-timeout=0 # The reap timeout, in seconds, for borrowed connections. 0 denotes no limit.spring.jta.atomikos.datasource.test-query= # SQL query or statement used to validate a connection before returning itspring.jta.atomikos.datasource.unique-resource-name=dataSource # The unique name used to identify the resource during recovery# BITRONIXspring.jta.bitronix.connectionfactory.acquire-increment=1 # Number of connections to create when growing the poolspring.jta.bitronix.connectionfactory.acquisition-interval=1 # Time, in seconds, to wait before trying to acquire a connection again after an invalid connection was acquiredspring.jta.bitronix.connectionfactory.acquisition-timeout=30 # Timeout, in seconds, for acquiring connections from the poolspring.jta.bitronix.connectionfactory.allow-local-transactions=true # Whether or not the transaction manager should allow mixing XA and non-XA transactionsspring.jta.bitronix.connectionfactory.apply-transaction-timeout=false # Whether or not the transaction timeout should be set on the XAResource when it is enlistedspring.jta.bitronix.connectionfactory.automatic-enlisting-enabled=true # Whether or not resources should be enlisted and delisted automaticallyspring.jta.bitronix.connectionfactory.cache-producers-consumers=true # Whether or not produces and consumers should be cachedspring.jta.bitronix.connectionfactory.defer-connection-release=true # Whether or not the provider can run many transactions on the same connection and supports transaction interleavingspring.jta.bitronix.connectionfactory.ignore-recovery-failures=false # Whether or not recovery failures should be ignoredspring.jta.bitronix.connectionfactory.max-idle-time=60 # The time, in seconds, after which connections are cleaned up from the poolspring.jta.bitronix.connectionfactory.max-pool-size=10 # The maximum size of the pool. 0 denotes no limitspring.jta.bitronix.connectionfactory.min-pool-size=0 # The minimum size of the poolspring.jta.bitronix.connectionfactory.password= # The password to use to connect to the JMS providerspring.jta.bitronix.connectionfactory.share-transaction-connections=false #  Whether or not connections in the ACCESSIBLE state can be shared within the context of a transactionspring.jta.bitronix.connectionfactory.test-connections=true # Whether or not connections should be tested when acquired from the poolspring.jta.bitronix.connectionfactory.two-pc-ordering-position=1 # The postion that this resource should take during two-phase commit (always first is Integer.MIN_VALUE, always last is Integer.MAX_VALUE)spring.jta.bitronix.connectionfactory.unique-name=jmsConnectionFactory # The unique name used to identify the resource during recoveryspring.jta.bitronix.connectionfactory.use-tm-join=true Whether or not TMJOIN should be used when starting XAResourcesspring.jta.bitronix.connectionfactory.user= # The user to use to connect to the JMS providerspring.jta.bitronix.datasource.acquire-increment=1 # Number of connections to create when growing the poolspring.jta.bitronix.datasource.acquisition-interval=1 # Time, in seconds, to wait before trying to acquire a connection again after an invalid connection was acquiredspring.jta.bitronix.datasource.acquisition-timeout=30 # Timeout, in seconds, for acquiring connections from the poolspring.jta.bitronix.datasource.allow-local-transactions=true # Whether or not the transaction manager should allow mixing XA and non-XA transactionsspring.jta.bitronix.datasource.apply-transaction-timeout=false # Whether or not the transaction timeout should be set on the XAResource when it is enlistedspring.jta.bitronix.datasource.automatic-enlisting-enabled=true # Whether or not resources should be enlisted and delisted automaticallyspring.jta.bitronix.datasource.cursor-holdability= # The default cursor holdability for connectionsspring.jta.bitronix.datasource.defer-connection-release=true # Whether or not the database can run many transactions on the same connection and supports transaction interleavingspring.jta.bitronix.datasource.enable-jdbc4-connection-test # Whether or not Connection.isValid() is called when acquiring a connection from the poolspring.jta.bitronix.datasource.ignore-recovery-failures=false # Whether or not recovery failures should be ignoredspring.jta.bitronix.datasource.isolation-level= # The default isolation level for connectionsspring.jta.bitronix.datasource.local-auto-commit # The default auto-commit mode for local transactionsspring.jta.bitronix.datasource.login-timeout= # Timeout, in seconds, for establishing a database connectionspring.jta.bitronix.datasource.max-idle-time=60 # The time, in seconds, after which connections are cleaned up from the poolspring.jta.bitronix.datasource.max-pool-size=10 # The maximum size of the pool. 0 denotes no limitspring.jta.bitronix.datasource.min-pool-size=0 # The minimum size of the poolspring.jta.bitronix.datasource.prepared-statement-cache-size=0 # The target size of the prepared statement cache. 0 disables the cachespring.jta.bitronix.datasource.share-transaction-connections=false #  Whether or not connections in the ACCESSIBLE state can be shared within the context of a transactionspring.jta.bitronix.datasource.test-query # SQL query or statement used to validate a connection before returning itspring.jta.bitronix.datasource.two-pc-ordering-position=1 # The position that this resource should take during two-phase commit (always first is Integer.MIN_VALUE, always last is Integer.MAX_VALUE)spring.jta.bitronix.datasource.unique-name=dataSource # The unique name used to identify the resource during recoveryspring.jta.bitronix.datasource.use-tm-join=true Whether or not TMJOIN should be used when starting XAResources# SOLR (SolrProperties)spring.data.solr.host=http://127.0.0.1:8983/solrspring.data.solr.zk-host=spring.data.solr.repositories.enabled=true # if spring data repository support is enabled# ELASTICSEARCH (ElasticsearchProperties)spring.data.elasticsearch.cluster-name= # The cluster name (defaults to elasticsearch)spring.data.elasticsearch.cluster-nodes= # The address(es) of the server node (comma-separated; if not specified starts a client node)spring.data.elasticsearch.properties.*= # Additional properties used to configure the clientspring.data.elasticsearch.repositories.enabled=true # if spring data repository support is enabled# DATA REST (RepositoryRestConfiguration)spring.data.rest.base-uri= # base URI against which the exporter should calculate its links# FLYWAY (FlywayProperties)flyway.*= # Any public property available on the auto-configured `Flyway` objectflyway.check-location=false # check that migration scripts location existsflyway.locations=classpath:db/migration # locations of migrations scriptsflyway.schemas= # schemas to updateflyway.init-version= 1 # version to start migrationflyway.init-sqls= # SQL statements to execute to initialize a connection immediately after obtaining itflyway.sql-migration-prefix=Vflyway.sql-migration-suffix=.sqlflyway.enabled=trueflyway.url= # JDBC url if you want Flyway to create its own DataSourceflyway.user= # JDBC username if you want Flyway to create its own DataSourceflyway.password= # JDBC password if you want Flyway to create its own DataSource# LIQUIBASE (LiquibaseProperties)liquibase.change-log=classpath:/db/changelog/db.changelog-master.yamlliquibase.check-change-log-location=true # check the change log location existsliquibase.contexts= # runtime contexts to useliquibase.default-schema= # default database schema to useliquibase.drop-first=falseliquibase.enabled=trueliquibase.url= # specific JDBC url (if not set the default datasource is used)liquibase.user= # user name for liquibase.urlliquibase.password= # password for liquibase.url# JMXspring.jmx.enabled=true # Expose MBeans from Spring# RABBIT (RabbitProperties)spring.rabbitmq.host= # connection hostspring.rabbitmq.port= # connection portspring.rabbitmq.addresses= # connection addresses (e.g. myhost:9999,otherhost:1111)spring.rabbitmq.username= # login userspring.rabbitmq.password= # login passwordspring.rabbitmq.virtual-host=spring.rabbitmq.dynamic=# REDIS (RedisProperties)spring.redis.database= # database namespring.redis.host=localhost # server hostspring.redis.password= # server passwordspring.redis.port=6379 # connection portspring.redis.pool.max-idle=8 # pool settings ...spring.redis.pool.min-idle=0spring.redis.pool.max-active=8spring.redis.pool.max-wait=-1spring.redis.sentinel.master= # name of Redis serverspring.redis.sentinel.nodes= # comma-separated list of host:port pairs# ACTIVEMQ (ActiveMQProperties)spring.activemq.broker-url=tcp://localhost:61616 # connection URLspring.activemq.user=spring.activemq.password=spring.activemq.in-memory=true # broker kind to create if no broker-url is specifiedspring.activemq.pooled=false# HornetQ (HornetQProperties)spring.hornetq.mode= # connection mode (native, embedded)spring.hornetq.host=localhost # hornetQ host (native mode)spring.hornetq.port=5445 # hornetQ port (native mode)spring.hornetq.embedded.enabled=true # if the embedded server is enabled (needs hornetq-jms-server.jar)spring.hornetq.embedded.server-id= # auto-generated id of the embedded server (integer)spring.hornetq.embedded.persistent=false # message persistencespring.hornetq.embedded.data-directory= # location of data content (when persistence is enabled)spring.hornetq.embedded.queues= # comma-separated queues to create on startupspring.hornetq.embedded.topics= # comma-separated topics to create on startupspring.hornetq.embedded.cluster-password= # customer password (randomly generated by default)# JMS (JmsProperties)spring.jms.jndi-name= # JNDI location of a JMS ConnectionFactoryspring.jms.pub-sub-domain= # false for queue (default), true for topic# Email (MailProperties)spring.mail.host=smtp.acme.org # mail server hostspring.mail.port= # mail server portspring.mail.username=spring.mail.password=spring.mail.default-encoding=UTF-8 # encoding to use for MimeMessagesspring.mail.properties.*= # properties to set on the JavaMail session# SPRING BATCH (BatchDatabaseInitializer)spring.batch.job.names=job1,job2spring.batch.job.enabled=truespring.batch.initializer.enabled=truespring.batch.schema= # batch schema to load# SPRING CACHE (CacheProperties)spring.cache.type= # generic, ehcache, hazelcast, jcache, redis, guava, simple, nonespring.cache.config= #spring.cache.cache-names= # cache names to create on startupspring.cache.jcache.provider= # fully qualified name of the CachingProvider implementation to usespring.cache.guava.spec= # guava specs# AOPspring.aop.auto=spring.aop.proxy-target-class=# FILE ENCODING (FileEncodingApplicationListener)spring.mandatory-file-encoding= # Expected character encoding the application must use# SPRING SOCIAL (SocialWebAutoConfiguration)spring.social.auto-connection-views=true # Set to true for default connection views or false if you provide your own# SPRING SOCIAL FACEBOOK (FacebookAutoConfiguration)spring.social.facebook.app-id= # your application's Facebook App IDspring.social.facebook.app-secret= # your application's Facebook App Secret# SPRING SOCIAL LINKEDIN (LinkedInAutoConfiguration)spring.social.linkedin.app-id= # your application's LinkedIn App IDspring.social.linkedin.app-secret= # your application's LinkedIn App Secret# SPRING SOCIAL TWITTER (TwitterAutoConfiguration)spring.social.twitter.app-id= # your application's Twitter App IDspring.social.twitter.app-secret= # your application's Twitter App Secret# SPRING MOBILE SITE PREFERENCE (SitePreferenceAutoConfiguration)spring.mobile.sitepreference.enabled=true # enabled by default# SPRING MOBILE DEVICE VIEWS (DeviceDelegatingViewResolverAutoConfiguration)spring.mobile.devicedelegatingviewresolver.enabled=true # disabled by defaultspring.mobile.devicedelegatingviewresolver.normal-prefix=spring.mobile.devicedelegatingviewresolver.normal-suffix=spring.mobile.devicedelegatingviewresolver.mobile-prefix=mobile/spring.mobile.devicedelegatingviewresolver.mobile-suffix=spring.mobile.devicedelegatingviewresolver.tablet-prefix=tablet/spring.mobile.devicedelegatingviewresolver.tablet-suffix=# ----------------------------------------# ACTUATOR PROPERTIES# ----------------------------------------# MANAGEMENT HTTP SERVER (ManagementServerProperties)management.port= # defaults to 'server.port'management.address= # bind to a specific NICmanagement.context-path= # default to '/'management.add-application-context-header= # default to truemanagement.security.enabled=true # enable securitymanagement.security.role=ADMIN # role required to access the management endpointmanagement.security.sessions=stateless # session creating policy to use (always, never, if_required, stateless)# PID FILE (ApplicationPidFileWriter)spring.pidfile= # Location of the PID file to write# ENDPOINTS (AbstractEndpoint subclasses)endpoints.autoconfig.id=autoconfigendpoints.autoconfig.sensitive=trueendpoints.autoconfig.enabled=trueendpoints.beans.id=beansendpoints.beans.sensitive=trueendpoints.beans.enabled=trueendpoints.configprops.id=configpropsendpoints.configprops.sensitive=trueendpoints.configprops.enabled=trueendpoints.configprops.keys-to-sanitize=password,secret,key # suffix or regexendpoints.dump.id=dumpendpoints.dump.sensitive=trueendpoints.dump.enabled=trueendpoints.env.id=envendpoints.env.sensitive=trueendpoints.env.enabled=trueendpoints.env.keys-to-sanitize=password,secret,key # suffix or regexendpoints.health.id=healthendpoints.health.sensitive=trueendpoints.health.enabled=trueendpoints.health.mapping.*= # mapping of health statuses to HttpStatus codesendpoints.health.time-to-live=1000endpoints.info.id=infoendpoints.info.sensitive=falseendpoints.info.enabled=trueendpoints.mappings.enabled=trueendpoints.mappings.id=mappingsendpoints.mappings.sensitive=trueendpoints.metrics.id=metricsendpoints.metrics.sensitive=trueendpoints.metrics.enabled=trueendpoints.shutdown.id=shutdownendpoints.shutdown.sensitive=trueendpoints.shutdown.enabled=falseendpoints.trace.id=traceendpoints.trace.sensitive=trueendpoints.trace.enabled=true# HEALTH INDICATORS (previously health.*)management.health.db.enabled=truemanagement.health.elasticsearch.enabled=truemanagement.health.elasticsearch.response-timeout=100 # the time, in milliseconds, to wait for a response from the clustermanagement.health.diskspace.enabled=truemanagement.health.diskspace.path=.management.health.diskspace.threshold=10485760management.health.mongo.enabled=truemanagement.health.rabbit.enabled=truemanagement.health.redis.enabled=truemanagement.health.solr.enabled=truemanagement.health.status.order=DOWN, OUT_OF_SERVICE, UNKNOWN, UP# MVC ONLY ENDPOINTSendpoints.jolokia.path=jolokiaendpoints.jolokia.sensitive=trueendpoints.jolokia.enabled=true # when using Jolokia# JMX ENDPOINT (EndpointMBeanExportProperties)endpoints.jmx.enabled=trueendpoints.jmx.domain= # the JMX domain, defaults to 'org.springboot'endpoints.jmx.unique-names=falseendpoints.jmx.static-names=# JOLOKIA (JolokiaProperties)jolokia.config.*= # See Jolokia manual# REMOTE SHELLshell.auth=simple # jaas, key, simple, springshell.command-refresh-interval=-1shell.command-path-patterns= # classpath*:/commands/**, classpath*:/crash/commands/**shell.config-path-patterns= # classpath*:/crash/*shell.disabled-commands=jpa*,jdbc*,jndi* # comma-separated list of commands to disableshell.disabled-plugins=false # don't expose pluginsshell.ssh.enabled= # ssh settings ...shell.ssh.key-path=shell.ssh.port=shell.telnet.enabled= # telnet settings ...shell.telnet.port=shell.auth.jaas.domain= # authentication settings ...shell.auth.key.path=shell.auth.simple.user.name=shell.auth.simple.user.password=shell.auth.spring.roles=# SENDGRID (SendGridAutoConfiguration)spring.sendgrid.username= # SendGrid account usernamespring.sendgrid.password= # SendGrid account passwordspring.sendgrid.proxy.host= # SendGrid proxy hostspring.sendgrid.proxy.port= # SendGrid proxy port# GIT INFOspring.git.properties= # resource ref to generated git info properties file

附录B. 配置元数据

Spring Boot jars包含元数据文件,它们提供了所有支持的配置属性详情。这些文件设计用于让IDE开发者能够为使用application.properties或application.yml文件的用户提供上下文帮助及代码完成功能。

主要的元数据文件是在编译器通过处理所有被@ConfigurationProperties注解的节点来自动生成的。

附录B.1. 元数据格式

配置元数据位于jars文件中的META-INF/spring-configuration-metadata.json,它们使用一个具有"groups"或"properties"分类节点的简单JSON格式:

{"groups": [    {        "name": "server",        "type": "org.springframework.boot.autoconfigure.web.ServerProperties",        "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"    }    ...],"properties": [    {        "name": "server.port",        "type": "java.lang.Integer",        "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"    },    {        "name": "server.servlet-path",        "type": "java.lang.String",        "sourceType": "org.springframework.boot.autoconfigure.web.ServerProperties"        "defaultValue": "/"    }    ...]}

每个"property"是一个配置节点,用户可以使用特定的值指定它。例如,server.port和server.servlet-path可能在application.properties中如以下定义:

server.port=9090server.servlet-path=/home

"groups"是高级别的节点,它们本身不指定一个值,但为properties提供一个有上下文关联的分组。例如,server.port和server.servlet-path属性是server组的一部分。

注:不需要每个"property"都有一个"group",一些属性可以以自己的形式存在。

附录B.1.1. Group属性

groups数组包含的JSON对象可以由以下属性组成:

名称      类型      目的name    String  group的全名,该属性是强制性的type    String  group数据类型的类名。例如,如果group是基于一个被@ConfigurationProperties注解的类,该属性将包含该类的全限定名。如果基于一个@Bean方法,它将是该方法的返回类型。如果该类型未知,则该属性将被忽略description String  一个简短的group描述,用于展示给用户。如果没有可用描述,该属性将被忽略。推荐使用一个简短的段落描述,第一行提供一个简洁的总结,最后一行以句号结尾sourceType  String  贡献该组的来源类名。例如,如果组基于一个被@ConfigurationProperties注解的@Bean方法,该属性将包含@Configuration类的全限定名,该类包含此方法。如果来源类型未知,则该属性将被忽略sourceMethod    String  贡献该组的方法的全名(包含括号及参数类型)。例如,被@ConfigurationProperties注解的@Bean方法名。如果源方法未知,该属性将被忽略

附录B.1.2. Property属性

properties数组中包含的JSON对象可由以下属性构成:

名   称       类   型       目   的name    String  property的全名,格式为小写虚线分割的形式(比如server.servlet-path)。该属性是强制性的type    String  property数据类型的类名。例如java.lang.String。该属性可以用来指导用户他们可以输入值的类型。为了保持一致,原生类型使用它们的包装类代替,比如boolean变成了java.lang.Boolean。注意,这个类可能是个从一个字符串转换而来的复杂类型。如果类型未知则该属性会被忽略description String  一个简短的组的描述,用于展示给用户。如果没有描述可用则该属性会被忽略。推荐使用一个简短的段落描述,开头提供一个简洁的总结,最后一行以句号结束sourceType  String  贡献property的来源类名。例如,如果property来自一个被@ConfigurationProperties注解的类,该属性将包括该类的全限定名。如果来源类型未知则该属性会被忽略defaultValue    Object  当property没有定义时使用的默认值。如果property类型是个数组则该属性也可以是个数组。如果默认值未知则该属性会被忽略deprecated  boolean 指定该property是否过期。如果该字段没有过期或该信息未知则该属性会被忽略

附录B.1.3. 可重复的元数据节点

在同一个元数据文件中出现多次相同名称的"property"和"group"对象是可以接受的。例如,Spring Boot将spring.datasource属性绑定到Hikari,Tomcat和DBCP类,并且每个都潜在的提供了重复的属性名。这些元数据的消费者需要确保他们支持这样的场景。

附录B.2. 使用注解处理器产生自己的元数据

通过使用spring-boot-configuration-processor jar, 你可以从被@ConfigurationProperties注解的节点轻松的产生自己的配置元数据文件。该jar包含一个在你的项目编译时会被调用的Java注解处理器。想要使用该处理器,你只需简单添加spring-boot-configuration-processor依赖,例如使用Maven你需要添加:

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-configuration-processor</artifactId>    <optional>true</optional></dependency>

使用Gradle时,你可以使用propdeps-plugin并指定:

dependencies {        optional "org.springframework.boot:spring-boot-configuration-processor"    }    compileJava.dependsOn(processResources)}

注:你需要将compileJava.dependsOn(processResources)添加到构建中,以确保资源在代码编译之前处理。如果没有该指令,任何additional-spring-configuration-metadata.json文件都不会被处理。

该处理器会处理被@ConfigurationProperties注解的类和方法,description属性用于产生配置类字段值的Javadoc说明。

注:你应该使用简单的文本来设置@ConfigurationProperties字段的Javadoc,因为在没有被添加到JSON之前它们是不被处理的。

属性是通过判断是否存在标准的getters和setters来发现的,对于集合类型有特殊处理(即使只出现一个getter)。该注解处理器也支持使用lombok的@Data, @Getter和@Setter注解。

附录 B.2.1. 内嵌属性

该注解处理器自动将内部类当做内嵌属性处理。例如,下面的类:

@ConfigurationProperties(prefix="server")public class ServerProperties {    private String name;    private Host host;    // ... getter and setters    private static class Host {        private String ip;        private int port;        // ... getter and setters    }}

附录C. 自动配置类

这里有一个Spring Boot提供的所有自动配置类的文档链接和源码列表。也要记着看一下你的应用都开启了哪些自动配置(使用--debug或-Debug启动应用,或在一个Actuator应用中使用autoconfig端点)。

附录D. 可执行jar格式

spring-boot-loader模块允许Spring Boot对可执行jar和war文件的支持。如果你正在使用Maven或Gradle插件,可执行jar会被自动产生,通常你不需要了解它是如何工作的。

如果你需要从一个不同的构建系统创建可执行jars,或你只是对底层技术好奇,本章节将提供一些背景资料。

附录D.1. 内嵌JARs

Java没有提供任何标准的方式来加载内嵌的jar文件(也就是jar文件自身包含到一个jar中)。如果你正分发一个在不解压缩的情况下可以从命令行运行的自包含应用,那这将是个问题。

为了解决这个问题,很多开发者使用"影子" jars。一个影子jar只是简单的将所有jars的类打包进一个单独的"超级jar"。使用影子jars的问题是它很难分辨在你的应用中实际可以使用的库。在多个jars中存在相同的文件名(内容不同)也是一个问题。Spring Boot另劈稀径,让你能够直接嵌套jars。

附录D.1.1 可执行jar文件结构

Spring Boot Loader兼容的jar文件应该遵循以下结构:

example.jar | +-META-INF |  +-MANIFEST.MF +-org |  +-springframework |     +-boot |        +-loader |           +-<spring boot loader classes> +-com |  +-mycompany |     + project |        +-YouClasses.class +-lib    +-dependency1.jar    +-dependency2.jar

依赖需要放到内部的lib目录下。

附录D.1.2. 可执行war文件结构

Spring Boot Loader兼容的war文件应该遵循以下结构:

example.jar | +-META-INF |  +-MANIFEST.MF +-org |  +-springframework |     +-boot |        +-loader |           +-<spring boot loader classes> +-WEB-INF    +-classes    |  +-com    |     +-mycompany    |        +-project    |           +-YouClasses.class    +-lib    |  +-dependency1.jar    |  +-dependency2.jar    +-lib-provided       +-servlet-api.jar       +-dependency3.jar

依赖需要放到内嵌的WEB-INF/lib目录下。任何运行时需要但部署到普通web容器不需要的依赖应该放到WEB-INF/lib-provided目录下。

附录D.2. Spring Boot的"JarFile"类

Spring Boot用于支持加载内嵌jars的核心类是org.springframework.boot.loader.jar.JarFile。它允许你从一个标准的jar文件或内嵌的子jar数据中加载jar内容。当首次加载的时候,每个JarEntry的位置被映射到一个偏移于外部jar的物理文件:

myapp.jar+---------+---------------------+|         | /lib/mylib.jar      || A.class |+---------+---------+||         || B.class | B.class |||         |+---------+---------+|+---------+---------------------+^          ^          ^0063       3452       3980

上面的示例展示了如何在myapp.jar的0063处找到A.class。来自于内嵌jar的B.class实际可以在myapp.jar的3452处找到,B.class可以在3980处找到(图有问题?)。

有了这些信息,我们就可以通过简单的寻找外部jar的合适部分来加载指定的内嵌实体。我们不需要解压存档,也不需要将所有实体读取到内存中。

附录D.2.1 对标准Java "JarFile"的兼容性

Spring Boot Loader努力保持对已有代码和库的兼容。org.springframework.boot.loader.jar.JarFile继承自java.util.jar.JarFile,可以作为降级替换。

附录D.3. 启动可执行jars

org.springframework.boot.loader.Launcher类是个特殊的启动类,用于一个可执行jars的主要入口。它实际上就是你jar文件的Main-Class,并用来设置一个合适的URLClassLoader,最后调用你的main()方法。

这里有3个启动器子类,JarLauncher,WarLauncher和PropertiesLauncher。它们的作用是从嵌套的jar或war文件目录中(相对于显示的从classpath)加载资源(.class文件等)。在[Jar|War]Launcher情况下,嵌套路径是固定的(lib/.jar和war的lib-provided/.jar),所以如果你需要很多其他jars只需添加到那些位置即可。PropertiesLauncher默认查找你应用存档的lib/目录,但你可以通过设置环境变量LOADER_PATH或application.properties中的loader.path来添加其他的位置(逗号分割的目录或存档列表)。

附录D.3.1 Launcher manifest

你需要指定一个合适的Launcher作为META-INF/MANIFEST.MF的Main-Class属性。你实际想要启动的类(也就是你编写的包含main方法的类)需要在Start-Class属性中定义。

例如,这里有个典型的可执行jar文件的MANIFEST.MF:

Main-Class: org.springframework.boot.loader.JarLauncherStart-Class: com.mycompany.project.MyApplication

对于一个war文件,它可能是这样的:

Main-Class: org.springframework.boot.loader.WarLauncherStart-Class: com.mycompany.project.MyApplication

注:你不需要在manifest文件中指定Class-Path实体,classpath会从嵌套的jars中被推导出来。

附录D.3.2. 暴露的存档

一些PaaS实现可能选择在运行前先解压存档。例如,Cloud Foundry就是这样操作的。你可以运行一个解压的存档,只需简单的启动合适的启动器:

$ unzip -q myapp.jar$ java org.springframework.boot.loader.JarLaunche

附录D.4. PropertiesLauncher特性

PropertiesLauncher有一些特殊的性质,它们可以通过外部属性来启用(系统属性,环境变量,manifest实体或application.properties)。

Key         作用loader.path 逗号分割的classpath,比如lib:${HOME}/app/libloader.home 其他属性文件的位置,比如/opt/app(默认为${user.dir})loader.args main方法的默认参数(以空格分割)loader.main 要启动的main类名称,比如com.app.Applicationloader.config.name  属性文件名,比如loader(默认为application)loader.config.location  属性文件路径,比如classpath:loader.properties(默认为application.properties)loader.system   布尔标识,表明所有的属性都应该添加到系统属性中(默认为false)

Manifest实体keys通过大写单词首字母及将分隔符从"."改为"-"(比如Loader-Path)来进行格式化。loader.main是个特例,它是通过查找manifest的Start-Class,这样也兼容JarLauncher。

环境变量可以大写字母并且用下划线代替句号。

loader.home是其他属性文件(覆盖默认)的目录位置,只要没有指定loader.config.location。loader.path可以包含目录(递归地扫描jar和zip文件),存档路径或通配符模式(针对默认的JVM行为)。

占位符在使用前会被系统和环境变量加上属性文件本身的值替换掉。

附录D.5. 可执行jar的限制

当使用Spring Boot Loader打包的应用时有一些你需要考虑的限制。

附录D.5.1 Zip实体压缩

对于一个嵌套jar的ZipEntry必须使用ZipEntry.STORED方法保存。这是需要的,这样我们可以直接查找嵌套jar中的个别内容。嵌套jar的内容本身可以仍旧被压缩,正如外部jar的其他任何实体。

附录D.5.2. 系统ClassLoader

启动的应用在加载类时应该使用Thread.getContextClassLoader()(多数库和框架都默认这样做)。尝试通过ClassLoader.getSystemClassLoader()加载嵌套的类将失败。请注意java.util.Logging总是使用系统类加载器,由于这个原因你需要考虑一个不同的日志实现。

附录D.6. 可替代的单一jar解决方案

如果以上限制造成你不能使用Spring Boot Loader,那可以考虑以下的替代方案:

Maven Shade Plugin JarClassLoader OneJar

0 0