
Java/Spring 테스트를 추가하고 싶은 개발자들의 오답노트
김우근
Spring에 테스트를 넣는 방법을 알려드립니다! 더 나아가 자연스러운 테스트를 할 수 있게 스프링 설계를 변경하는 방법을 배웁니다.
Cơ bản
TDD, 소프트웨어 테스트, unittest
Bây giờ bạn đã biết một chút về Spring và JPA, bạn nên học gì và học như thế nào để phát triển trong tương lai? Bạn đang nghiên cứu các mẫu thiết kế và ghi nhớ chúng để nghiên cứu thiết kế? Hãy để tôi giúp bạn!

Sửa các lỗi thường gặp của nhà phát triển cấp dưới
Sửa các lỗi phổ biến mà Junior Developer mắc phải khi sử dụng Spring
Sửa chữa những hiểu lầm không chính xác về các thực thể/phụ thuộc, v.v.
Tóm tắt các khái niệm cần thiết cho thực hành (MSA, ACL, v.v.)
Tóm tắt các khái niệm cơ sở hạ tầng/mạng cần thiết cho nhà phát triển back-end
Cách viết mã hướng đối tượng trong môi trường Spring (TDA, v.v.)
Bạn có phải là một nhà phát triển mới vào nghề đang tìm cách phát triển không?
Sổ tay ghi chép những lỗi sai để lên cấp hiệu quả!
"Tôi nên học gì bây giờ? Nền tảng nào sẽ giúp tôi học tốt?"
"Tôi có nên tìm hiểu sâu về cơ sở hạ tầng không? Tôi có nên học Spring Security không?"
Tôi sẽ giúp bạn tránh việc mua sách một cách mù quáng và học bất kỳ công nghệ hay khái niệm cụ thể nào. Việc học các công nghệ nền tảng như cơ sở hạ tầng (NoSQL, Message Queue, v.v.) hay Spring Security chưa chắc đã cải thiện kỹ năng phát triển của bạn! Khóa học này tập trung vào nội dung thiết thực, thiết yếu, được giải thích ngắn gọn trong thời gian ngắn.
Tôi sẽ giúp bạn sửa những lỗi phát triển thường gặp ở các nhà phát triển mới vào nghề, dựa trên kinh nghiệm xem xét mã trong nhiều năm của tôi!
Bạn có thể giải thích sự khác biệt giữa dependency injection và dependency inversion được không? Để tôi làm rõ một số khái niệm mơ hồ mà tôi đã thuộc lòng.
Tôi sẽ cho bạn biết lý do tại sao bạn cần mã kiểm tra và tại sao việc viết mã kiểm tra lại dẫn đến thiết kế tốt.
Bạn có gặp khó khăn trong việc theo kịp cuộc họp không? Hãy để tôi tóm tắt các khái niệm bạn cần cho công việc thực tế (MSA, ACL, v.v.)
...bằng cách đảo ngược mối quan hệ phụ thuộc truyền thống trong đó các lớp cao hơn (quyết định chính sách) phụ thuộc vào các lớp thấp hơn (chi tiết), các lớp cao hơn có thể trở nên độc lập với việc triển khai các lớp thấp hơn. (Từ Wikipedia, " Nguyên tắc đảo ngược phụ thuộc ")
Vậy điều này có nghĩa là gì? 🙄 Một lời giải thích theo kiểu hỏi đáp bách khoa toàn thư mà không có ý nghĩa gì thì không phải là câu trả lời!
Bạn cần biết khái niệm chính xác để có thể giải thích nó bằng lời của mình.
Trong nhiều năm qua, tôi đã gặp vô số lập trình viên mới vào nghề với tư cách là người cố vấn. Và trong quá trình cố vấn, tôi thường đặt ra cho họ những câu hỏi và câu trả lời giống nhau. Điều này khiến tôi nghĩ rằng sẽ rất tuyệt nếu có một khóa học chuyên sâu về chủ đề này. Khóa học này là tổng hợp những câu hỏi và câu trả lời phổ biến mà tôi nhận được từ các lập trình viên mới vào nghề với tư cách là người cố vấn .
Tình trạng của hầu hết các nhà phát triển mới vào nghề mà tôi từng thấy đều như thế này.
Nhưng tôi không biết bước tiếp theo nên là gì. 🤷♂️ Tuy nhiên, với thời gian rảnh rỗi của mình... tôi cần phải học thêm một cái gì đó, vì vậy tôi đang học NoSQL, Message Queue và RDB, đây là những công nghệ cơ sở hạ tầng được các công ty sử dụng, hoặc học các ngôn ngữ mới đang thịnh hành hiện nay. Tất nhiên, tôi cũng đã làm như vậy!
Có những khái niệm nào bạn biết nhưng lại gặp khó khăn khi giải thích không? Đảo ngược phụ thuộc là gì? Thực thể là gì? Dịch vụ là gì? Sự khác biệt giữa lập trình tuần tự và lập trình thủ tục là gì? Chúng tôi sẽ giúp bạn hiểu những khái niệm này, đồng thời giải thích chúng một cách rõ ràng.
Mấy cái TDD, DDD chết tiệt đó... thật tuyệt vời khi bạn học chúng. Tôi biết chúng là những lý thuyết tuyệt vời, nhưng làm sao để áp dụng chúng vào thực tế? Cụ thể hơn, làm sao để áp dụng TDD và DDD vào Spring Framework?
Tôi đã đọc nhiều sách và tham dự nhiều hội thảo về TDD, nhưng hầu hết đều chỉ đưa ra những ví dụ đơn giản, phù hợp cho người mới bắt đầu. Tôi sẽ chỉ cho bạn cách áp dụng nó vào thực tế .
Nếu bạn quan tâm đến thiết kế, bạn đã bao giờ thử ghi nhớ các mẫu thiết kế với hy vọng tìm hiểu thêm về chúng chưa? Rồi một suy nghĩ chợt nảy ra: Liệu những mã ví dụ này có thực sự áp dụng được trong thực tế không?
Nhưng hóa ra, điều quan trọng trong các mẫu thiết kế không phải là mẫu đó trông như thế nào! Mà là hiểu được các mối phụ thuộc và cách bạn làm suy yếu chúng !
Sau khi tham dự buổi thuyết trình, tôi đã hiểu được định nghĩa, từ nguyên và ý nghĩa của những thuật ngữ tôi thường dùng, cũng như những thuật ngữ tôi đã nghe nhưng chưa thể xác định chính xác. Mặc dù kiến thức này có thể không phải là vấn đề đối với việc phát triển, nhưng nó đã khuyến khích tôi suy nghĩ về hành vi, vai trò của các đối tượng và ý nghĩa của từng lớp, từ đó hình thành nên một cách tiếp cận lập trình hướng đối tượng (OOP) hơn. Buổi thuyết trình đã giải thích những khái niệm mà cá nhân tôi đã cân nhắc, từ góc nhìn của một lập trình viên mới vào nghề, một cách dễ hiểu, khiến việc nghe trở nên hấp dẫn và thoải mái hơn. Giống như tôi, tôi hình dung nhiều lập trình viên backend mới vào nghề thường cảm thấy lạc lõng, không chắc chắn về những điều mình chưa biết hoặc cần biết bao nhiêu. Buổi thuyết trình này đã cung cấp những hướng dẫn quý báu, giúp tôi hiểu mình cần học những gì và còn thiếu những gì. (Lee*Gyu)
Bài giảng này là một nguồn tài liệu tuyệt vời, đề cập đến những lĩnh vực tôi chưa bao giờ thực sự nghĩ đến. Là một lập trình viên mới vào nghề, tôi đã tự hỏi liệu mình có đang phát triển đúng hướng khi cứ lặp đi lặp lại một công việc ở nơi làm việc hay không. Bài giảng này đã giúp tôi định hướng được. (Shin*ho)
Khi mới vào làm tại một công ty, bạn thường lo lắng về việc làm thế nào để phát triển đúng cách và làm thế nào để giảm thiểu sai sót. Khóa học này giải quyết những lo lắng này và cung cấp hướng dẫn tuyệt vời cho các nhà phát triển mới vào nghề để phát triển đúng cách. Ngoài kiến thức thực tế, khóa học còn đề cập đến các chủ đề mà các nhà phát triển mới vào nghề có thể đã từng gặp phải và thắc mắc ít nhất một lần, chẳng hạn như "Tôi nên thiết kế kiến trúc hướng đối tượng như thế nào?", "Làm thế nào để phân biệt giữa DTO, VO và Entity trong thực tế?", và "Tôi có thực sự cần phải viết mã kiểm thử không?" Bạn cũng sẽ được học các thuật ngữ thường dùng, mà tôi tin rằng sẽ vô cùng hữu ích cho việc thích nghi với công việc thực tế. Tôi thực sự khuyến khích khóa học này cho cả các nhà phát triển mới vào nghề và những người đang muốn phát triển. (Lee Chan)
Là một lập trình viên, khóa học này vô cùng hữu ích, giúp tôi nắm vững các khái niệm cốt lõi của lập trình hướng đối tượng được sử dụng trong lĩnh vực của mình. Ngay cả những khái niệm khó cũng được minh họa rõ ràng, giúp tôi dễ hiểu. Hơn nữa, những giải thích đơn giản đã giúp tôi nhớ các khái niệm rất lâu chỉ sau một lần nghe. (Sim*Cheol)
Các bạn sinh viên tương lai ơi, các bạn có biết sự khác biệt giữa lập trình tuần tự và lập trình thủ tục không? Nếu tò mò, hãy xem video hướng dẫn miễn phí để tìm hiểu những gì bạn sẽ học.
Một khi bạn hiểu rõ khái niệm này, bạn sẽ thấy được nhiều điều hơn nữa! Chúng tôi sẽ giải đáp cặn kẽ những thắc mắc của bạn từ góc nhìn của một người mới vào nghề .
Sửa lỗi phát triển thường gặp của các nhà phát triển mới vào nghề
Chúng ta sẽ tìm hiểu những lỗi quy ước thường gặp khi bạn mới vào công ty, đối tượng là gì và những điều bạn cần lưu ý khi viết mã hướng đối tượng. Và để hiểu rõ hơn về thiết kế, chúng ta sẽ cùng tìm hiểu về các phụ thuộc.
Sử dụng Spring theo cách OOP
Để tìm hiểu cách sử dụng Spring theo hướng đối tượng (OOP), hãy cùng xem xét một trường hợp Spring không thể thực hiện được điều đó. Chúng ta cũng sẽ tìm hiểu bản chất của một dịch vụ và mức độ trừu tượng hóa của từng lớp.
Tại sao chúng ta cần phải thử nghiệm?
Mọi người nói rằng bạn cần mã kiểm thử, nhưng bạn không chắc tại sao việc viết mã kiểm thử lại dẫn đến thiết kế tốt? Hãy để tôi giải thích tại sao kiểm thử lại cần thiết từ góc độ thực tế hơn. Và tôi sẽ chỉ cho bạn cách tạo ra các bài kiểm thử trông tự nhiên.
Tổ chức các khái niệm cần thiết cho việc sử dụng thực tế
Có quá nhiều kiến thức về cơ sở hạ tầng xoay quanh Spring để có thể hoàn thành tốt công việc. Khi mạng lưới hoặc cơ sở hạ tầng được đề cập trong các cuộc họp, nhiều người hoặc gặp khó khăn trong việc hiểu chủ đề hoặc chỉ ngồi im một chỗ. Điều đó có nghĩa là bạn cần phải mở sách giáo khoa chỉ để học về cơ sở hạ tầng hoặc mạng lưới? Tôi sẽ tóm tắt lại cho bạn, chỉ ở mức độ bạn cần cho công việc thực tế!
Chúng tôi cung cấp khoảng 20 bài giảng PPT, mỗi bài dài khoảng 15-20 trang, làm tài liệu học tập cho mỗi lớp học . Hơn nữa, bạn không cần không gian thực hành riêng biệt! Các bài giảng được thiết kế để bạn có thể học chỉ trong 20 phút trên tàu điện ngầm trong khi di chuyển.
Hiện tại tôi đang làm việc tại Kakao, và vì đam mê sáng tạo, tôi luôn dành thời gian làm việc sau giờ làm. Có câu nói: "Một chú lùn đứng trên vai người khổng lồ". Tuy chỉ là một chú lùn nhỏ bé, tôi luôn nỗ lực truyền đạt kiến thức của mình để giúp những người khổng lồ phát triển. Sau khi đã hướng dẫn rất nhiều lập trình viên mới vào nghề, tôi tin rằng mình cũng có thể giúp bạn phát triển.
H. Đây có phải là khóa học mà sinh viên không chuyên ngành cũng có thể tham gia không?
Khóa học này yêu cầu bạn phải có kiến thức cơ bản về khoa học máy tính. Tuy nhiên, vì kiến thức chuyên môn yêu cầu còn hạn chế, bạn có thể dễ dàng tham gia khóa học nếu đã có kiến thức cơ bản về Java, Spring và JPA (điều kiện tiên quyết), cũng như nội dung bên dưới.
H. Ông nói rằng ông tránh giải thích chi tiết các khái niệm, vậy chính xác thì ông đang cố nói với chúng tôi điều gì?
Tôi sẽ cố gắng tóm tắt các khái niệm trong ba dòng. Tất nhiên, tôi sẽ giải thích quy trình hoạt động của các khái niệm phức tạp như MSA và OAuth. Tuy nhiên, tôi sẽ không đi sâu vào chi tiết về nguồn gốc, bối cảnh, cũng như phiên bản 1.0 và 2.0 của OAuth, vì dù sao thì chúng ta cũng có thể sẽ sử dụng phiên bản 2.0 trong thực tế. Và từ góc độ của một người thực hành, họ quan tâm nhiều hơn đến dữ liệu được trao đổi thông qua giao tiếp API hơn là mã thông báo và chữ ký.
Tôi sẽ cố gắng giải thích ngay cả những thuật ngữ nhỏ nhặt nhất mà bạn khó hỏi. Ví dụ, khi mới vào công ty, tôi không biết thuật ngữ CS " và cảm thấy bực bội vì không theo kịp nội dung cuộc họp. Nhưng nếu bạn tìm kiếm "CS" trên Google thì sao? Nó không phải là một thuật ngữ riêng lẻ, không liên quan. Thực ra, đó chỉ là 고객 문의 !
H. Có nhiều video và bài đăng trên blog giải thích các khái niệm, vậy tại sao tôi nên tham gia khóa học này?
Vâng, đúng vậy. Thực tế, đã có rất nhiều bài viết và video hay trên YouTube và blog. Tuy nhiên, việc các lập trình viên mới vào nghề không biết những điều mình không biết lại phổ biến hơn nhiều. Có lẽ bạn vừa mới nhận được việc làm lập trình viên back-end và cảm thấy bối rối mỗi khi nghe đến các thuật ngữ về cơ sở hạ tầng hoặc mạng. Vậy nên, bạn nghĩ, "Mình có nên học cơ sở hạ tầng không?" Bạn mua một cuốn sách dày cộp, dành cho chuyên gia, hoàn toàn không biết gì về nội dung, và miệt mài nghiên cứu mà không hiểu gì cả. Chẳng phải như vậy rất kém hiệu quả sao?
Khóa học này có thể được coi là một gói khởi đầu giúp bạn phát triển nhanh chóng. Hơn nữa, nhiều bài đăng trên blog chứa nội dung ở trình độ đại học được viết về Tistory, vì vậy có rất nhiều trường hợp hiểu lầm. Ví dụ, một số bài đăng trên blog thậm chí còn giải thích rằng DTO là các đối tượng được sử dụng để lưu trữ dữ liệu trong cơ sở dữ liệu bằng DAO!
H. Điều gì làm cho khóa học này trở nên độc đáo?
Hầu hết các bài giảng dường như không đề cập đến thiết kế. Bài giảng này cung cấp định nghĩa riêng của giảng viên về thiết kế tốt.
Tôi tin rằng lý do không có nhiều bài giảng liên quan đến thiết kế là vì các chuyên gia chia sẻ kiến thức còn e ngại. Như bạn đã biết, không có câu trả lời cố định nào cho thiết kế tốt. Tuy nhiên, giảng viên cần truyền đạt kiến thức một cách khách quan và chính xác, nên theo bản năng, họ tránh những chủ đề không có câu trả lời cố định. Đó là lý do tại sao các bài giảng liên quan đến thiết kế thường đi xa đến mức xem xét lại SOLID và các mẫu thiết kế từng bước một. Tôi sẽ giải thích định nghĩa của riêng tôi về thiết kế tốt, vì vậy hãy chia sẻ suy nghĩ của bạn.
H. Nếu bạn không thể định nghĩa thế nào là thiết kế tốt thì làm sao bạn có thể dạy nó?
Vâng, vì tôi không thể định nghĩa thiết kế tốt, nên định nghĩa tôi đưa ra trong bài giảng này chỉ đơn giản là định nghĩa cá nhân của tôi. Tuy nhiên, tôi tin rằng tất cả sách phi hư cấu và bài giảng chỉ đơn giản là một quá trình lắng nghe ý kiến của người khác và chấp nhận chúng nếu chúng phù hợp với bạn. Tuy nhiên, tôi đã cố gắng trình bày điều này một cách khách quan nhất có thể, vì vậy nếu bạn thấy thuyết phục, xin hãy chấp nhận. Nếu không, tôi khuyến khích bạn tự định nghĩa lại thiết kế tốt.
📢 Vui lòng kiểm tra trước khi tham gia lớp học!
Khóa học này dành cho ai?
Những người không thể theo kịp các cuộc họp vì có nhiều khái niệm họ không biết.
Bất cứ ai quan tâm đến thiết kế
Những người đã vào công ty nhưng chưa biết cách phát triển
Bất cứ ai thắc mắc tại sao bài kiểm tra được thiết kế
Người ghi nhớ một cách máy móc đặc tính của lò xo
Có ai thắc mắc liệu tôi có xử lý lò xo đúng cách không
nhân viên mới
Nhà phát triển muốn phát triển
Cần biết trước khi bắt đầu?
Bất cứ ai có thể hiểu được mã Java
Khái niệm cơ bản về Spring (nếu bạn biết Bộ điều khiển/Dịch vụ/Kho lưu trữ là gì)
Bất cứ ai đã sử dụng JPA một thời gian
3,499
Học viên
255
Đánh giá
47
Trả lời
4.9
Xếp hạng
2
Các khóa học
현재 카카오에서 일하고 있고, 만드는 것을 좋아해서, 퇴근 후에도 항상 무언가를 개발하고 있습니다.
"거인의 어깨 위에 선 난쟁이"라는 말이 있습니다. 저 역시 한낱 작은 난쟁이일 뿐이지만, 올라탄 거인의 성장에 도움이 될 수 있도록 지식의 대물림을 위해 노력하고 있습니다. 다수의 주니어 개발자분들을 멘토링 한 경험이 있어서 여러분의 성장을 도와줄 수 있을 거예요.
깃허브 > https://github.com/kok202
블로그 > https://kok202.tistory.com
Tất cả
25 bài giảng ∙ (4giờ 8phút)
Tài liệu khóa học:
Tất cả
77 đánh giá
4.9
77 đánh giá
Đánh giá 5
∙
Đánh giá trung bình 5.0
5
개발 실력의 추월 차선과 같은 강의입니다. 베테랑은 똑같은 작업을 하더라도, 더 깊은 지식과 넓은 시야로 다른 결과물을 만들어 냅니다. 저는 이것이 연차의 무서운 점이라고 생각합니다. 이 강의는 오랜 연차로 쌓을 수 있는 지식과 테크닉들을 전수해줍니다. 강사분의 개발에 대한 집요한 집착과 다양한 경험으로 쌓아낸 귀한 정보나 테크닉들을 저 같은 초보자들을 위해 친절히 소개해줍니다. 처음 봤을 때는 내내 놀라움으로 강의를 보았습니다. 모호하게 느껴지던 개념들을 이젠 말로 설명할 수 있게 되었고, 당장 시키는 대로 객체지향을 더 공부하며 적용하고, 리팩토링을 해보니 프로젝트의 구조가 더욱 깔끔해졌습니다. 처음 강의를 보았을 때는 아직 경험이 적어, 말씀주신 내용들을 다양하게 적용해보지는 못 했습니다. 이후, 새로운 프로젝트를 하며 이 강의가 떠올랐습니다. 강의를 다시 보며 알려주신 내용들을 적용해보니, 스스로 느끼기에 이전과는 비교할 수 없을 정도로 개선된 코드가 나왔고, 프로젝트 멘토님이나 팀원들이 다들 읽기 좋고 잘 짠 코드라고 칭찬해주었습니다. 이 강의는 시야를 넓혀주는 강의라고 생각합니다. 단순히 잘못된 점을 바로잡고, 고수의 노하우와 지식들을 전수 받을 수 있는 것을 넘어 어떤 선택을 할 때, 초보에겐 보이지 않는 다양한 선택지들을 알려주는 감사한 강의라고 생각합니다.
Đánh giá 24
∙
Đánh giá trung bình 5.0
Đánh giá 21
∙
Đánh giá trung bình 5.0
Đánh giá 4
∙
Đánh giá trung bình 5.0
Đánh giá 11
∙
Đánh giá trung bình 4.6
1.252.939 ₫
Hãy khám phá các khóa học khác của giảng viên!
Khám phá các khóa học khác trong cùng lĩnh vực!