Trong phần cuối cùng này chúng ta sẽ cùng nói về Spring Data Access, Aspect Oriented Programming (AOP), Spring MVC.
Spring Data Access
42. Sử dụng JDBC hiệu quả trong Spring framework
Khi sử dụng Spring JDBC framework gánh nặng về việc quản lý resource và lỗi sẽ giảm bớt khá nhiều. Vì thế developer chỉ cần viết statement và query để set và get data từ database. JDBC có thể sử dụng một cách hiệu quả bằng việc sử dụng các template class được cung cấp bởi Spring framework, hay còn gọi là JdbcTemplate.
43. JdbcTemplate
JdbcTemplate clas cung cấp nhiều method tiện lợi cho việc convert database data thành primitive type hay object, execute prepared và callable statement, và cuối cùng nó cũng cung cấp việc handling database error dễ dàng hơn.
44. Spring DAO support
Data Access Object (DAO) mục đích hướng đến tạo nên sự dễ dàng để làm việc với các công nghệ để access database như JDBC, Hibernate, JPA tiện lợi hơn. Nó cho phép chúng ta dễ dàng thay đổi giữa các công nghệ database lưu chữ khác nhau một cách dễ dàng mà không phải lo lắng về việc thay đổi code hay catch exception cho từng công nghệ cụ thể.
45. Sử dụng Hibernate trong Spring
Có hai cách để tích hợp Hibernate với Spring,
- IoC với Hibernate Template và Callback
- Extend HibernateDAOSupport và appy AOP Interceptor.
46. Spring hỗ trợ những ORM nào?
Hibernate, iBatis, JPA (Java Persistence API), TopLink, JDO (Java Data Objects), OJB.
47. Tích hợp Hibernate với Spring sử dụng HibernateDAOSupport
Sử dụng Spring SessionFactory gọi LocalSessionFactory. Tích hợp gồm ba bước.
- Config Hibernate SessionFactory
- Extend DAO implementation từ HibernateDAOSupport
- Wire Transaction support với AOP
48. Spring hỗ trợ những kiểu quản lý transaction nào?
Spring hỗ trợ hai kiểu quản lý transaction:
- Programmatic transaction management: Có nghĩa là bạn có thể quản lý transaction với việc lập trình. Điều này khiến mọi việc trở nên vô cùng tường minh và linh hoạt, tuy nhiên rất khó để maintain.
- Declarative transaction management: Có nghĩa là bạn phải tách biệt phần quản lý transaction với business code. Chỉ sử dụng annotaion hoặc XML config để manage transaction.
49. Lợi ích của việc quản lý transaction bằng Spring Framework
- Cung cấp một phương thức lập trình thích hợp cho việc sử dụng các transaction API khác nhau như JDBC, Hibernate, JPA.
- Cung cấp API đơn giản hơn.
- Tiện lợi trong việc khai báo và sử dụng với Declarative transaction management.
- Tích hợp dễ dàng với các data access abstraction.
50. Nên sử dụng kiểu quản lý transaction như thế nào?
Phần lớn những người sử dụng Spring framework đều chọn sử dụng Declarative transaction management bởi vì nó giúp giảm thiểu việc tác động tới application code.
Spring Aspect Oriented Programming (AOP)
51. AOP
AOP là kỹ thuật cho phép developer module hóa các hành vị cắt ngang những thành phần khác ví dụ như logging hay transaction management.
52. Khía cạnh (Aspect)
Cốt lõi để xây dựng lên AOP chính là aspect, các khía cạnh sẽ bao đóng các hành vi ảnh hưởng trên nhiều class thành các module có thể tái sử dụng. Ví dụ logging module có thể gọi là AOP aspect của việc ghi log. Một application có thể có nhiều khía cạnh khác nhau phụ thuộc vào requirement. Trong Spring AOP, aspect được implement như một class thông thường với annotation @Aspect.
53. Sự khác nhau giữa concern và cross-cutting concern trong Spring AOP
Các mối quan tâm (concern) là những hành vi chúng ta muốn có trong module của ứng dụng. Một mối quan tâm có thể được khai báo như một function chúng ta muốn implement.
Những mối quan tâm xuyên suốt (cross-cutting concern) là những mối quan tâm apply trên tổng thể ứng dụng và ảnh hướng trên toàn bộ ứng dụng.
54. Join point
Là khái niệm mô tả nơi mà hành động được thực hiện sử dụng AOP aspect.
55. Advice
Advice là hành động sẽ xảy ra trước hoặc sau khi method được thực thi. Về bản chất đây sẽ là một đoạn code invoke vào quá trình thực thi bởi Spring AOP framework.
Có năm loại advice như sau.
- before: chạy trước khi phương thức được thực thi.
- after: Chạy sau khi phương thức được thực thi và không quan trọng kết quả của phương thức đó là gì.
- after-returning: Chạy sau khi phương thức được thực thi thành công.
- after-throwing: Chạy sau khi phương thức được thực thi nhưng throw exception.
- around: Chạy cả trước và sau khi phương thức được thực thi.
56. Pointcut
Pointcut bao gồm một hoặc nhiều join point. Có thể xác định pointcut bằng cách sử dụng expression hoặc pattern.
57. Introduction là gì?
Introduction cho phép chúng ta thêm mới method hoặc attribute vào trong những class đã tồn tại.
58. Target object là gì?
Là object được advise bởi một hoặc nhiều aspect. Nó luôn luôn là một proxy object và refer đến một advised object.
59. Proxy là gì?
Là một object được tạo ra sau khi apply advise vào một target object.
60. Các loại AutoProxying
- BeanNameAutoProxyCreator
- DefaultAdvisorAutoProxyCreator
- Metadata autoproxying
61. Weaving là gì?
Weaving là một tiến trình của việc kết nối các aspect với các object trong application để tạo ra advised object. Việc này có thể hoàn tất trong compile time, load time hoặc runtime.
62. XML Schema-based aspect implementation
Với cách implement này, aspect sử dụng các class thông thường và được config bởi XML.
63. Annotation-based (@AspectJ based) aspect implementation
Cách implement này hướng đến việc khai báo aspect như một Java class với annotation bên trong.
Spring Model View Controller (MVC)
64. Spring MVC framework là gì?
Là một framework hoàn chỉnh cho việc xây dụng MVC web application.
65. DispatcherServlet
Spring Web MVC framework được thiết kế xoay quanh DispatcherServlet, cái mà sẽ handle tất cả các HTTP request cũng như reponse.
66. WebApplicationContext
WebApplicationContext là một phiên bản mở rộng của ApplicationContext, nó đưa ra những feature cần thiết cho web application. Nó khác với ApplicationContext ở chỗ nó có thể giải quyết các vấn đề về template, theme, và biết được servlet liên kết với cái gì.
67. Controller trong Spring MVC framework là cái gì?
Controller cung cấp phương thức truy xuất vào hành vi của application mà bạn phải khai báo thông qua service interface. Controller biến user input thành model để hiển thị lên view.
68. @Controller annotation
@Controller được gắn với class cụ thể thể biến class đó thành controller. Spring không bắt buộc bạn phải extend bất cứ controller base class hay reference tới Servlet API nào. Chỉ đơn giản là annotate class với @Controller.
69. @RequestMapping annotation
@RequestMapping sử dụng để map URL với một class hay phương thức xử lý cụ thể nào đỏ.
Đến đây là hết, hy vọng qua loạt bài này, các bạn đã và đang làm việc với Spring sẽ củng cố lại phần nào kiến thức để có thể trả lời trơn tru các câu hỏi của nhà tuyển dụng.