جاواپرو | برنامه نویسی جاوا | Java
5.89K subscribers
1.15K photos
158 videos
383 files
1.3K links
🎓آکـــــــــادمی جاواپـــــــــــــــرو
آموزش پیش نیازهای برنامه نویسی
آموزش مقدماتی تا پیشرفته جاوا
آموزش Spring Boot
سفارش پروژه ، دوره و تدریس خصوصی: @rzutab
مشاهده دوره ها و ثبت نام👇
wwww.academyjavapro.com
گروه جاوا : @group_javapro
Download Telegram
به آموزش های دواپس نظیر داکر، کوبرنتیز، کافکا، داکر در کنار جاوا و فریمورک های آن در آکادمی جاواپرو پرداخته شود؟
Anonymous Poll
95%
بله
5%
خیر
در کنار آموزش جاوا و فریمورک های آن، آیا به آموزش اوراکل هم پرداخته شود؟
Anonymous Poll
75%
بله
25%
خیر
ویژگی های جدید Spring Boot 4

امروز ۱۶ آذر ۱۴۰۴ و تنها چند ماه از انتشار رسمی Spring Boot 4 می‌گذرد.

در یک ویدئوی ۳۴ دقیقه‌ای به‌صورت کاملاً عملی به سراغ نسخه جدید می‌رویم

این ویدئو رایگان مناسب افرادی است که می‌خواهند خیلی سریع با Spring Boot 4 آشنا شوند و بدانند دقیقاً چه امکانات تازه‌ای در اختیارشان قرار گرفته است.

مشاهده


#جاوا #اسپرینگ #اسپرینگ_بوت #اسپرینگ_بوت_4 #spring #spring_boot
3
📌 آشنایی مقدماتی با Spring و Spring Boot

سلام دوستان عزیز
در این پیام قصد داریم به عنوان نخستین گام، با مفاهیم اولیه‌ی فریمورک Spring و دلیل استفاده از آن در پروژه‌های جاوا آشنا شویم. این بخش نقطه‌ی شروع ما برای یادگیری کامل Spring Boot خواهد بود.


۱) مقدمه‌ای بر Spring Framework

«اسپرینگ» یک فریمورک متن‌باز و بسیار قدرتمند برای ساخت سیستم‌های سازمانی در جاوا است. این فریمورک به دلیل انعطاف‌پذیری بالا، معماری ماژولار و پشتیبانی از توسعه‌ی تمیز و قابل تست، به یکی از استانداردهای اصلی برنامه‌نویسی بک‌اند تبدیل شده است.
پیش از اسپرینگ، توسعه‌ی نرم‌افزارهای سازمانی در جاوا بسیار پیچیده بود و فناوری‌هایی مانند EJB (Enterprise JavaBeans) کدنویسی را سنگین و زمان‌بر می‌کردند. اسپرینگ دقیقا برای حل این مشکلات و ساده‌سازی توسعه معرفی شد.


۲) مفهوم IoC و چرایی اهمیت آن

«وارونه‌سازی کنترل» یا IoC اساس کار اسپرینگ است. در برنامه‌نویسی سنتی، ما کنترل ساخت اشیا را بر عهده می‌گیریم؛ اما در اسپرینگ این مسئولیت به فریمورک سپرده می‌شود. این موضوع باعث می‌شود وابستگی‌ها مدیریت‌شده، تست‌پذیری بسیار بهتر و پیچیدگی کمتر شود.

برای نمونه، فرض کنید سرویسی داریم که برای ارسال پیام به یک پیام‌رسان نیازمند یک کلاس دیگر است. در روش سنتی شئ را خودمان می‌سازیم؛ اما در اسپرینگ فقط اعلام می‌کنیم که «این سرویس به آن پیام‌رسان نیاز دارد» و اسپرینگ خودش آن را می‌سازد و تزریق می‌کند:


@Service
public class MessageService {

private final Messenger messenger;

public MessageService(Messenger messenger) {
this.messenger = messenger;
}

public void send() {
messenger.sendMessage("Hello Spring");
}
}


