Dự án mẫu sử dụng Java Spring Boot để minh họa các khái niệm IoC, Dependency Injection (DI), và Spring Bean trong môn học Lập trình Java nâng cao.
- Giải thích và minh họa IoC (Inversion of Control) – kỹ thuật tách biệt việc tạo và quản lý đối tượng.
- Áp dụng DI (Dependency Injection) để tự động tiêm đối tượng vào các lớp cần dùng.
- Tạo và sử dụng Spring Bean bằng cả 2 cách:
- Tự động với
@Component
,@Service
,@Controller
- Thủ công với
@Configuration
và@Bean
- Tự động với
spring-ioc-demo/
├── controller/ → Web controller dùng @Controller
├── service/ → Interface & Implementation của service
├── model/ → Định nghĩa lớp Lecturer
├── config/ → Lớp AppConfig định nghĩa Bean thủ công
├── templates/ → View Thymeleaf (HTML)
├── static/ → CSS/JS (nếu có)
├── application.properties
├── SpringIocDemoApplication.java
└── pom.xml
git clone https://github.com/yourusername/spring-ioc-demo.git
cd spring-ioc-demo
mvn clean install
mvn spring-boot:run
http://localhost:8080/lecturers
Spring sẽ chịu trách nhiệm khởi tạo và quản lý vòng đời của các Bean, thay vì để lập trình viên tự tạo.
- Constructor Injection: LecturerController nhận LecturerService qua constructor.
public LecturerController(LecturerService lecturerService) {
this.lecturerService = lecturerService;
}
- Spring tự động inject Bean phù hợp.
- Cách 1: Tự động tạo Bean
@Service
public class LecturerServiceImpl implements LecturerService {
...
}
- Cách 2: Tạo Bean thủ công
@Configuration
public class AppConfig {
@Bean
public LecturerService lecturerService() {
return new LecturerServiceImpl();
}
}
Giao diện đơn giản dùng Thymeleaf hiển thị danh sách giảng viên.
Danh sách giảng viên:
- Nguyễn Văn A – Công nghệ phần mềm
- Trần Thị B – Khoa học máy tính
- Java 17 trở lên
- Maven 3.8+
- Spring Boot 3.3.2
- Trình duyệt hỗ trợ UTF-8
- Thêm chức năng thêm giảng viên bằng form HTML
- Kết nối với database thật (JPA + H2 hoặc MySQL)
- Dùng field injection hoặc setter injection để so sánh
- Giao diện HTML + CSS Bootstrap đẹp hơn
- 📘 Đề tài: Khái niệm IoC, DI và Spring Bean
- 👨🏫 Môn học: Lập trình Java nâng cao
- 🧑💻 Sinh viên: Hoàng Nghĩa Minh Bảo
- 🏫 Trường: Trường Đại học Đà Lạt
Dự án được phát hành theo giấy phép MIT. Xem chi tiết tại LICENSE.