Typically, the very first step of creating any application is to have a basic startable skeleton. As the Spring Boot starter has created the application template for us already, all we have to do is extract the code, build, and execute it. Now let's go to the console and launch the application with Gradle.
Launching an application using Gradle
How to do it...
Change the location of our directory to where the bookpub.zip archive was extracted from and execute the following command from the command line:
$ ./gradlew clean bootRun
If you don't have gradlew in the directory, then download a version of Gradle from https://gradle.org/downloads or install it via Homebrew by executing brew install gradle. After Gradle is installed, run wrapper in the gradle folder to get the Gradle wrapper files generated. Another way is to invoke $gradleclean bootRun.
The output of the preceding command will be as follows:
... . ____ _ __ _ _ /\ / ___'_ __ _ _(_)_ __ __ _ ( ( )___ | '_ | '_| | '_ / _` | \/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.0.0.BUILD-SNAPSHOT) 2017-12-16 23:18:53.721 : Starting BookPubApplication on mbp with
PID 43850 2017-12-16 23:18:53.781 : Refreshing org.springframework.context.
annotation.Annotatio 2017-12-16 23:18:55.544 : Building JPA container
EntityManagerFactory for persistence 2017-12-16 23:18:55.565 : HHH000204: Processing
PersistenceUnitInfo [name: default 2017-12-16 23:18:55.624 : HHH000412: Hibernate Core
{5.2.12.Final} 2017-12-16 23:18:55.625 : HHH000206: hibernate.properties not
found 2017-12-16 23:18:55.627 : HHH000021: Bytecode provider name :
javassist 2017-12-16 23:18:55.774 : HCANN000001: Hibernate Commons
Annotations {5.0.1.Final 2017-12-16 23:18:55.850 : HHH000400: Using dialect:
org.hibernate.dialect.H2Dialect 2017-12-16 23:18:55.902 : HHH000397: Using
ASTQueryTranslatorFactory 2017-12-16 23:18:56.094 : HHH000227: Running hbm2ddl schema
export 2017-12-16 23:18:56.096 : HHH000230: Schema export complete 2017-12-16 23:18:56.337 : Registering beans for JMX exposure on
startup 2017-12-16 23:18:56.345 : Started BookPubApplication in 3.024
seconds (JVM running... 2017-12-16 23:18:56.346 : Closing
org.springframework.context.annotation.AnnotationC.. 2017-12-16 23:18:56.347 : Unregistering JMX-exposed beans on
shutdown 2017-12-16 23:18:56.349 : Closing JPA EntityManagerFactory for
persistence unit 'def... 2017-12-16 23:18:56.349 : HHH000227: Running hbm2ddl schema
export 2017-12-16 23:18:56.350 : HHH000230: Schema export complete BUILD SUCCESSFUL Total time: 52.323 secs
How it works...
As we can see, the application started just fine, but as we didn't add any functionality or configure any services, it existed straight away. From the startup log, however, we do see that the autoconfiguration did take place. Let's take a look at the following lines:
Building JPA container EntityManagerFactory for persistence unit
'default' HHH000412: Hibernate Core {5.2.12.Final} HHH000400: Using dialect: org.hibernate.dialect.H2Dialect
This information tells us that, because we added the jdbc and data-jpa starters, the JPA container was created and will use Hibernate 5.2.12.Final to manage the persistence using H2Dialect. This was possible because we had the right classes in the classpath.