این ساختار، پایه‌ی ایجاد سیستم‌های بزرگ و قابل نگهداری است.


۳) Spring Boot و نقش آن در ساده‌سازی توسعه

«اسپرینگ بوت» نسخه‌ای بالادستی از اسپرینگ است که با حذف تنظیمات پیچیده و ارائه‌ی کانفیگ‌های آماده، زمان توسعه را تا حد قابل‌توجهی کاهش می‌دهد. در گذشته برای راه‌اندازی یک پروژه اسپرینگ باید ده‌ها فایل XML و تنظیمات مختلف را آماده می‌کردیم؛ اما Spring Boot همه‌ی این موارد را خودکار انجام می‌دهد.

برای نمونه، با ساخت یک پروژه جدید در Spring Initializr می‌توانید تنها با چند کلیک یک برنامه اجراپذیر بسازید و آن را توسط دستور زیر اجرا کنید:


mvn spring-boot:run


همین قابلیت باعث شد Spring Boot به محبوب‌ترین گزینه برای توسعه‌ی API، میکروسرویس و سیستم‌های مدرن تبدیل شود.


۴) جمع‌بندی و مسیر ادامه

«نتیجه‌گیری» این است که اسپرینگ با معرفی IoC و Spring Boot، توسعه‌ی جاوا را سریع‌تر، ساده‌تر و حرفه‌ای‌تر کرده است. در پیام‌های بعدی محیط پروژه را بررسی کرده، ساختار پکیج‌بندی را توضیح می‌دهیم و سپس وارد کدنویسی عملی می‌شویم.


#Spring


🆔 @javapro_ir
🆔 @group_javapro
👍61
در صورتی در ورود یا ثبت نام در سایت آکادمی جاواپرو دچار مشکل شدید و نیاز به راهنمایی داشتید به پشتیبان جاواپرو به آی دی زیر پیام بدید:
@rzutab

academyjavapro.com
فریمورک Spring Batch چیست؟

ر Spring Batch یک فریم‌ورک متن‌باز برای پردازش دسته‌ای (Batch Processing) است. این فریم‌ورک یک راهکار سبک اما جامع به شمار می‌رود که با هدف توسعه برنامه‌های Batch پایدار و قابل‌اعتماد طراحی شده است؛ برنامه‌هایی که معمولاً در سامانه‌های سازمانی مدرن به‌وفور یافت می‌شوند. Spring Batch بر پایه رویکرد توسعه مبتنی بر POJO در Spring Framework بنا شده است.

فریمورک Spring Batch مجموعه‌ای از قابلیت‌های قابل‌استفاده‌مجدد ارائه می‌دهد که برای پردازش حجم بالای رکوردها حیاتی هستند؛ از جمله لاگ‌گیری و رهگیری، مدیریت تراکنش، آمار پردازش Job، قابلیت ادامه اجرای Job (Restart)، نادیده‌گیری خطاها (Skip) و مدیریت منابع.
این فریم‌ورک همچنین سرویس‌های فنی پیشرفته و قابلیت‌هایی ارائه می‌دهد که با استفاده از تکنیک‌های بهینه‌سازی و پارتیشن‌بندی (Partitioning)، امکان اجرای Jobهای بسیار حجیم و با کارایی بالا را فراهم می‌سازد.
چه Jobهای ساده و چه Jobهای پیچیده و حجیم، همگی می‌توانند با بهره‌گیری از Spring Batch به‌صورت بسیار مقیاس‌پذیر، حجم قابل‌توجهی از داده‌ها را پردازش کنند.

فریمورک Spring Batch بخشی از پورتفوی Spring به شمار می‌رود.

نسخه 1.0.0 این فریم‌ورک در مارس 2008 منتشر شد و نسخه 2.0.0 نیز در آوریل 2009 در دسترس عموم قرار گرفت.

منبع: ویکی پدیا


🆔 @javapro_ir
🆔 @group_javapro
... بزودی در آکادمی جاواپرو دوره فریمورک Spring Batch را برگزار خواهیم کرد.

