Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
bf068542
Commit
bf068542
authored
Apr 04, 2018
by
Stephane Nicoll
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '1.5.x'
parents
30e3cf4c
1805cc56
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
57 additions
and
21 deletions
+57
-21
using-spring-boot.adoc
...spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc
+57
-21
No files found.
spring-boot-project/spring-boot-docs/src/main/asciidoc/using-spring-boot.adoc
View file @
bf068542
...
@@ -344,14 +344,16 @@ reversed domain name (for example, `com.example.project`).
...
@@ -344,14 +344,16 @@ reversed domain name (for example, `com.example.project`).
[[using-boot-locating-the-main-class]]
[[using-boot-locating-the-main-class]]
=== Locating the Main Application Class
=== Locating the Main Application Class
We generally recommend that you locate your main application class in a root package
We generally recommend that you locate your main application class in a root package
above other classes. The `@EnableAutoConfiguration` annotation is often placed on your
above other classes. The <<using-boot-using-springbootapplication-annotation,
main class, and it implicitly defines a base "`search package`" for certain items. For
`@SpringBootApplication` annotation>> is often placed on your main class, and it
example, if you are writing a JPA application, the package of the
implicitly defines a base "`search package`" for certain items. For example, if you are
`@EnableAutoConfiguration` annotated class is used to search for `@Entity` items.
writing a JPA application, the package of the `@SpringBootApplication` annotated class
is used to search for `@Entity` items. Using a root package also allows component
scan to apply only on your project.
Using a root package also lets the `@ComponentScan` annotation be used without needing to
TIP: If you don't want to use `@SpringBootApplication`, the `@EnableAutoConfiguration`
specify a `basePackage` attribute. You can also use the `@SpringBootApplication`
and `@ComponentScan` annotations that it imports defines that behaviour so you can also
annotation if your main class is in the root package
.
use that instead
.
The following listing shows a typical layout:
The following listing shows a typical layout:
...
@@ -376,20 +378,16 @@ The following listing shows a typical layout:
...
@@ -376,20 +378,16 @@ The following listing shows a typical layout:
----
----
The `Application.java` file would declare the `main` method, along with the basic
The `Application.java` file would declare the `main` method, along with the basic
`@
Configur
ation`, as follows:
`@
SpringBootApplic
ation`, as follows:
[source,java,indent=0]
[source,java,indent=0]
----
----
package com.example.myapplication;
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan
public class Application {
public class Application {
public static void main(String[] args) {
public static void main(String[] args) {
...
@@ -441,8 +439,9 @@ then Spring Boot auto-configures an in-memory database.
...
@@ -441,8 +439,9 @@ then Spring Boot auto-configures an in-memory database.
You need to opt-in to auto-configuration by adding the `@EnableAutoConfiguration` or
You need to opt-in to auto-configuration by adding the `@EnableAutoConfiguration` or
`@SpringBootApplication` annotations to one of your `@Configuration` classes.
`@SpringBootApplication` annotations to one of your `@Configuration` classes.
TIP: You should only ever add one `@EnableAutoConfiguration` annotation. We generally
TIP: You should only ever add one `@SpringBootApplication` or `@EnableAutoConfiguration`
recommend that you add it to your primary `@Configuration` class.
annotation. We generally recommend that you add one or the other to your primary
`@Configuration` class only.
...
@@ -546,11 +545,16 @@ TIP: Notice how using constructor injection lets the `riskAssessor` field be mar
...
@@ -546,11 +545,16 @@ TIP: Notice how using constructor injection lets the `riskAssessor` field be mar
[[using-boot-using-springbootapplication-annotation]]
[[using-boot-using-springbootapplication-annotation]]
== Using the @SpringBootApplication Annotation
== Using the @SpringBootApplication Annotation
Many Spring Boot developers always have their main class annotated with `@Configuration`,
Many Spring Boot developers like their apps to use auto-configuration, component scan and
`@EnableAutoConfiguration`, and `@ComponentScan`. Since these annotations are so
be able to define extra configuration on their "application class". A single
frequently used together (especially if you follow the
`@SpringBootApplication` annotation can be used to enable those tree features, that is:
<<using-boot-structuring-your-code, best practices>> above), Spring Boot provides a
convenient `@SpringBootApplication` alternative.
* `@EnableAutoConfiguration`: enable <<using-boot-auto-configuration,Spring Boot's
auto-configuration mechanism>>
* `@ComponentScan`: enable `@Component` scan on the package where the application is
located (see <<using-boot-structuring-your-code,the best practices>>)
* `@Configuration`: allow to register extra beans in the context or import additional
configuration classes
The `@SpringBootApplication` annotation is equivalent to using `@Configuration`,
The `@SpringBootApplication` annotation is equivalent to using `@Configuration`,
`@EnableAutoConfiguration`, and `@ComponentScan` with their default attributes, as shown
`@EnableAutoConfiguration`, and `@ComponentScan` with their default attributes, as shown
...
@@ -577,6 +581,38 @@ in the following example:
...
@@ -577,6 +581,38 @@ in the following example:
NOTE: `@SpringBootApplication` also provides aliases to customize the attributes of
NOTE: `@SpringBootApplication` also provides aliases to customize the attributes of
`@EnableAutoConfiguration` and `@ComponentScan`.
`@EnableAutoConfiguration` and `@ComponentScan`.
[NOTE]
====
None of these features are mandatory and you may chose to replace this single annotation
by any of the features that it enables. For instance, you may not want to use component
scan in your application:
[source,java,indent=0]
----
package com.example.myapplication;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
----
In this example, `Application` is just like any other Spring Boot application except that
`@Component`-annotated classes are not detected automatically and the user-defined beans
are imported explicitly (see `@Import`).
====
[[using-boot-running-your-application]]
[[using-boot-running-your-application]]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment