Initialising first Spring Boot Application using IntelliJ Community Edition

·

3 min read

Spring Boot is a Java Spring Framework Extension that works over Spring for Rapid Application Development. It auto-configures dependencies and developer only need to focus on coding part instead of configuration.

In this tutorial, we will build our first Spring Boot Application using IntelliJ Idea Community Edition.

IntelliJ Idea is a very popular IDE for Java Application Development. But the community edition does not provide necessary tools for Spring Application. Better alternative can be IDE like Eclipse, Netbeans. But some people like IntelliJ more than other IDEs.

Step 1

Go to Spring Initializr website and fill the following fields. Make sure to add necessary dependencies in right section and click Generate.

We will use MongoDB for database.

This will create a zip file.

Extract the zip file and place the folder wherever you want and open the folder in IntelliJ.

Step 2:

Create the following packages along with FirstApplication.java file.

  • models

  • repositories

  • services

  • controllers

Step 3:

In the /src/main/resources/application.properties, add the following lines.

server.port=8081
spring.data.mongodb.uri=mongodb://localhost:27017

spring.data.mongodb.database=mongodbTest

Step 4:

Create the following files.

  • /controllers/UserController class

  • /models/User class

  • /repositories/UserRepository interface

  • /services/UserService interface

  • /services/impl/UserServiceImpl class

Step 4:

Add the following code.

User class

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class User {
    @Id
    private Integer userId;
    private String username;
    private String email;
}

UserRepository interface

import com.mongod.db.models.User;
import org.springframework.data.mongodb.repository.MongoRepository;

public interface UserRepository extends MongoRepository<User, Integer> {
}

UserService interface

import com.mongod.db.models.User;
import org.springframework.stereotype.Service;

import java.util.List;

public interface UserService {
    User getUser(Integer userId);
    User setUser(User user);
    List<User> getAllUsers();
}

UserServiceImpl class

import com.mongod.db.models.User;
import com.mongod.db.repositories.UserRepository;
import com.mongod.db.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserRepository userRepository;


    @Override
    public User getUser(Integer userId) {
        return userRepository.findById(userId).orElse(null);
    }

    @Override
    public User setUser(User user) {
        userRepository.save(user);
        return user;
    }

    @Override
    public List<User> getAllUsers() {
        return userRepository.findAll();
    }
}

UserController class

import com.mongod.db.models.User;
import com.mongod.db.services.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/home")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/get-user")
    public ResponseEntity<User> getUser(@RequestParam Integer userId) {
        return new ResponseEntity<>(userService.getUser(userId), HttpStatus.OK);
    }

    @GetMapping("/all-users")
    public ResponseEntity<List<User>> getAllUsers() {
        return new ResponseEntity<>(userService.getAllUsers(), HttpStatus.OK);
    }

    @PostMapping("/create-user")
    public ResponseEntity<User> addUser(@RequestBody User user) {
        return new ResponseEntity<>(userService.setUser(user), HttpStatus.OK);
    }
}

Now the coding part is done. All left is running the application.

You can run the Application by running the FirstApplication class or by maven command from the root directory mvn spring-boot:run.

Now the Application is running.

Step 5:

You can test the API using any Rest API Client like Postman, ThunderClient or JetClient.

Make a POST request on url localhost:8081/home/create-user with request body as

{
    "userId": "1234",
    "username": "John",
    "email": "john@example.com"
}

A new user data will be created in the MongoDB database. You can check the database using the MongoDB Compass.

Make a GET request on url localhost:8081/home/get-user?userId=1234, you will get the user from the database as response.

Make a GET request on url localhost:8081/home/all-users, you will get an array of all the users from the database.

Conclusion

This was a quick and comprehensive example of Spring Boot Application and how it works with MongoDB and IntelliJ Idea Community Edition.