تخصصی که بعد از یادگیری شما را از یک برنامه نویس معمولی Spring Boot به یک متخصص طراحی و پیاده سازی پردازش های دسته ای و Enterprise-Ready تبدیل می کند.

شما در این دوره مهارت هایی یاد خواهید گرفت که در پروژه های بزرگ بانکی، بیمه، تجارت الکترونیک کاملا ارزشمند است و اکثر شرکت ها دنبال چنین تجربه ای هستند.


🆔 @javapro_ir
🆔 @group_javapro
3
جاواپرو | برنامه نویسی جاوا | Java pinned «... بزودی در آکادمی جاواپرو دوره فریمورک Spring Batch را برگزار خواهیم کرد. تخصصی که بعد از یادگیری شما را از یک برنامه نویس معمولی Spring Boot به یک متخصص طراحی و پیاده سازی پردازش های دسته ای و Enterprise-Ready تبدیل می کند. شما در این دوره مهارت هایی…»
جاواپرو | برنامه نویسی جاوا | Java
📌 آشنایی مقدماتی با Spring و Spring Boot سلام دوستان عزیز در این پیام قصد داریم به عنوان نخستین گام، با مفاهیم اولیه‌ی فریمورک Spring و دلیل استفاده از آن در پروژه‌های جاوا آشنا شویم. این بخش نقطه‌ی شروع ما برای یادگیری کامل Spring Boot خواهد بود. ۱) مقدمه‌ای…
ساختار پروژه در Spring Boot و اجرای اولین برنامه

سلام دوستان عزیز
در ادامه‌ی مسیر آموزشی Spring Boot، در این پیام با ساختار استاندارد پروژه آشنا می‌شویم و اولین برنامه‌ی قابل اجرا را ایجاد می‌کنیم. درک ساختار پروژه از مهم‌ترین قدم‌ها برای نوشتن یک سیستم تمیز و حرفه‌ای است.


۱) ساخت یک پروژه جدید با Spring Initializr

«آغاز» کار با Spring Boot معمولاً از سرویس Spring Initializr شروع می‌شود. این سرویس به شما امکان می‌دهد با چند انتخاب ساده، یک پروژه‌ی آماده برای اجرا بسازید.
برای این کار کافی است وارد سایت Initializr شوید و موارد زیر را انتخاب کنید:

* زبان: Java
* نوع پروژه: Maven
* نسخه‌ی Spring Boot
* وابستگی‌ها: Web (برای ساخت API)

پس از ایجاد پروژه، آن را در IntelliJ یا Eclipse باز کنید.


۲) ساختار پوشه‌ها در Spring Boot

«ساختار» پروژه‌های Spring Boot به صورت پیش‌فرض معنی‌دار است و هر بخش هدف مشخصی دارد. یک پروژه‌ی ساده معمولاً شامل این بخش‌هاست:


src
└── main
├── java
│ └── com.example.demo
│ ├── DemoApplication.java
│ ├── controller
│ ├── service
│ └── repository
└── resources
├── application.properties
└── static / templates


«پوشه‌ی java» شامل کدهای برنامه است. فایل اصلی پروژه (مثلاً DemoApplication) در همین بخش قرار دارد.
«پوشه‌ی controller» مسئول مدیریت درخواست‌های کاربر است.
«پوشه‌ی service» محل نوشتن منطق اصلی برنامه است.
«پوشه‌ی repository» برای تعامل با دیتابیس استفاده می‌شود.
«پوشه‌ی resources» شامل تنظیمات و فایل‌های استاتیک است.


۳) اجرای اولین برنامه Spring Boot

«اجرای» برنامه در اسپرینگ بسیار ساده است. فایل اصلی پروژه معمولاً مانند مثال زیر است:


@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}


این فایل نقطه‌ی شروع برنامه است. با اجرای آن، یک سرور داخلی (Tomcat) به طور خودکار بالا می‌آید.

برای اجرای پروژه می‌توانید از یکی از روش‌های زیر استفاده کنید:

* اجرای مستقیم کلاس DemoApplication در محیط IntelliJ
* یا اجرای دستور زیر در ترمینال:


mvn spring-boot:run


پس از اجرا، مرورگر را باز کرده و آدرس زیر را وارد کنید:


