반응형

분류 전체보기 134

[inflearn] 스프링 MVC 2편 review

✅ 강의 소개 웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있습니다. ✅ 강의별 후기 [ 메시지, 국제화 ] 다양한 메시지를 한 곳에서 관리하는 기능으로 메시지 관리용 파일(ex. messages.properties)에서 화면에 보이는 문구 등을 관리한다. 덧붙여서 메시지들을 나라별 언어로 관리하면 서비스를 국제화 할 수 있다. (ex. messages-ko.properties, messages-en.properties) - 스프링의 경우, 인터페이스인 MessageSource로 메시지 관리 기능을 제공하며, 구현체인 ResourceBundleMessga..

[inflearn] 스프링 MVC 1편 review

✅ 강의 소개 웹 애플리케이션을 개발할 때 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. 스프링 MVC의 핵심 원리와 구조를 이해하고, 더 깊이있는 백엔드 개발자로 성장할 수 있습니다. ✅ 강의별 후기 [ Servlet ] Servlet은 톰캣같은 웹 어플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린 다음, 톰캣 서버를 실행. Servlet을 생성하여 실제 Http 요청/응답을 수행. HttpServletReqeust / HttpServletResponse를 기반으로 각 객체에 담기는 Parameter에 대한 이해. - Application 클래스 @ServletComponentScan으로 Servlet을 직접 등록해서 사용. - HttpServle..

[inflearn] 스프링 핵심 원리 - 기본편 review

