"What is Spring?". Bu bo‘limda Spring nima, Spring Boot nima uchun kerak, Spring Cloud qayerda ishlatiladi, loyiha strukturasi va @SpringBootApplication nimani anglatishini tushunamiz.
1. Spring nima?
Spring - bu Java’da backend dasturlar yozishni osonlashtiradigan katta ekotizim.
Oddiy qilib aytganda:
Spring - Java dasturchiga enterprise darajadagi web app, REST API, database bilan ishlaydigan tizim, security, microservice va cloud ilovalar yozishda yordam beradigan framework.
Masalan, Spring orqali quyidagilarni yozamiz:
Online do‘kon backend
Bank API
CRM tizim
Telegram bot backend
Admin panel backend
Mobile app uchun API
Microservice tizimlar2. Nega Spring kerak?
Oddiy Java’da ham backend yozsa bo‘ladi. Lekin katta loyihalarda muammolar chiqadi:
Objectlarni qo‘lda yaratish kerak
Database ulash qiyinlashadi
HTTP requestlarni boshqarish kerak
Security yozish murakkab
Configuration ko‘payib ketadi
Testing qiyinlashadiSpring shu ishlarni tartibli qilib beradi.
Masalan oddiy Java’da:
UserRepository repository = new UserRepository();
UserService service = new UserService(repository);
UserController controller = new UserController(service);Spring’da esa ko‘pincha buni o‘zimiz qo‘lda yaratmaymiz. Spring o‘zi kerakli obyektlarni yaratadi va bir-biriga ulab beradi.
3. Spring Framework vs Spring Boot vs Spring Cloud
Bu uchalasini chalkashtirmaslik kerak.
Nomi | Vazifasi | Oddiy tushuntirish |
|---|---|---|
Spring Framework | Asosiy baza | Spring’ning yuragi |
Spring Boot | Tez start qilish | Spring loyihani tez va oson ishga tushirish |
Spring Cloud | Microservice/cloud | Ko‘p service’li tizimlar uchun yordamchi vositalar |
4. Spring Framework nima?
Spring Framework - Spring ekotizimining asosiy qismi.
Unda quyidagi muhim tushunchalar bor:
IoC - Inversion of Control
DI - Dependency Injection
Bean
ApplicationContext
AOP
Transaction
MVCHozircha eng muhimi:
Spring Framework objectlarni boshqaradi va kerakli classlarni bir-biriga ulab beradi.
Masalan:
@Service
public class UserService {
public String getUser() {
return "Ali";
}
}Bu yerda UserService classini Spring boshqaradi.
5. Spring Boot nima?
Spring Boot - Spring asosida tez backend app yaratish uchun ishlatiladi.
Spring Boot’ning asosiy maqsadi:
Kamroq configuration, tezroq ishga tushirish.
Oldin Spring’da juda ko‘p XML yoki manual config yozish kerak bo‘lgan. Spring Boot esa ko‘p narsani avtomatik sozlab beradi.
Masalan, Spring Boot bilan REST API yozish:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Salom Spring Boot";
}
}Shu kichik kod bilan /hello endpoint tayyor bo‘ladi.
6. Spring Cloud nima?
Spring Cloud - microservice arxitektura uchun kerak bo‘ladi.
Masalan, katta tizimda bir nechta service bo‘ladi:
user-service
payment-service
order-service
notification-service
gateway-serviceSpring Cloud yordam beradi:
API Gateway
Service discovery
Config server
Load balancing
Circuit breaker
Distributed tracingBoshlang'ich bosqichda Spring Cloud’ni chuqur o‘rganish shart emas. Avval Spring Boot’ni yaxshi tushunish kerak.
7. Nega Spring Boot mavjud?
Spring Boot’ning asosiy g‘oyasi:
Convention over configuration
Bu degani:
Agar biz standart yo‘l bilan ishlasak, Spring Boot ko‘p sozlamalarni o‘zi qiladi.
Masalan, biz spring-boot-starter-web dependency qo‘shsak, Spring Boot tushunadi:
Bu web application
REST API kerak bo‘ladi
Tomcat kerak
JSON ishlaydi
Spring MVC kerakVa bularni o‘zi avtomatik sozlaydi.
8. Starter dependency nima?
Spring Boot’da starter degan tushuncha bor.
Masalan:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>Bu bitta dependency ichida web app uchun kerakli ko‘p kutubxonalar keladi:
Spring MVC
Tomcat
Jackson JSON
Validation basic support
LoggingYa’ni har birini alohida qo‘shib o‘tirmaymiz.
9. Spring Initializr nima?
Spring Initializr - Spring Boot loyiha yaratib beradigan rasmiy generator.
Sayt:
start.spring.ioU yerda quyidagilar tanlanadi:
Project: Maven yoki Gradle
Language: Java
Spring Boot version
Group: uz.jts
Artifact: demo
Java version
DependenciesMasalan dependency sifatida quyidagilar tanlanadi:
Spring Web
Spring Data JPA
PostgreSQL Driver
Lombok
Validation
Spring SecurityBoshlanishiga birinchi loyiha:
Spring Web
Lombokyetarli.
10. Spring Boot project structure
Spring Boot loyihada odatda shunday structure bo‘ladi:
demo
└── src
├── main
│ ├── java
│ │ └── uz
│ │ └── jts
│ │ └── demo
│ │ ├── DemoApplication.java
│ │ ├── controller
│ │ ├── service
│ │ ├── repository
│ │ └── model
│ └── resources
│ ├── application.properties
│ └── static
└── test
└── javaMuhim papkalar:
Papka | Vazifasi |
|---|---|
| Java kodlar |
| Config fayllar |
| App sozlamalari |
| Test kodlar |
11. DemoApplication.java nima?
Spring Boot loyihada asosiy class bo‘ladi:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}Bu class application’ni ishga tushiradi.
12. @SpringBootApplication nima qiladi?
@SpringBootApplication - bu bitta annotation, lekin ichida 3 ta katta vazifa bor:
@Configuration
@EnableAutoConfiguration
@ComponentScanYa’ni:
1. @Configuration
Bu class konfiguratsiya classi bo‘lishi mumkinligini bildiradi.
2. @EnableAutoConfiguration
Spring Boot’ga avtomatik sozlashni yoqadi.
Masalan:
Agar Spring Web bor bo‘lsa → web server sozlaydi
Agar JPA bor bo‘lsa → database sozlamalarini tayyorlaydi
Agar Security bor bo‘lsa → security filter qo‘shadi3. @ComponentScan
Spring loyihadagi classlarni qidiradi:
@Component
@Service
@Repository
@Controller
@RestControllerva ularni Spring container’ga qo‘shadi.
13. Spring Container nima?
Spring Container - Spring boshqaradigan obyektlar joylashadigan joy.
Spring’da obyektlar Bean deyiladi.
Masalan:
@Service
public class ProductService {
}Bu classdan Spring obyekt yaratadi. Shu obyekt Bean deyiladi.
Oddiy qilib:
Class → blueprint
Object → real obyekt
Bean → Spring boshqaradigan obyekt14. Real hayotiy misol
Tasavvur qil:
Controller - mijozdan request oladi
Service - biznes logika bajaradi
Repository - database bilan ishlaydiKod:
@RestController
@RequestMapping("/users")
public class UserController {
private final UserService userService;
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping
public String getUser() {
return userService.getUser();
}
}@Service
public class UserService {
public String getUser() {
return "Ali";
}
}Bu yerda UserController ichida UserService kerak. Spring UserService obyektini o‘zi yaratib, controller’ga beradi.
Bu jarayon Dependency Injection deyiladi.
15. Boshlang'ich developer uchun eng muhim xulosa
Spring’ni hozircha shunday tushun:
Spring Framework - Java backend uchun asosiy framework
Spring Boot - Spring loyihani tez va oson yaratish vositasi
Spring Cloud - microservice va cloud tizimlar uchun qo‘shimcha vositalarSpring Boot boshlang'ich developer uchun eng kerakli qism.
16. Eslab qolish kerak bo‘lgan terminlar
Termin | Ma’nosi |
|---|---|
Spring | Java backend framework ekotizimi |
Spring Boot | Spring app’ni tez yaratish vositasi |
Bean | Spring boshqaradigan obyekt |
IoC | Object boshqaruvini Spring’ga topshirish |
DI | Kerakli obyektni class ichiga berish |
Starter | Tayyor dependency to‘plami |
Auto-configuration | Avtomatik sozlash |
Spring Initializr | Loyiha generatori |
ApplicationContext | Spring container |
17. Kichik amaliy vazifa
Birinchi Spring Boot endpoint:
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Salom, Spring!";
}
}Brauzerda:
http://localhost:8080/helloNatija:
Salom, Spring!18. Interview uchun sodda javob
Savol:
Spring nima?
Javob:
Spring - Java’da backend ilovalar yaratish uchun ishlatiladigan framework. U objectlarni boshqaradi, dependency injection qiladi, web API, database, transaction, security kabi ko‘p narsalarni osonlashtiradi. Spring Boot esa Spring asosida loyihani tez ishga tushirish va kamroq konfiguratsiya bilan ishlash uchun yaratilgan.