https://localhost:8080


اگر برنامه بدون خطا اجرا شود، یعنی Spring Boot آماده‌ی سرویس‌دهی است.


۴) اضافه کردن اولین کنترلر

«ایجاد» یک کنترلر نخستین قدم برای ساخت یک API است. مثال زیر یک کنترلر ساده را نشان می‌دهد:


@RestController
public class HelloController {

@GetMapping("/hello")
public String hello() {
return "Hello Spring Boot!";
}
}


اکنون با ورود به https://localhost:8080/hello خروجی ظاهر می‌شود.


۵) جمع‌بندی پیام

«نتیجه» این است که با ساختار پروژه و نحوه‌ی اجرای اولین برنامه‌ی Spring Boot آشنا شدیم. در پیام بعدی وارد توضیح کامل‌تر لایه‌ها (Controller, Service, Repository) می‌شویم و معماری تمیز پروژه را بررسی خواهیم کرد.

#Spring


🆔 @javapro_ir
🆔 @group_javapro
👍42
📚دوره آموزشی Spring Batch

با شروع دوره Spring Batch چه ارزشی به دانشجویان شرکت کننده اضافه می شود؟

✳️یادگیری پردازش داده‌های دسته‌ای (Batch Processing) که پایه بسیاری از سیستم‌های بانکی، بیمه، بیمه سلامت و تجارت الکترونیک است.

✳️درک معماری و مفاهیم Enterprise Batch مثل Job, Step, Chunk Processing، Retry/Skip، Transaction Management.

✳️توانایی طراحی Pipelineهای پردازشی قابل اطمینان و مقیاس‌پذیر.

✳️مهارت در مدیریت خطا، Restartability و fault tolerance برای سیستم‌های تولید واقعی.

✳️تجربه عملی با Spring Batch و Spring Boot و آشنایی با JobRepository، Listeners و Monitoring.

✳️آماده‌سازی برای بازار کار Enterprise Java و سیستم‌هایی که حجم داده زیاد دارند.


⚠️در حال حاضر پذیریش دانشجو نداریم و ثبت نام این دوره بسته است ولی می توانید سرفصل ها و جزییات دوره را در لینک زیر مشاهده کنید:

https://academyjavapro.com/product/spring-batch/
2😍1
جاواپرو | برنامه نویسی جاوا | Java
ساختار پروژه در Spring Boot و اجرای اولین برنامه سلام دوستان عزیز در ادامه‌ی مسیر آموزشی Spring Boot، در این پیام با ساختار استاندارد پروژه آشنا می‌شویم و اولین برنامه‌ی قابل اجرا را ایجاد می‌کنیم. درک ساختار پروژه از مهم‌ترین قدم‌ها برای نوشتن یک سیستم تمیز…
📌 معرفی معماری لایه‌ای در Spring Boot (Controller, Service, Repository)

سلام دوستان عزیز
در این پیام قصد داریم معماری استاندارد پروژه‌های Spring Boot را بررسی کنیم. این معماری به ما کمک می‌کند برنامه‌هایی قابل نگهداری، منظم و قابل توسعه ایجاد کنیم. پروژه‌های حرفه‌ای در صنعت تقریباً همگی از همین الگو استفاده می‌کنند.


۱) مفهوم معماری لایه‌ای

«معماری» در پروژه‌های اسپرینگ معمولاً به صورت لایه‌ای طراحی می‌شود. هر لایه وظیفه‌ی مشخصی دارد و با لایه‌های دیگر در حد نیاز ارتباط برقرار می‌کند. این معماری باعث می‌شود کدها جدا از هم، قابل تست و قابل توسعه باشند. سه لایه‌ی اصلی عبارت‌اند از:

* لایه‌ی Controller
* لایه‌ی Service
* لایه‌ی Repository

در ادامه هر لایه را با مثال توضیح می‌دهیم.


۲) لایهٔ Controller

