I am trying to develop a sample spring boot based application in IntellIJ. So I used spring Initialzr approach, and made default selections during the setup. The pom.xml I ended up with has following dependency:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
But the tutorial I am following has following:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
So, what's the difference? And can I have both?
spring-boot-starter-web contains the following dependencies:
Using IntelliJ, you can view the dependencies of your artifacts at the bottom of the project structure.
Given that spring-boot-starter is a dependency of spring-boot-starter-web, it would be useless to have both. It wouldn't do any harm if you kept both either, just unnecessary.
spring-boot-starter provides the basic development and run time infrastructure for your application along with core spring features. If you want web capabilities such as spring-mvc to your project you need to use spring-boot-starter-web. However if you use spring-boot-starter-web you do not need to to explicitly mention spring-boot-starter.
spring-boot-starter is itself a dependency of spring-boot-starter-web. If you include only spring-boot-starter dependency into your application then you will get only runtime infrastructure along with some core features. So for the web application you need to include spring-boot-starter-web so that you can get spring-mvc, jackson and spring-boot-starter. There is no need of using both. If you will use spring-boot-starter-web then it will be enough for your application. However using both will not will not through an error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With