Skip to content

352 Backend Roadmap and Resources

Mehmet Efe Akça edited this page Sep 24, 2024 · 1 revision

Team will be using Spring Boot and related stacks so here is the list of basics to follow up :

Basics of Java programming.

  • Make sure that you grasp general features of Java programming language like OOP contecepts, Data Structures , function-overloading etc.

Spring Boot Concepts, annotations, Bean life-cycle, Dependency Injection , Inversion of Control etc.

  • Spring Boot : Spring Boot is a framework built on top of the Spring framework that simplifies the process of creating production-ready applications. It provides out-of-the-box configurations, convention over configuration, and auto-configuration to reduce the amount of boilerplate code needed.
  • Annotation : Annotations in Spring Boot are used to provide metadata to the Spring framework to configure beans, controllers, and other components of your application. Some commonly used annotations include @RestController, @Service, @Autowired, @Component, @Configuration, etc.
  • Bean Life-cycle: The life-cycle of a Spring bean starts with its creation and ends with its destruction. The typical life-cycle phases include:
    • Instantiation: The bean is created.
    • Initialization: Dependencies are injected, and the bean is initialized.
    • Usage: The bean is used within the application.
    • Destruction: The bean is destroyed when the application context is shut down.
  • Dependency Injection (DI): Dependency Injection is a design pattern used to manage the dependencies between different components in an application. In Spring Boot, DI is achieved through the @Autowired annotation, where dependencies are injected into a class rather than the class creating its dependencies or achieved through DI by Constructor or Setter.
  • Inversion of Control (IoC): Inversion of Control is a principle where the control of object creation and lifecycle is inverted from the application to the framework. In Spring Boot, IoC is achieved through the Spring container, which manages the instantiation and lifecycle of beans, thereby allowing developers to focus on business logic.

Here is the example for some of these concepts :

@Service public class UserService {

private final UserRepository userRepository;

@Autowired
public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
}

// Business logic using userRepository }
  • @Service annotation marks UserService as a Spring service bean.
  • @Autowired annotation injects the UserRepository bean into the UserService.
  • UserService does not create its instance of UserRepository, thus achieving Dependency Injection.
  • Spring controls the instantiation and wiring of UserService and UserRepository, demonstrating Inversion of Control.

Another approach with Constructor level DI (Dependency Injection)

@Service public class UserService {

private final UserRepository userRepository;

public UserService(UserRepository userRepository) {
    this.userRepository = userRepository;
}

// Business logic using userRepository}
  • The constructor injects the UserRepository dependency directly without using @Autowired.
  • Spring recognizes the constructor and automatically injects the dependencies when creating an instance of UserService.
  • As Backend team, we'll be using this approach because it is much safer than @Autowired approach.

Spring Security :

  • Spring Security is a powerful framework for securing your Spring applications. It provides features for authentication (verifying user identity), authorization (determining user permissions), and access control (restricting access to resources based on permissions).
  • And also try to grasp JWT concepts with Spring Security because our backend project will be set on these two concepts for authentication and authorization.

Rest API Concepts :

  • Understand the concepts of Rest Api and use of HTTP methods, query parameters, route etc.
  • Grasp the idea of Client-Server Architecture which is separation of concerns between client and server, where clients and servers are independent of each other.

SQL and Spring Data JPA

  • Spring Data JPA is a part of the larger Spring Data project that simplifies the implementation of data access layers in Spring applications. It provides a high-level abstraction over JPA (Java Persistence API) and makes it easier to work with relational databases.
  • Familiarize yourself with Spring Data JPA's query creation mechanism, which allows you to generate queries from method names which is very powerful and reducing boilerplate code.

Resources :

Blogs and Docs :

Videos and Playlists :

Milestone 3 🎯

Milestone 2 🎯

Milestone 1 🎯

Personal Pages 🌟

Personal Efforts Pages 🌟

Document Templates 📂

352 Sidebar

Milestone 1 🎯

Milestone 2 🎯

Milestone 3 🎯

Personal Pages 🌟

Document Templates 📂

Clone this wiki locally