«کنترلر» مسئول دریافت درخواست از سمت کاربر (Client) و برگرداندن پاسخ مناسب است. کنترلر هیچ منطق تجاری پیچیده‌ای را اجرا نمی‌کند؛ بلکه فقط درخواست را دریافت کرده، آن را به لایهٔ Service می‌سپارد و پاسخ نهایی را بازمی‌گرداند.

مثال از یک کنترلر ساده:

@RestController
@RequestMapping("/users")
public class UserController {

    private final UserService userService;

    public UserController(UserService userService) {
        this.userService = userService;
    }

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }
}


در این مثال کنترلر فقط درخواست را دریافت کرده و کار اصلی را به سرویس می‌سپارد.


۳) لایهٔ Service

«سرویس» قلب منطق برنامه است. تمام قوانین، پردازش‌ها، محاسبات و تعامل با Repository در این بخش انجام می‌شود. این لایه نباید مستقیماً با وب مواجه شود؛ یعنی نباید @GetMapping یا @PostMapping داخل سرویس باشد.

مثال از یک سرویس:

@Service
public class UserService {

    private final UserRepository userRepository;

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

    public User getUserById(Long id) {
        return userRepository.findById(id)
                .orElseThrow(() -> new RuntimeException("User not found"));
    }
}


در این لایه تصمیم گرفته می‌شود که اگر کاربر وجود نداشت چه اتفاقی بیفتد یا چه پردازشی انجام شود.


۴) لایهٔ Repository

«مخزن» یا Repository وظیفه‌ی ارتباط با دیتابیس را برعهده دارد. در Spring Data JPA نیازی نیست برای هر عملیات CRUD کد بنویسیم؛ بلکه با ارث‌بری از JpaRepository همه‌ی امکانات پایه را دریافت می‌کنیم.

مثال Repository:

@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}


این Repository بدون نوشتن حتی یک خط کد اضافه، عملیات‌هایی مانند ذخیره، حذف و جستجو را فراهم می‌کند.


۵) ارتباط بین لایه‌ها

«ارتباط» بین لایه‌ها باید فقط در یک جهت باشد:

Controller → Service → Repository

این ساختار باعث می‌شود منطق برنامه منسجم، قابل گسترش و قابل تست باشد. کنترلر فقط درخواست را دریافت می‌کند، سرویس منطق را اجرا می‌کند و Repository دیتا را از دیتابیس می‌گیرد.


۶) جمع‌بندی پیام

«نتیجه» این است که با معماری لایه‌ای استاندارد در Spring Boot آشنا شدیم و دیدیم چگونه هر لایه نقش مشخصی دارد. در پیام بعدی وارد بخش جذاب بعدی می‌شویم؛ یعنی نحوهٔ مدیریت Bean‌ها و نقش Annotationهایی مثل @Component و @Service و @Repository.

#Spring


🆔 @javapro_ir
🆔 @group_javapro
👍62
📣اطلاعیه
... به دلیل بروزرسانی فنی، سایت جاواپرو این هفته ممکن است با اختلال همراه شود.
از صبر و شکیبایی شما سپاسگزاریم.

javapro.ir
academyjavapro.com
1
جاواپرو | برنامه نویسی جاوا | Java
📌 معرفی معماری لایه‌ای در Spring Boot (Controller, Service, Repository) سلام دوستان عزیز در این پیام قصد داریم معماری استاندارد پروژه‌های Spring Boot را بررسی کنیم. این معماری به ما کمک می‌کند برنامه‌هایی قابل نگهداری، منظم و قابل توسعه ایجاد کنیم. پروژه‌های…
📌 مدیریت Beanها و آشنایی با Component Scan در Spring Boot

سلام دوستان عزیز
در این پیام با یکی از مهم‌ترین مفاهیم اساسی Spring Boot آشنا می‌شویم؛ یعنی Beanها و نحوه‌ی مدیریت آن‌ها توسط فریمورک اسپرینگ. درک این بخش برای فهم عمیق IoC و Dependency Injection کاملاً ضروری است.


۱) مفهوم Bean در Spring

