Backend/Spring (44) 썸네일형 리스트형 [Spring] 순수 자바 예제 1) 회원 & 주문/할인 도메인 설계 앞에서 설명한 것들을 예제로 보면서 이해하는 것이 목표 이번 예제는 순수한 자바코드(스프링X)를 이용해서 개발해보기! 특정 요구사항이 변경되었을 때, SOLID를 잘 지키면서 변경이 될까? OCP / DI반영이 어떻게 잘 이루어지나 를 몸소 느껴보기 프로젝트 생성 비즈니스 요구사항과 설계 회원 도메인 설계 회원 도메인 개발 회원 도메인 실행과 테스트 주문과 할인 도메인 설계 주문과 할인 도메인 개발 주문과 할인 도메인 실행과 테스트 설계부분만 따로 먼저 정리 프로젝트 생성 https://start.spring.io 마찬가지로 여기를 이용해서 프로젝트 생성 이 때, Dependencies는 선택하지 않는다. 프로젝트를 켜고 보면, starter와 테스트관련만 있는 것을 볼 수 있다. Preference >.. [Spring] 최종 개념 정리 스프링은 ? 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 DI(Dependency Injection): 의존관계, 의존성 주입 DI 컨테이너 제공 클라이언트 코드의 변경 없이 기능 확장 쉽게 부품을 교체하듯이 개발 이런 것들을 제공한다 without 스프링? 스프링이 없이 순수 자바 코드로 OCP, DIP 원칙을 지키면서 개발하면, 실제 프로그램 코드보다 OCP, DIP원칙을 위한 코드의 양이 훨씬 많아진다 이래서 프레임워크가 탄생하게 된 것 즉, 혼자서 OCP , DIP원칙을 지키며 자바코드를 짜면, 결국 스스로 스프링 프레임워크( DI컨테이너)를 만들게 된다. 필요성은 뒤에서 코드를 짜면서 더 느낄 수 있다 정리 모든 설계에 역할과 구현을 분리하자. 변경할 수 있도록 만드는 것이 .. [Spring] 객체 지향 설계 원칙 - SOLID 면접 질문으로도 가끔 나오는 내용 SOLID 좋은 객체 지향 설계의 5가지 원칙 - 로버트 마틴(클린코드 저자) SRP: 단일 책임 원칙(single responsibility principle) OCP: 개방-폐쇄 원칙 (Open/closed principle) LSP: 리스코프 치환 원칙 (Liskov substitution principle) ISP: 인터페이스 분리 원칙 (Interface segregation principle) DIP: 의존관계 역전 원칙 (Dependency inversion principle) SRP - 단일 책임 원칙 (Single Responsibility Principle) 하나의 클래스는 한 책임만 가져야 한다 사실 모호한 개념 → 클 수 있고(그 클래스의 책임이 너.. [Spring] 객체 지향 프로그래밍 스프링의 핵심은 객체지향을 잘 살릴 수 있도록 최적화 됨 이므로 좋은 객체지향 프로그래밍 방식을 따르는 것이 스프링을 잘 사용할 수 있는 방법 좋은 객체 지향 프로그래밍이란? 객체지향 다형성 예시 (비유) 자바의 다형성 장점 한계 객체 지향 프로그래밍? 객체 지향 특징 추상화 캡슐화 상속 다형성 ★ 객체 지향 프로그래밍? 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. (협력) 객체 지향 프로그래밍은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프 트웨어 개발에 많이 사용된다 유연하고 변경에 용이 하다는 것은 "다형성"과 연.. [Spring] 스프링에 대하여 스프링을 이해해보자 스프링의 등장 스프링 부트의 등장 스프링이란? 스프링의 핵심 (Concept) 스프링의 등장 스프링 이전 EJB(Enterprise Java Bean) 라는 기술을 자바 표준 기술로 선정하여 사용하고 있었다. 여러가지 장점이 있었지만, 단점이 너무 명확하다 비싸고 / 어렵고 / 복잡함 *특히 자바의 특징인 객체지향을 전혀 살릴 수 없었음 https://woongsin94.tistory.com/357 EJB(Enterprise Java Bean) 개념 EJB(Enterprise Java Bean), 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트 모델이다. 일반적으로 업무 로직을 가지고 있는 서버 어플리케이션을 EJB라고 한다. Enterprise JavaBeans(EJB)는 독립한.. [Spring] AOP 먼저 AOP가 필요한 상황에 대해 알아본다. AOP가 필요한 상황 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) 예를 하나 들자 모든 메소드의 호출 시간을 측정해야할 일이 생겼다! 모든 메소드(999개)에 하나하나 시작과 끝 사이에 시간 측정 코드를 삽입?? → 불가능 (야근하면 가능 ㅎㅎ) 해본다면 다음과 같다. 메소드 하나에 대해서 try안에 실제 핵심로직을 넣고 나머지 부분에 이렇게 시간을 측정하는 코드를 작성한다. public Long join(Member member) { //시작 시간 long start = System.currentTimeMillis(); try { //실제 코드(핵심로직) validateDuplicateMember(m.. [Spring] db접근기술(JPA, Spring JPA) 목차 H2 데이터베이스 설치 데이터 베이스 접근 기술 (차례대로 4가지) 순수 Jdbc : (20년 전 쯤..) 스프링 JdbcTemplate : 스프링에서 Jdbc를 편리하게 쓸 수 있도록 제공 JPA : 개발자가 직접 쿼리를 짜지 않아도 데이터베이스를 조작할 수 있게됨 (10년전쯤..) 스프링 데이터 JPA : 스프링에서 JPA를 편리하게 쓸 수 있도록 개발된 기술 JPA 사실 JPA는 스프링만큼 큰 기술이라, 따로 강의를 보고 책도 보고 ... 여튼 매우 깊게 공부해야할 분야라고 한다. JPA 반복코드를 줄여줌 SQL문을 직접 작성해줌 SQL과 데이터 중심의 설계 → 객체 중심의 설계로 패러다임 전환 가능 개발 생산성의 증가 JPA는 (자바표준)인터페이스고 구현체로 (특정 업체들이 개발한 것)hib.. [Spring] 데이터베이스 접근 기술(Jdbc) 목차 H2 데이터베이스 설치 데이터 베이스 접근 기술 (차례대로 4가지) 순수 Jdbc : (20년 전 쯤..) 스프링 JdbcTemplate : 스프링에서 Jdbc API에서의 반복 코드를 대부분 제거해줌(sql은 직접 작성필요) JPA : 개발자가 직접 쿼리를 짜지 않아도 데이터베이스를 조작할 수 있게됨 (10년전쯤..) 스프링 데이터 JPA : 스프링에서 JPA를 편리하게 쓸 수 있도록 개발된 기술 이제 드디어 임시로 뒀던 메모리 레포지토리를 진짜 데이터베이스로 갈아끼울 차례다 4가지 방법으로 알려주시는데, 그냥..거의 역사 발전한 수준.. 실제 sql쿼리를 날려 데이터베이스에 접근해 데이터를 넣고, 삭제하고, 조회하고 등등.. 순수 Jdbc 순수 jdbc는 정리에서는 생략.. 코드는 설명하지 않고.. 이전 1 2 3 4 5 6 다음