-
Notifications
You must be signed in to change notification settings - Fork 1
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 :
- 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.
@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.
@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 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.
- 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.
- 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.
- Meeting Note 9 - 10.12.2024
- Meeting Note 8 - 03.12.2024
- Meeting Note 7 - 19.11.2024
- Meeting Note 6 - 12.11.2024
- Meeting Note 5 - 05.11.2024
- Feedback Meeting - 29.10.2024
- Meeting Note 4 - 15.10.2024
- Meeting Note 3 - 08.10.2024
- Meeting Note 2 - 01.10.2024
- Meeting Note 1 - 24.09.2024
- Lab Report-1 📝
- Lab Report-2 📝
- Lab Report-3 📝
- Lab Report-4 📝
- Lab Report-5 📝
- Lab Report-6 📝
- Lab Report-7 📝
- Lab Report-8 📝
- Lab Report-9 📝
- Milestone Report
- Additional Scenario & Mockups
- Final Milestone Presentation Scenario
- Requirements
- Standard Implementation Documentation
- Software Design Diagrams ✨
- Customer Feedback for Demo
- Milestone Report
- Presentation Scenario
- Software Quality Standards
- Data Population Strategy
- Customer Feedback for Demo
- Standard Implementation Documentation
- Testing Documentation
- Requirements
- Software Design Diagrams ✨
- Milestone Report
- Scenarios & Mockups 🖌️
- User Stories
- Responsibility Assigment Matrix ☑️
- Class Diagram
- Issue Creation Guidlines ❓
- Wikidata Query Service Guidlines and Resources ❓
- Communication Plan ☎️
- Requirements
352 Sidebar
- Contribution Guide
- Backend Roadmap and Resources
- Issue Creation Guidlines ❓
- Wikidata Query Service Guidlines and Resources ❓
- Communication Plan ☎️
- UI Design Images, Figma
- Requirements
- Frontend Meeting Note 5 - 16.05.2024
- Frontend Meeting Note 4 - 14.05.2024
- Backend Meeting Note 6 - 11.05.2024
- Backend Meeting Note 5 - 10.05.2024
- Backend Meeting Note 4 - 07.05.2024
- Frontend Meeting Note 3 - 07.05.2024
- Backend Meeting Note 3 - 06.05.2024
- Frontend Meeting Note 2 - 05.05.2024
- Frontend Meeting Note 1 - 29.04.2024
- Meeting Note 11 - 28.04.2024
- Backend Meeting Note 2 - 26.04.2024
- Backend Meeting Note 1 - 25.04.2024
- Meeting Note 10 - 21.04.2024
- Meeting Note 9 - 14.04.2024
- Meeting Note 8 - 04.04.2024
- Meeting Note 7 - 23.03.2024
- Customer Meeting Note - 18.03.2024
- Meeting Note 6 - 16.03.2024
- Meeting Note 5 - 12.03.2024
- Meeting Note 4 - 09.03.2024
- Meeting Note 3 - 02.03.2024
- Meeting Note 2 - 24.02.2024
- Meeting Note 1 - 18.02.2024
- Nazire Ata
- Enes Başer
- Aslı Gök
- Çağatay Çolak
- Mehmet Efe Akça
- Yiğit Memceroktay
- Ufuk Altunbulak
- Boray Kasap
- Atakan Yasar