✅ 강의 소개 초급자를 위해 준비한 [웹 개발, 백엔드] 강의 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. ✅ 강의별 후기 [ 객체 지향 설계와 스프링 ] 스프링이 만들어진 역사와 스프링의 생태계, 프레임워크에 대해 학습. 좋은 객체 지향 어플리케이션을 개발하기 위한 개념들을 이해 및 복습 - 추상화, 캡슐화, 상속, 다형성 - 다형성의 본질 (유연한 변경) - 객체를 설계할 때, 역할과 구현을 명확히 분리. - SOLID 원칙 SRP(변경에 따른 파급효과 최소화) OCP(확장에는 열려있고 변경에는 닫혀있음) LSP(프로그램의 정확성, 다형성의 인터페이스 규약) ISP(여러개의 인터페이스) DIP(추상화에 의존) [ 스프링 핵심 원리 이해..

[개인] 지역별 점포 파악 서비스(가명)

💻 프로젝트 페이지와 구조 ⚔ 기술 스택 Spring boot 3.0.1 Gradle-7.6 JDK-19 Springboot Data JPA SpringDoc 2.0.0 MySql 8.0.27 JWT OAuth github - projec-gyu 네이버 지도 API (https://www.ncloud.com/product/applicationService/maps) 배달앱 관련 API (https://hyphen.im/product-api/view?seq=16) 데이터를 직접 만들지 or API를 끌어다 쓸지 고민이 필요.. Vue.js (임시) 🧑 개발 순서 [ 로그인과 인증기능 ] - DB연동 및 User Modeling - 기본 인증부터 토큰 인증까지 - JWT와 SpringSecurity를 활용한..

[item 18] 상속보다는 컴포지션을 사용하라

상속은 코드를 재사용하는 강력한 수단이지만, 항상 최선은 아니다. 잘못 사용하면 오류를 내기 쉬운 소프트웨어를 만들게 된다. 일반적인 구체 클래스를 패키지 경계를 넘어, 즉 다른 패키지의 구체 클래스를 상속하는 일은 위험하다. 메서드 호출과 달리 상속은 캡슐화를 깨트린다. 다르게 말하면, 상위 클래스가 어떻게 구현되느냐에 따라 하위 클래스의 동작에 이상이 생길 수 있다. 이러한 이유로 상위 클래스 설계자가 확장을 충분히 고려하고 문서화도 제대로 해두지 않으면 하위 클래스는 상위 클래스의 변화에 발맞춰 수정돼야만 한다. [ HastSet을 사용한 예시 ] public class InstrumentedHastSet extends HastSet { private int addCount = 0; public I..

[item 17] 변경 가능성을 최소화하라

불변 클래스란 간단히 말해 그 인스턴스의 내부 값을 수정할 수 없는 클래스다.불변 인스턴스에 간직된 정보는 고정되어 객체가 파괴되는 순간까지 절대 달라지지 않는다. 불변 클래스는 가변 클래스보다 설계하고 구현하고 사용하기 쉬우며, 오류가 생길 여지도 적고 훨씬 안전하다. [ 불변 클래스의 다섯 가지 규칙 ] 1. 객체의 상태를 변경하는 메서드를 제공하지 않는다. 2. 클래스를 확장할 수 없도록 한다. 상속을 막는 대표적인 방법은 클래스를 final로 선언하는 것이다. 3. 모든 필드를 final로 선언한다. 새로 생성된 인스턴스를 동기화 없이 다른 스레드로 건네도 문제없이 동작하게끔 보장하는데도 필요하다. 4. 모든 필드를 private으로 선언한다. 필드가 참조하는 가변 객체를 클라이언트가 직접 접근해..

[item 15] 클래스와 멤버의 접근 권한을 최소화하라.

어설프게 설계된 컴포넌트와 잘 설계된 컴포넌트의 가장 큰 차이는 바로 클래스 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐다. 잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨겨, 구현과 API를 깔끔히 분리한다. 정보은닉, 혹은 캡슐화라고 하는 이 개념은 소프트웨어 설계의 근간이 되는 원리다. 정보은닉 장점의 대부분은 시스템을 구성하는 컴포넌트들을 서로 독립시켜서 개발, 테스트, 최적화, 적용, 분석, 수정을 개별적으로 할수 있게 해주는 것과 연관되어 있다. [ 정보은닉의 장점 ] 시스템 개발 속도를 높인다. 여러 컴포넌트를 병렬로 개발할 수 있기 때문이다. 시스템 관리 비용을 낮춘다. 각 컴포넌트를 더 빨리 파악하여 디버깅할 수 있다. 성능 최적화에 도움을 준다. 완성된 시스..

[item 14] Comparable을 구현할지 고려하라

Comparable 인터페이스의 유일무이한 메서드인 compareTo를 알아보자. compareTo는 단순 동치성 비교에 더해 순서까지 비교할 수 있으며, 제네릭하다. compareTo 메서드의 일반 규약은 equals의 규약과 비슷하다. 이 객체와 주어진 객체의 순서를 비교한다. 이 객체가 주어진 객체보다 작으면 음의 정수를, 같으면 0을, 크면 양의 정수를 반환한다. 이 객체와 비교할 수 없는 타입의 객체가 주어지면 ClassCastException을 던진다. 다음 설명에서 sgn(표현식) 표기는 수학에서 말하는 부호 함수를 뜻하며 표현식의 값이 음수, 0, 양수일 때, -1, 0, 1을 반환하도록 정의했다. 1. Comparable을 구현한 모든 클래스는 모든 x, y에 대해 sgn(x.compar..

[item 13] 재정의는 주의해서 진행하라

Cloneable은 복제해도 되는 클래스임을 명시하는 용도의 mixin interface지만, 의도한 목적을 제대로 이루지 못했다. 가장 큰 문제는 clone 메서드는 선언된 곳이 Cloneable이 아닌 Object이고, protected라는데 있다. Cloneable 인터페이스는 protected 메서드인 clone의 동작 방식을 결정한다. clone을 호출하면 그 객체의 필드들을 하나하나 복사한 객체를 반환한다. clone 메서드의 일반 규약으로 Object 명세에서 가져온 설명은 다음과 같다. 이 객체의 복사본을 생성해 반환한다. '복사'의 정확한 뜻은 그 객체를 구현한 클래스에 따라 다를 수 있다. 일반적인 의도는 다음과 같다. 어떤 객체 x에 대해 다음 식은 참이다. x.clone() != x..

반응형