Chapter 04: Developing a Spring Boot Application: Difference between revisions
(2 intermediate revisions by the same user not shown) | |||
Line 167: | Line 167: | ||
runApplication<MyFirstAppApplication>(*args) | runApplication<MyFirstAppApplication>(*args) | ||
}</syntaxhighlight> | }</syntaxhighlight> | ||
The <code>@SpringBootApplication</code> annotation is actually three annotations in one: | The <code>@SpringBootApplication</code> annotation is actually three annotations in one: | ||
* <code>@Configuration</code>: Marks this as a configuration class | |||
* <code>@EnableAutoConfiguration</code>: Enables Spring Boot’s auto-configuration | |||
* <code>@ComponentScan</code>: Enables component scanning from this package | |||
<span id="exploring-build.gradle.kts"></span> | <span id="exploring-build.gradle.kts"></span> | ||
== 4.2 Exploring build.gradle.kts == | == 4.2 Exploring build.gradle.kts == | ||
Line 179: | Line 183: | ||
Before diving into Gradle, let’s understand why we use build tools: | Before diving into Gradle, let’s understand why we use build tools: | ||
'''What Build Tools Do:''' | '''What Build Tools Do:''' | ||
* Dependency management | |||
* Compilation and packaging | |||
* Running tests | |||
* Code quality checks | |||
* Deployment preparation | |||
'''Popular Build Tools for JVM:''' | '''Popular Build Tools for JVM:''' | ||
* '''Gradle''': Modern, flexible, uses Groovy or Kotlin DSL | |||
* '''Maven''': Mature, XML-based, extensive plugin ecosystem | |||
* '''Bazel''': Google’s build tool, excellent for monorepos | |||
* '''SBT''': Scala-focused but works with Kotlin | |||
We use Gradle with Kotlin DSL because: | We use Gradle with Kotlin DSL because: | ||
# Type-safe build scripts | |||
# IDE auto-completion | |||
# Kotlin syntax consistency | |||
# Better refactoring support | |||
<span id="gradle"></span> | <span id="gradle"></span> | ||
=== 4.2.2 Gradle === | === 4.2.2 Gradle === | ||
Gradle is more than a build tool—it’s a build automation platform. Let’s understand its core concepts: | Gradle is more than a build tool—it’s a build automation platform. Let’s understand its core concepts: | ||
'''Gradle Concepts:''' | '''Gradle Concepts:''' | ||
* '''Project''': What you’re building (your application) | |||
* '''Task''': A unit of work (compile, test, jar) | |||
* '''Plugin''': Adds tasks and conventions | |||
* '''Dependency''': External libraries your project needs | |||
* '''Repository''': Where dependencies are downloaded from | |||
'''Gradle Wrapper:''' The wrapper ensures everyone uses the same Gradle version: | '''Gradle Wrapper:''' The wrapper ensures everyone uses the same Gradle version: | ||
Line 207: | Line 230: | ||
gradlew.bat build # Windows</syntaxhighlight> | gradlew.bat build # Windows</syntaxhighlight> | ||
<span id="managing-dependencies-using-kotlin-dsl"></span> | <span id="managing-dependencies-using-kotlin-dsl"></span> | ||
=== 4.2.3 Managing Dependencies Using Kotlin DSL === | === 4.2.3 Managing Dependencies Using Kotlin DSL === | ||