Update reference documentation for Spring Boot 1.2
Various updates and polish to prepare the reference documentation for Spring Boot 1.2. Fixes gh-1903
This commit is contained in:
parent
a0ce04ac4b
commit
e772174019
|
@ -17,7 +17,7 @@ unsupported build system. If you are just getting started, you might want to rea
|
|||
== Spring Boot Maven plugin
|
||||
The {spring-boot-maven-plugin-site}/[Spring Boot Maven Plugin] provides Spring Boot
|
||||
support in Maven, allowing you to package executable jar or war archives and run an
|
||||
application "`in-place`". To use it you must be using Maven 3 (or better).
|
||||
application "`in-place`". To use it you must be using Maven 3.2 (or better).
|
||||
|
||||
NOTE: Refer to the {spring-boot-maven-plugin-site}/[Spring Boot Maven Plugin Site]
|
||||
for complete plugin documentation.
|
||||
|
|
|
@ -135,9 +135,9 @@ access application information (such as the public URL of the application) and s
|
|||
information (such as database credentials). See `VcapApplicationListener` Javdoc for
|
||||
complete details.
|
||||
|
||||
TIP: The https://github.com/spring-projects/spring-cloud[Spring Cloud] project is a better
|
||||
fit for tasks such as configuring a DataSource; it also lets you use Spring Cloud with
|
||||
Heroku.
|
||||
TIP: The http://cloud.spring.io/spring-cloud-connectors/[Spring Cloud Connectors] project
|
||||
is a better fit for tasks such as configuring a DataSource. Spring Boot includes
|
||||
auto-configuration support and a `spring-boot-starter-cloud-connectors` starter POM.
|
||||
|
||||
|
||||
|
||||
|
@ -187,7 +187,7 @@ This should be everything you need. The most common workflow for Heroku deployme
|
|||
|
||||
-----> Java app detected
|
||||
-----> Installing OpenJDK 1.7... *done*
|
||||
-----> Installing Maven 3.0.3... *done*
|
||||
-----> Installing Maven 3.2.3... *done*
|
||||
-----> Installing settings.xml... *done*
|
||||
-----> executing /app/tmp/cache/.maven/bin/mvn -B
|
||||
-Duser.home=/tmp/build_0c35a5d2-a067-4abc-a232-14b1fb7a8229
|
||||
|
|
|
@ -109,7 +109,7 @@ build tool that supports dependency management (such as Maven or Gradle).
|
|||
|
||||
[[getting-started-maven-installation]]
|
||||
==== Maven installation
|
||||
Spring Boot is compatible with Apache Maven 3.0 or above. If you don't already have Maven
|
||||
Spring Boot is compatible with Apache Maven 3.2 or above. If you don't already have Maven
|
||||
installed you can follow the instructions at http://maven.apache.org.
|
||||
|
||||
TIP: On many operating systems Maven can be installed via a package manager. If you're an
|
||||
|
@ -199,7 +199,7 @@ scope.
|
|||
|
||||
[[getting-started-gradle-installation]]
|
||||
==== Gradle installation
|
||||
Spring Boot is compatible with Gradle 1.6 or above. If you don't already have Gradle
|
||||
Spring Boot is compatible with Gradle 1.12 or above. If you don't already have Gradle
|
||||
installed you can follow the instructions at http://www.gradle.org/.
|
||||
|
||||
Spring Boot dependencies can be declared using the `org.springframework.boot` `group`.
|
||||
|
@ -449,7 +449,7 @@ installed.
|
|||
[indent=0]
|
||||
----
|
||||
$ mvn -v
|
||||
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
|
||||
Apache Maven 3.2.3 (33f8c3e1027c3ddde99d3cdebad2656a31e8fdf4; 2014-08-11T13:58:10-07:00)
|
||||
Maven home: /Users/user/tools/apache-maven-3.1.1
|
||||
Java version: 1.7.0_51, vendor: Oracle Corporation
|
||||
----
|
||||
|
@ -511,7 +511,7 @@ endif::[]
|
|||
----
|
||||
|
||||
This should give you a working build, you can test it out by running `mvn package` (you
|
||||
can ignore the '"`jar will be empty - no content was marked for inclusion!'`"' warning for
|
||||
can ignore the "`jar will be empty - no content was marked for inclusion!'`" warning for
|
||||
now).
|
||||
|
||||
NOTE: At this point you could import the project into an IDE (most modern Java IDE's
|
||||
|
@ -768,7 +768,7 @@ To run that application, use the `java -jar` command:
|
|||
....... . . .
|
||||
....... . . . (log output here)
|
||||
....... . . .
|
||||
........ Started Example in 3.236 seconds (JVM running for 3.764)
|
||||
........ Started Example in 2.536 seconds (JVM running for 2.864)
|
||||
----
|
||||
|
||||
As before, to gracefully exit the application hit `ctrl-c`.
|
||||
|
|
|
@ -2135,7 +2135,7 @@ Once the war is working we make it executable by adding a `main` method to our
|
|||
|
||||
Applications can fall into more than one category:
|
||||
|
||||
* Servlet 3.0 applications with no `web.xml`.
|
||||
* Servlet 3.0+ applications with no `web.xml`.
|
||||
* Applications with a `web.xml`.
|
||||
* Applications with a context hierarchy.
|
||||
* Applications without a context hierarchy.
|
||||
|
@ -2143,8 +2143,8 @@ Applications can fall into more than one category:
|
|||
All of these should be amenable to translation, but each might require slightly different
|
||||
tricks.
|
||||
|
||||
Servlet 3.0 applications might translate pretty easily if they already use the Spring
|
||||
Servlet 3.0 initializer support classes. Normally all the code from an existing
|
||||
Servlet 3.0+ applications might translate pretty easily if they already use the Spring
|
||||
Servlet 3.0+ initializer support classes. Normally all the code from an existing
|
||||
`WebApplicationInitializer` can be moved into a `SpringBootServletInitializer`. If your
|
||||
existing application has more than one `ApplicationContext` (e.g. if it uses
|
||||
`AbstractDispatcherServletInitializer`) then you might be able to squash all your context
|
||||
|
|
|
@ -155,10 +155,10 @@ in your `ApplicationContext`. Spring Boot includes a number of auto-configured
|
|||
|
||||
=== Security with HealthIndicators
|
||||
Information returned by `HealthIndicators` is often somewhat sensitive in nature. For
|
||||
example and you probably don't want to publish details of your database server to the
|
||||
world. For this reason, by default, only the health status is exposed on an insecure HTTP
|
||||
connection. If you are happy for complete heath information to always be exposed you can
|
||||
set `endpoints.health.sensitive` to `false`.
|
||||
example, you probably don't want to publish details of your database server to the
|
||||
world. For this reason, by default, only the health status is exposed over an
|
||||
unauthenticated HTTP connection. If you are happy for complete heath information to always
|
||||
be exposed you can set `endpoints.health.sensitive` to `false`.
|
||||
|
||||
Heath responses are also cached to prevent "`denial of service`" attacks. Use the
|
||||
`endpoints.health.time-to-live` property if you want to change the default cache period
|
||||
|
@ -169,6 +169,7 @@ of 1000 milliseconds.
|
|||
==== Auto-configured HealthIndicators
|
||||
The following `HealthIndicators` are auto-configured by Spring Boot when appropriate:
|
||||
|
||||
[cols="1,4"]
|
||||
|===
|
||||
|Name |Description
|
||||
|
||||
|
@ -220,9 +221,9 @@ additional details to be displayed.
|
|||
}
|
||||
----
|
||||
|
||||
In addition to Spring Boot's default {sc-spring-boot-actuator}/health/Status.{sc-ext}[`Status`]
|
||||
types, it is also possible to introduce custom `Status` types to represent more
|
||||
complex system states. In such cases a custom implementation of the
|
||||
In addition to Spring Boot's predefined {sc-spring-boot-actuator}/health/Status.{sc-ext}[`Status`]
|
||||
types, it is also possible for `Health` to return a custom `Status` that represents a
|
||||
new system state. In such cases a custom implementation of the
|
||||
{sc-spring-boot-actuator}/health/HealthAggregator.{sc-ext}[`HealthAggregator`]
|
||||
interface also needs to be provided, or the default implementation has to be configured
|
||||
using the `management.health.status.order` configuration property.
|
||||
|
@ -277,7 +278,7 @@ Maven '`project properties`' via `@..@` placeholders, e.g.
|
|||
project.name=Demo
|
||||
project.version=X.X.X.X
|
||||
project.description=Demo project for info endpoint
|
||||
info.build.artifact=${project.artifactId}
|
||||
info.build.artifact=@project.artifactId@
|
||||
info.build.name=@project.name@
|
||||
info.build.description=@project.description@
|
||||
info.build.version=@project.version@
|
||||
|
@ -367,16 +368,17 @@ for Gradle users, although a little more work is required to generate the proper
|
|||
[[production-ready-monitoring]]
|
||||
== Monitoring and management over HTTP
|
||||
If you are developing a Spring MVC application, Spring Boot Actuator will auto-configure
|
||||
all non-sensitive endpoints to be exposed over HTTP. The default convention is to use the
|
||||
all enabled endpoints to be exposed over HTTP. The default convention is to use the
|
||||
`id` of the endpoint as the URL path. For example, `health` is exposed as `/health`.
|
||||
|
||||
|
||||
|
||||
[[production-ready-sensitive-endpoints]]
|
||||
=== Exposing sensitive endpoints
|
||||
If you use '`Spring Security`' sensitive endpoints will be exposed over HTTP, but also
|
||||
protected. By default '`basic`' authentication will be used with the username `user`
|
||||
and a generated password (which is printed on the console when the application starts).
|
||||
=== Securing sensitive endpoints
|
||||
If you add '`Spring Security`' to you project, all sensitive endpoints exposed over HTTP
|
||||
will be protected. By default '`basic`' authentication will be used with the username
|
||||
`user` and a generated password (which is printed on the console when the application
|
||||
starts).
|
||||
|
||||
TIP: Generated passwords are logged as the application starts. Search for '`Using default
|
||||
security password`'.
|
||||
|
@ -760,6 +762,23 @@ NOTE: In this example we are actually accessing the endpoint over HTTP using the
|
|||
|
||||
|
||||
|
||||
[[production-ready-system-metrics]]
|
||||
=== System metrics
|
||||
The following system metrics are exposed by Spring Boot:
|
||||
|
||||
* The total system memory in Kb (`mem`)
|
||||
* The amount of free memory in Kb (`mem.free`)
|
||||
* The number of processors (`processors`)
|
||||
* The system uptime in milliseconds (`uptime`)
|
||||
* The application context uptime in milliseconds (`instance.uptime`)
|
||||
* The average system load (`systemload.average`)
|
||||
* Heap information in Kb (`heap`, `heap.committed`, `heap.init`, `heap.used`)
|
||||
* Thread information (`threads`, `thread.peak`, `thead.daemon`)
|
||||
* Class load information (`classes`, `classes.loaded`, `classes.unloaded`)
|
||||
* Garbage collection information (`gc.xxx.count`, `gc.xxx.time`)
|
||||
|
||||
|
||||
|
||||
[[production-ready-datasource-metrics]]
|
||||
=== DataSource metrics
|
||||
The following metrics are exposed for each supported `DataSource` defined in your
|
||||
|
@ -788,6 +807,14 @@ beans if your favorite data source isn't supported out of the box. See
|
|||
|
||||
|
||||
|
||||
[[production-ready-session-metrics]]
|
||||
=== Tomcat session metrics
|
||||
If you are using Tomcat as your embedded servlet container, session metrics will
|
||||
automatically be exposed. The `httpsessions.active` and `httpsessions.max` keys provide
|
||||
the number of active and maximum sessions.
|
||||
|
||||
|
||||
|
||||
[[production-ready-recording-metrics]]
|
||||
=== Recording your own metrics
|
||||
To record your own metrics inject a
|
||||
|
@ -857,14 +884,16 @@ an `Exporter` interface and a few basic implementations for you to get started w
|
|||
|
||||
|
||||
[[production-ready-code-hale-metrics]]
|
||||
=== Coda Hale Metrics
|
||||
User of the http://metrics.codahale.com/[Coda Hale '`Metrics`' library] will automatically
|
||||
find that Spring Boot metrics are published to `com.codahale.metrics.MetricRegistry`. A
|
||||
default `com.codahale.metrics.MetricRegistry` Spring bean will be created when you declare
|
||||
a dependency to the `com.codahale.metrics:metrics-core` library; you can also register you
|
||||
own `@Bean` instance if you need customizations.
|
||||
=== Dropwizard Metrics
|
||||
User of the https://dropwizard.github.io/metrics/[Dropwizard '`Metrics`' library] will
|
||||
automatically find that Spring Boot metrics are published to
|
||||
`com.codahale.metrics.MetricRegistry`. A default `com.codahale.metrics.MetricRegistry`
|
||||
Spring bean will be created when you declare a dependency to the
|
||||
`io.dropwizard.metrics:metrics-core` library; you can also register you own `@Bean`
|
||||
instance if you need customizations. Metrics from the `MetricRegistry` are also
|
||||
automatically exposed via the `/metrics` endpoint
|
||||
|
||||
Users can create Coda Hale metrics by prefixing their metric names with the appropriate
|
||||
Users can create Dropwizard metrics by prefixing their metric names with the appropriate
|
||||
type (e.g. `+histogram.*+`, `+meter.*+`).
|
||||
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
[partintro]
|
||||
--
|
||||
The Spring Boot CLI is a command line tool that can be used if you want to quickly
|
||||
prototype with Spring. It allows you to run Groovy scripts, which means that you have a
|
||||
develop with Spring. It allows you to run Groovy scripts, which means that you have a
|
||||
familiar Java-like syntax, without so much boilerplate code. You can also bootstrap
|
||||
a new project or write your own command for it.
|
||||
--
|
||||
|
@ -119,45 +119,11 @@ To set JVM command line arguments you can use the `JAVA_OPTS` environment variab
|
|||
|
||||
|
||||
|
||||
[[cli-install-uninstall]]
|
||||
=== Adding dependencies to the CLI
|
||||
You can add dependencies to the CLI using the `install` command. The command takes one
|
||||
or more sets of artifact coordinates in the format `group:artifact:version`. For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE
|
||||
----
|
||||
|
||||
In addition to installing the artifacts identified by the coordinates you supply, all of
|
||||
the artifacts' dependencies will also be installed.
|
||||
|
||||
To uninstall a dependency use the `uninstall` command. As with the `install` command, it
|
||||
takes one or more sets of artifact coordinates in the format `group:artifact:version`.
|
||||
For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring uninstall com.example:spring-boot-cli-extension:1.0.0.RELEASE
|
||||
----
|
||||
|
||||
It will uninstall the artifacts identified by the coordinates you supply and their
|
||||
dependencies.
|
||||
|
||||
To uninstall all additional dependencies you can use the `--all` option. For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring uninstall --all
|
||||
----
|
||||
|
||||
|
||||
|
||||
[[cli-deduced-grab-annotations]]
|
||||
==== Deduced "`grab`" dependencies
|
||||
Standard Groovy includes a `@Grab` annotation which allows you to declare dependencies
|
||||
on a third-party libraries. This useful technique allows Groovy to download jars in the
|
||||
same way as Maven or Gradle would; but without requiring you to use a build tool.
|
||||
same way as Maven or Gradle would, but without requiring you to use a build tool.
|
||||
|
||||
Spring Boot extends this technique further, and will attempt to deduce which libraries
|
||||
to "`grab`" based on your code. For example, since the `WebApplication` code above uses
|
||||
|
@ -226,24 +192,6 @@ metadata can be found in the <<appendix-dependency-versions, appendix>>.
|
|||
|
||||
|
||||
|
||||
[[cli-default-grab-deduced-coordinates-custom-metadata]]
|
||||
===== Custom "`grab`" metadata
|
||||
Spring Boot provides a new annotation, `@GrabMetadata` that can be used to provide custom
|
||||
dependency metadata that overrides Spring Boot's defaults. This metadata is specified by
|
||||
using this annotation to provide the coordinates of one or more properties files (deployed
|
||||
to a Maven repository with a "type" identifier: "properties"). For example
|
||||
`@GrabMetadata(['com.example:versions-one:1.0.0', 'com.example.versions-two:1.0.0'])` will
|
||||
pick up files in a Maven repository in "com/example/versions-*/1.0.0/versions-*-1.0.0.properties". The
|
||||
properties files are applied in the order that they're specified. In the example above, this
|
||||
means that properties in `versions-two` will override properties in `versions-one`. Each entry
|
||||
in each properties file must be in the form `group:module=version`. You can use `@GrabMetadata`
|
||||
anywhere that you can use `@Grab`, however, to ensure consistent ordering of the metadata, you
|
||||
can only use `@GrabMetadata` at most once in your application. A useful source of dependency
|
||||
metadata (a superset of Spring Boot) is the http://platform.spring.io/[Spring IO Platform], e.g.
|
||||
`@GrabMetadata('io.spring.platform:platform-versions:1.0.0.RELEASE')`.
|
||||
|
||||
|
||||
|
||||
[[cli-default-import-statements]]
|
||||
==== Default import statements
|
||||
To help reduce the size of your Groovy code, several `import` statements are
|
||||
|
@ -265,6 +213,43 @@ Unlike the equivalent Java application, you do not need to include a
|
|||
|
||||
|
||||
|
||||
[[cli-default-grab-deduced-coordinates-custom-metadata]]
|
||||
==== Custom "`grab`" metadata
|
||||
Spring Boot provides a new `@GrabMetadata` annotation that can be used to provide custom
|
||||
dependency metadata that overrides Spring Boot's defaults. This metadata is specified by
|
||||
using the annotation to provide coordinates of one or more properties files (deployed
|
||||
to a Maven repository with a "`type`" identifier of `properties`). Each entry in each
|
||||
properties file must be in the form `group:module=version`.
|
||||
|
||||
For example, the following declaration:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
`@GrabMetadata("com.example.custom-versions:1.0.0")`
|
||||
----
|
||||
|
||||
Will pick up `custom-versions-1.0.0.properties` in a Maven repository under
|
||||
`com/example/custom-versions/1.0.0/`.
|
||||
|
||||
Multiple properties files can be specified from the annotation, they will be applied in
|
||||
the order that they're declared. For example:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
`@GrabMetadata(["com.example.custom-versions:1.0.0",
|
||||
"com.example.more-versions:1.0.0"])`
|
||||
----
|
||||
|
||||
indicates that properties in `more-versions` will override properties in `custom-versions`.
|
||||
|
||||
You can use `@GrabMetadata` anywhere that you can use `@Grab`, however, to ensure
|
||||
consistent ordering of the metadata, you can only use `@GrabMetadata` at most once in your
|
||||
application. A useful source of dependency metadata (a superset of Spring Boot) is the
|
||||
http://platform.spring.io/[Spring IO Platform], e.g.
|
||||
`@GrabMetadata('io.spring.platform:platform-versions:1.0.4.RELEASE')`.
|
||||
|
||||
|
||||
|
||||
[[cli-testing]]
|
||||
=== Testing your code
|
||||
The `test` command allows you to compile and run tests for your application. Typical
|
||||
|
@ -360,7 +345,7 @@ without leaving the shell. For example:
|
|||
|
||||
[indent=0]
|
||||
----
|
||||
$ spring init --dependencies=web,data-jpa my-project/
|
||||
$ spring init --dependencies=web,data-jpa my-project
|
||||
Using service at https://start.spring.io
|
||||
Project extracted to '/Users/developer/example/my-project'
|
||||
----
|
||||
|
@ -433,6 +418,40 @@ embedded shell.
|
|||
|
||||
|
||||
|
||||
[[cli-install-uninstall]]
|
||||
=== Adding extensions to the CLI
|
||||
You can add extensions to the CLI using the `install` command. The command takes one
|
||||
or more sets of artifact coordinates in the format `group:artifact:version`. For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE
|
||||
----
|
||||
|
||||
In addition to installing the artifacts identified by the coordinates you supply, all of
|
||||
the artifacts' dependencies will also be installed.
|
||||
|
||||
To uninstall a dependency use the `uninstall` command. As with the `install` command, it
|
||||
takes one or more sets of artifact coordinates in the format `group:artifact:version`.
|
||||
For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring uninstall com.example:spring-boot-cli-extension:1.0.0.RELEASE
|
||||
----
|
||||
|
||||
It will uninstall the artifacts identified by the coordinates you supply and their
|
||||
dependencies.
|
||||
|
||||
To uninstall all additional dependencies you can use the `--all` option. For example:
|
||||
|
||||
[indent=0,subs="verbatim,quotes,attributes"]
|
||||
----
|
||||
$ spring uninstall --all
|
||||
----
|
||||
|
||||
|
||||
|
||||
[[cli-groovy-beans-dsl]]
|
||||
== Developing application with the Groovy beans DSL
|
||||
Spring Framework 4.0 has native support for a `beans{}` "`DSL`" (borrowed from
|
||||
|
|
|
@ -386,9 +386,9 @@ NOTE: If you use '`starter POMs`' SnakeYAML will be automatically provided via
|
|||
|
||||
[[boot-features-external-config-loading-yaml]]
|
||||
==== Loading YAML
|
||||
Spring Boot provides two convenient classes that can be used to load YAML documents. The
|
||||
`YamlPropertiesFactoryBean` will load YAML as `Properties` and the `YamlMapFactoryBean`
|
||||
will load YAML as a `Map`.
|
||||
Spring Framework provides two convenient classes that can be used to load YAML documents.
|
||||
The `YamlPropertiesFactoryBean` will load YAML as `Properties` and the
|
||||
`YamlMapFactoryBean` will load YAML as a `Map`.
|
||||
|
||||
For example, the following YAML document:
|
||||
|
||||
|
@ -441,6 +441,7 @@ with a mutable value, e.g. this will bind to the properties above
|
|||
----
|
||||
@ConfigurationProperties(prefix="my")
|
||||
public class Config {
|
||||
|
||||
private List<String> servers = new ArrayList<String>();
|
||||
|
||||
public List<String> getServers() {
|
||||
|
@ -566,6 +567,9 @@ definitions by simply listing the properties classes directly in the
|
|||
}
|
||||
----
|
||||
|
||||
TIP: Using `@ConfigurationProperties` also allows you to generate meta-data files that can
|
||||
be used by IDEs. See the <<configuration-metadata>> appendix for details.
|
||||
|
||||
|
||||
|
||||
[[boot-features-external-config-relaxed-binding]]
|
||||
|
@ -1103,7 +1107,7 @@ If you prefer the JAX-RS programming model for REST endpoints you can use one of
|
|||
available implementations instead of Spring MVC. Jersey 1.x and Apache Celtix work
|
||||
quite well out of the box if you just register their `Servlet` or `Filter` as a
|
||||
`@Bean` in your application context. Jersey 2.x has some native Spring support so
|
||||
we also provide autoconfiguration support for it in Spring Boot together with a
|
||||
we also provide auto-configuration support for it in Spring Boot together with a
|
||||
starter.
|
||||
|
||||
To get started with Jersey 2.x just include the `spring-boot-starter-jersey` as a
|
||||
|
@ -1114,9 +1118,11 @@ all the endpoints:
|
|||
----
|
||||
@Component
|
||||
public class JerseyConfig extends ResourceConfig {
|
||||
|
||||
public JerseyConfig() {
|
||||
register(Endpoint.class);
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
|
@ -1139,14 +1145,14 @@ All the registered endpoints should be `@Components` with HTTP resource annotati
|
|||
|
||||
Since the `Endpoint` is a Spring `@Component` its lifecycle is managed by Spring and you
|
||||
can `@Autowired` dependencies and inject external configuration with `@Value`. The Jersey
|
||||
servlet will be registered and mapped to '`+/*+`' by default. You can change the mapping
|
||||
servlet will be registered and mapped to `/*` by default. You can change the mapping
|
||||
by adding `@ApplicationPath` to your `ResourceConfig`.
|
||||
|
||||
By default Jersey will be set up as a Servlet in a `@Bean` of type
|
||||
`ServletRegistrationBean` named "jerseyServletRegistration". You can disable or override
|
||||
`ServletRegistrationBean` named `jerseyServletRegistration`. You can disable or override
|
||||
that bean by creating one of your own with the same name. You can also use a Filter
|
||||
instead of a Servlet by setting `spring.jersey.type=filter` (in which case the `@Bean` to
|
||||
replace or override is "jerseyFilterRegistration"). The servlet has an `@Order` which you
|
||||
replace or override is `jerseyFilterRegistration`). The servlet has an `@Order` which you
|
||||
can set with `spring.jersey.filter.order`. Both the Servlet and the Filter registrations
|
||||
can be given init parameters using `spring.jersey.init.*` to specify a map of properties.
|
||||
|
||||
|
@ -1277,7 +1283,7 @@ packaged as an executable archive), there are some limitations in the JSP suppor
|
|||
|
||||
* Jetty does not currently work as an embedded container with JSPs.
|
||||
|
||||
* Undertow does not support JSPs
|
||||
* Undertow does not support JSPs.
|
||||
|
||||
There is a {github-code}/spring-boot-samples/spring-boot-sample-web-jsp[JSP sample] so
|
||||
you can see how to set things up.
|
||||
|
@ -1710,26 +1716,32 @@ several conveniences for working with MongoDB, including the The
|
|||
|
||||
[[boot-features-connecting-to-mongodb]]
|
||||
==== Connecting to a MongoDB database
|
||||
You can inject an auto-configured `com.mongodb.Mongo` instance as you would any other
|
||||
Spring Bean. By default the instance will attempt to connect to a MongoDB server using
|
||||
the URL `mongodb://localhost/test`:
|
||||
You can inject an auto-configured `org.springframework.data.mongodb.MongoDbFactory` to
|
||||
access Mono databases. By default the instance will attempt to connect to a MongoDB server
|
||||
using the URL `mongodb://localhost/test`:
|
||||
|
||||
[source,java,indent=0]
|
||||
----
|
||||
import com.mongodb.Mongo;
|
||||
import org.springframework.data.mongodb.MongoDbFactory;
|
||||
import import com.mongodb.DB;
|
||||
|
||||
@Component
|
||||
public class MyBean {
|
||||
|
||||
private final Mongo mongo;
|
||||
private final MongoDbFactory mongo;
|
||||
|
||||
@Autowired
|
||||
public MyBean(Mongo mongo) {
|
||||
public MyBean(MongoDbFactory mongo) {
|
||||
this.mongo = mongo;
|
||||
}
|
||||
|
||||
// ...
|
||||
|
||||
public void example() {
|
||||
DB db = mongo.getDb();
|
||||
// ...
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
|
||||
|
@ -1746,8 +1758,11 @@ specify a `host`/`port`. For example, you might declare the following in your
|
|||
TIP: If `spring.data.mongodb.port` is not specified the default of `27017` is used. You
|
||||
could simply delete this line from the sample above.
|
||||
|
||||
You can also declare your own `Mongo` `@Bean` if you want to take complete control of
|
||||
establishing the MongoDB connection.
|
||||
TIP: If you aren't using Spring Data Mongo you can inject `com.mongodb.Mongo` beans
|
||||
instead of using `MongoDbFactory`.
|
||||
|
||||
You can also declare your own `MongoDbFactory` or `Mongo` `@Beans` if you want to take
|
||||
complete control of establishing the MongoDB connection.
|
||||
|
||||
|
||||
|
||||
|
@ -1943,7 +1958,7 @@ receive messages asynchronously. Spring AMQP provides a similar feature set for
|
|||
'`Advanced Message Queuing Protocol`' and Boot also provides auto-configuration options
|
||||
for `RabbitTemplate` and RabbitMQ. There is also support for STOMP messaging natively
|
||||
in Spring Websocket and Spring Boot has support for that through starters and a small
|
||||
amount of auto configuration.
|
||||
amount of auto-configuration.
|
||||
|
||||
|
||||
|
||||
|
@ -2088,7 +2103,9 @@ The following component creates a listener endpoint on the `someQueue` destinati
|
|||
public class MyBean {
|
||||
|
||||
@JmsListener(destination = "someQueue")
|
||||
public void processMessage(String content) { ... }
|
||||
public void processMessage(String content) {
|
||||
// ...
|
||||
}
|
||||
|
||||
}
|
||||
----
|
||||
|
@ -2598,6 +2615,16 @@ care must be taken not to refer to bean definitions that have not yet been creat
|
|||
|
||||
|
||||
|
||||
[[boot-features-property-conditions]]
|
||||
==== Property conditions
|
||||
The `@ConditionalOnProperty` annotation allows configuration to be included based on a
|
||||
Spring Environment property. Use the `prefix` and `name` attributes to specify the
|
||||
property that should be checked. By default any property that exists and is not equal to
|
||||
`false` will be matched. You can also create more advanced checks using the `havingValue`
|
||||
and `matchIfMissing` attributes.
|
||||
|
||||
|
||||
|
||||
[[boot-features-resource-conditions]]
|
||||
==== Resource conditions
|
||||
The `@ConditionalOnResource` annotation allows configuration to be included only when a
|
||||
|
@ -2624,8 +2651,8 @@ result of a {spring-reference}/#expressions[SpEL expression].
|
|||
|
||||
[[boot-features-websockets]]
|
||||
== WebSockets
|
||||
Spring Boot provides WebSockets auto-configuration for embedded Tomcat (7 and 8) and
|
||||
embedded Jetty 9. If you're deploying a war file to a standalone container, Spring Boot
|
||||
Spring Boot provides WebSockets auto-configuration for embedded Tomcat (8 and 7), Jetty 9
|
||||
and Undertow. If you're deploying a war file to a standalone container, Spring Boot
|
||||
assumes that the container will be responsible for the configuration of its WebSocket
|
||||
support.
|
||||
|
||||
|
|
|
@ -234,6 +234,10 @@ The following application starters are provided by Spring Boot under the
|
|||
|`spring-boot-starter-batch`
|
||||
|Support for "`Spring Batch`" including HSQLDB database.
|
||||
|
||||
|`spring-boot-starter-cloud-connectors`
|
||||
|Support for "`Spring Cloud Connectors`" which simplifies connecting to services in cloud
|
||||
platforms like Cloud Foundry and Heroku.
|
||||
|
||||
|`spring-boot-starter-data-elasticsearch`
|
||||
|Support for the Elasticsearch search and analytics engine including
|
||||
`spring-data-elasticsearch`.
|
||||
|
@ -269,21 +273,24 @@ and Hibernate.
|
|||
|`spring-boot-starter-jdbc`
|
||||
|Support for JDBC databases.
|
||||
|
||||
|`spring-boot-starter-jersey`
|
||||
|Support for the Jersey RESTful Web Services framework.
|
||||
|
||||
|`spring-boot-starter-jta-atomikos`
|
||||
|Support for JTA distributed transactions via Atomikos.
|
||||
|
||||
|`spring-boot-starter-jta-bitronix`
|
||||
|Support for JTA distributed transactions via Bitronix.
|
||||
|
||||
|`spring-boot-starter-mail`
|
||||
|Support for `javax.mail`.
|
||||
|
||||
|`spring-boot-starter-mobile`
|
||||
|Support for `spring-mobile`
|
||||
|
||||
|`spring-boot-starter-redis`
|
||||
|Support for the REDIS key-value data store, including `spring-redis`.
|
||||
|
||||
|`spring-boot-starter-remote-shell`
|
||||
|Support for `CRaSH`.
|
||||
|
||||
|`spring-boot-starter-security`
|
||||
|Support for `spring-security`.
|
||||
|
||||
|
@ -371,8 +378,8 @@ best practices that help.
|
|||
When a class doesn't include a `package` declaration it is considered to be in the
|
||||
"`default package`". The use of the "`default package`" is generally discouraged, and
|
||||
should be avoided. It can cause particular problems for Spring Boot applications that
|
||||
use `@ComponentScan` or `@EntityScan` annotations, since every class from every jar,
|
||||
will be read.
|
||||
use `@ComponentScan`, `@EntityScan` or `@SpringBootApplication` annotations, since every
|
||||
class from every jar, will be read.
|
||||
|
||||
TIP: We recommend that you follow Java's recommended package naming conventions
|
||||
and use a reversed domain name (for example, `com.example.project`).
|
||||
|
@ -388,7 +395,8 @@ example, if you are writing a JPA application, the package of the
|
|||
`@EnableAutoConfiguration` annotated class will be used to search for `@Entity` items.
|
||||
|
||||
Using a root package also allows the `@ComponentScan` annotation to be used without
|
||||
needing to specify a `basePackage` attribute.
|
||||
needing to specify a `basePackage` attribute. You can also use the
|
||||
`@SpringBootApplication` annotation if your main class is in the root package.
|
||||
|
||||
Here is a typical layout:
|
||||
|
||||
|
@ -473,8 +481,8 @@ application based on the jar dependencies that you have added. For example, If
|
|||
`HSQLDB` is on your classpath, and you have not manually configured any database
|
||||
connection beans, then we will auto-configure an in-memory database.
|
||||
|
||||
You need to opt-in to auto-configuration by adding the `@EnableAutoConfiguration`
|
||||
annotation to one of your `@Configuration` classes.
|
||||
You need to opt-in to auto-configuration by adding the `@EnableAutoConfiguration` or
|
||||
`@SpringBootApplication` annotations to one of your `@Configuration` classes.
|
||||
|
||||
TIP: You should only ever add one `@EnableAutoConfiguration` annotation. We generally
|
||||
recommend that you add it to your primary `@Configuration` class.
|
||||
|
@ -645,7 +653,7 @@ resources for instant "`hot`" reload.
|
|||
$ mvn spring-boot:run
|
||||
----
|
||||
|
||||
Useful operating system environment variable:
|
||||
You might also want to use the useful operating system environment variable:
|
||||
|
||||
[indent=0,subs="attributes"]
|
||||
----
|
||||
|
@ -668,7 +676,7 @@ the `spring-boot-plugin`
|
|||
$ gradle bootRun
|
||||
----
|
||||
|
||||
Useful operating system environment variable:
|
||||
You might also want to use this useful operating system environment variable:
|
||||
|
||||
[indent=0,subs="attributes"]
|
||||
----
|
||||
|
|
Loading…
Reference in New Issue