«بین» در اسپرینگ به هر شیئی گفته می‌شود که توسط Spring Container ساخته، مدیریت و نگهداری می‌شود. به بیان ساده، هر کلاسی که اسپرینگ مسئول ساخت آن باشد، یک Bean محسوب می‌شود.
این مدیریت شامل ساخت شیء، تزریق وابستگی‌ها، تعیین طول عمر و نابودی آن است.

به طور مثال، کلاسی که با Annotation خاصی علامت‌گذاری شود، به صورت خودکار به یک Bean تبدیل می‌شود.


۲) نقش Spring Container

«کانتینر» اسپرینگ محیطی است که تمام Beanها را در خود نگهداری می‌کند. این کانتینر هنگام اجرای برنامه فعال می‌شود و بر اساس تنظیمات و Annotationها، اشیاء موردنیاز را می‌سازد و به هم متصل می‌کند.

زمانی که در کنترلر یا سرویس از یک کلاس دیگر استفاده می‌کنیم، در واقع از Container درخواست می‌کنیم که آن Bean را در اختیار ما قرار دهد.


۳) Annotationهای معرفی Bean

«نشانه‌گذاری» در اسپرینگ معمولاً از طریق Annotationها انجام می‌شود. مهم‌ترین Annotationها برای معرفی Bean عبارت‌اند از:

@Component
public class EmailSender {
    public void send() {
        System.out.println("Sending email...");
    }
}


علاوه بر @Component، سه Annotation تخصصی‌تر نیز وجود دارد:

* @Controller برای لایه کنترلر
* @Service برای منطق برنامه
* @Repository برای دسترسی به دیتابیس

از نظر عملکرد همگی Bean هستند، اما از نظر مفهومی نقش متفاوتی دارند.


۴) مفهوم Component Scan

«اسکن» کامپوننت فرآیندی است که طی آن Spring Boot به صورت خودکار کلاس‌های علامت‌گذاری‌شده را پیدا می‌کند و آن‌ها را به عنوان Bean ثبت می‌کند.
این اسکن به صورت پیش‌فرض از پکیجی که کلاس اصلی برنامه در آن قرار دارد آغاز می‌شود و تمام زیرپکیج‌ها را بررسی می‌کند.

به همین دلیل توصیه می‌شود همه‌ی پکیج‌ها زیر پکیج اصلی پروژه قرار گیرند.


۵) تزریق وابستگی با Constructor Injection

«تزریق» وابستگی در اسپرینگ معمولاً از طریق سازنده انجام می‌شود که بهترین و امن‌ترین روش است. مثال زیر نحوه‌ی تزریق یک Bean به Bean دیگر را نشان می‌دهد:

@Service
public class NotificationService {

    private final EmailSender emailSender;

    public NotificationService(EmailSender emailSender) {
        this.emailSender = emailSender;
    }

    public void notifyUser() {
        emailSender.send();
    }
}


در این مثال، Spring خودش Bean مربوط به EmailSender را ساخته و به NotificationService تزریق می‌کند.


۶) چرایی اهمیت Bean Management

«اهمیت» مدیریت Beanها در این است که برنامه بدون وابستگی شدید بین کلاس‌ها نوشته می‌شود. این موضوع باعث افزایش خوانایی، تست‌پذیری و توسعه‌پذیری پروژه می‌شود و یکی از دلایل اصلی قدرت Spring محسوب می‌گردد.


۷) جمع‌بندی پیام

«نتیجه» این است که Beanها اجزای اصلی برنامه‌های Spring Boot هستند و Spring Container با استفاده از Component Scan آن‌ها را شناسایی و مدیریت می‌کند. در پیام بعدی وارد مبحث بسیار مهم Scope Beanها (Singleton و Prototype) و طول عمر اشیاء در اسپرینگ می‌شویم.

#Spring


🆔 @javapro_ir
🆔 @group_javapro
👍4
تحلیل سلسله مراتبی فیلترها در Spring Cloud Gateway

در این مقاله با معماری فیلترها در Spring Cloud Gateway آشنا می‌شوید و نقش WebFilter، GlobalFilter و GatewayFilter در زنجیره پردازش درخواست‌ها را بررسی می‌کنیم.

مشاهده مقاله

🆔 @javapro_ir
🆔 @group_javapro