All Category574 [Spring 핵심원리 - 기본] 객체 지향 원리 적용 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 새로운 할인 정책 개발 새로운 할인 정책을 확장해보자. 악덕 기획자가 서비스 오픈 직전에 할인 정책을 변경하고 싶어한다. 기존에는 VIP 고객이 주문 금액에 관계없이 일정 금액(예: 1000원)을 할인받는 방식이었지만, 이제 주문 금액의 일정 비율(예: 10%)을 할인하는 방식으로 변경하고자 한다. 순진 개발자는 처음부터 고정 금액 할인 방식에 반대했지만, 악덕 기획자는 애자일 개발 방식을 인용하며 변화에 대응할 것을 주장한다. 순진 개발자는 유연한 설계를 위해 객체지향 설계 원칙을 이미 준수했기 때문에 상관없다고 생각한다. 순진 개발자가 정말 객체지향 설계 원칙을 잘 준수 했는지 확인해보자. 이번에는 주문한 .. Java Category/Spring 2024. 1. 28. [Spring 핵심 원리 - 기본] 예제 만들기 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 도메인 협력 관계 회원 클래스 다이어그램 회원 객체 다이어그램 회원 서비스: MemberServiceImpl 구현 클래스가 하나밖에 없을 때는 Impl을 관례적으로 붙인다고 한다. 회원 도메인 개발 회원 엔티티 회원 등급 package hello.core.member; public enum Grade { BASIC, VIP } 회원 엔티티 package hello.core.member; public cl.. Java Category/Spring 2024. 1. 27. [Spring 핵심원리 - 기본] 객체 지향 설계와 스프링 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 자바 진영의 표준 기술이었던 Enterprise Java Beans (EJB)는 복잡하고 어려우며 의존적이고 느렸음. 스프링 2002년 로드 존슨 책 출간 EJB의 문제점 지적 지금의 스프링 핵심 개념과 기반 코드가 들어있음 BeanFactory, ApplicationContext, POJO, 제어 역전, 의존관계 주입 단순함의 승리 현재 사실상 표준 기술 EJB 엔티티빈 기술을 대체 -> 하이버네이트 -> JPA JPA는 인터페이스이다. 따라서 구현체가 필요한데, 대표적인 구현체는 하이버네이트, EclipseLink 등이 있다. 스프링 생태계 스프링은 여러 가지 기술들의 모음. 스프링 프레임워크: 스프링의 핵.. Java Category/Spring 2024. 1. 26. [Spring 입문] AOP (Aspect Oriented Programming) 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. AOP가 필요한 상황 몇개의 메서드에 실행시간을 체크해보고싶은 상황이라고 한다면 해당 메서드들의 시작과 끝에 시간을 측정하고 출력하는 코드를 붙여야할 것이다. 다행히 그게 몇개 밖에 되지않는다면 괜찮겠지만 만약 몇십개, 몇백개라면 노가다 작업을 해야할 것이다. 예를 들어, AOP를 적용하지 않고, 각 메서드마다 실행시간을 측정을 해야한다면 아래와 같은 문제점을 만나게 된다. 회원가입, 회원 조회에 시간을 측정하는 기능은 핵심 관심 사항이 아니다. 시간을 측정하는 로직은 공통 관심 사항이다. 시간을 측정하는 로직과 핵심 비즈니스의 로직이 섞여서 유지보수가 어렵다. 시간을 측정하는 로직을 별도의 공통 로직으로 만들.. Java Category/Spring 2024. 1. 25. [IntelliJ] 자주 사용하는 단축키 정리 Maccommand + shift + t : 테스트 케이스 생성option + enter : static importcommand + option + v : 리턴 값을 받아줄 변수 자동 생성command + n : 생성자, getter, setter 등 자동 생성command + d : 라인 복제ctrl + t : 리팩토링option + command + m : 메서드 추출 리팩토링 (extract method)command + shift + 왼쪽 or 오른쪽 : 프로젝트 탐색창 좌우 크기조절command + option + b + 클릭: 인터페이스의 구현체 리스트를 보여줌command + p : 생성자 목록command + e : 최근 실행 파일shift + shift : 전체 검색command + d.. Java Category/기타 2024. 1. 24. [Spring 입문] 스프링 DB 접근 기술 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. H2 데이터베이스 설치 H2 데이터베이스는 개발이나 테스트 용도로 가볍고 편리한 DB, 웹 화면 제공한다. https://www.h2database.com/html/main.html 위 사이트에서 H2 데이터베이스를 설치한다. 브라우저 창이 열리면서 다음과같은 화면이 출력된다. JDBC URL : jdbc:h2:~/test (최초 한번 입력)를 입력한다. ~/test는 home에 있는 test파일을 의미한다. window에서 home은 사용자 폴더가 된다. 사용자명과 비밀번호는 건드리지 않고 [연결] 버튼을 누른다. 그러면 해당 폴더에 위와 같은 파일이 생성된다. 아래와같이 H2 Database에 연결이되며, .. Java Category/Spring 2024. 1. 24. [Java] static import static import는 클래스의 정적 멤버(메서드와 필드)를 클래스 이름 없이 직접 사용할 수 있도록 해준다. 이를 통해 코드의 가독성을 높일 수 있지만, 과도하게 사용할 경우 어느 클래스에서 메서드나 필드가 정의되었는지 혼란을 줄 수 있다. 예를들어, static import를 사용하지 않는 경우, 예를 들어 Math 클래스의 sqrt 메서드를 사용하려면 클래스 이름을 명시해야 한다. double result = Math.sqrt(25); // Math 클래스의 sqrt 메서드 사용 static import를 사용하면, 메서드를 클래스 이름 없이 직접 호출할 수 있다 import static java.lang.Math.sqrt; ... double result = sqrt(25); // Math.s.. Java Category/Java 2024. 1. 23. [Spring 입문] 회원관리 예제 - 웹 MVC 개발 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 홈 화면 추가 HomeController를 통해 html 연결하기 controller 패키지에서 HomeController 클래스를 하나 생성한다. @Controller public class HomeController { @GetMapping("/") public String home() { return "home"; } } @Controller 어노테이션을 붙여준다. 그리고 @GetMapping을 통해 "/"를 연결시킨다. /은 도메인의 첫번째 주소를 말한다. 즉, localhost:8080/ 에 접속했을 때 이 메서드가 호출이 되는 것이다. 이후 return 값으로 home을 반환한다. 따라서 이 메서드가.. Java Category/Spring 2024. 1. 23. [Spring 입문] 스프링 빈과 의존관계 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 아래의 글에 연관이 있는 포스팅입니다. 2024.01.21 - [Java Category/Spring] - [Spring 입문] 회원 관리 예제 - 백엔드 개발 회원 가입하고 그 결과를 html을 통해 화면에 띄우려고 하는데, 그러러면 Controller와 View template가 필요하다. MemberController를 만들어서 사용해야 하는데, MemberController가 MemberService를 통해서 회원 가입을 하고, 데이터 조회를 해야 한다. 이런 것을 "MemberController가 MemberService를 의존한다" 라고 표현한다. 따라서 회원 컨트롤러가 회원서비스와 회원 리포지토리를.. Java Category/Spring 2024. 1. 22. [Java] 리스트 구현(SLL, DLL) 단일 연결 리스트(Singly Linked List) 직접 구현 노드 class Node { E data; Node next; Node(E data) { this.data = data; this.next = null; } } 노드 추가 //리스트의 가장 뒷쪽에 데이터 추가 public void add(E data) { Node newNode = new Node(data); if (head == null) head = newNode; else { Node currentHead = head; while (currentHead.next != null) currentHead = currentHead.next; currentHead.next = newNode; } } 노드 삽입 //리스트의 원하는 인덱스에 데이터.. 자료구조 & 알고리즘/알고리즘 2024. 1. 21. [Spring 입문] 회원 관리 예제 - 백엔드 개발 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 비즈니스 요구사항 정리 데이터 : 회원 ID, 이름 기능 : 회원 등록(단, 중복 이름 허용X), 회원 조회 아직 DB가 선정되지 않은 상황 (가상의 시나리오) 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 (예를 들어 회원 중복 가입 허용 안됨과 같은 로직들 또한 비즈니스 도메인 객체를 가지고 핵심 비즈니스 로직이 동작하도록 구현한 객체) 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 (아직 DB가 선정되지 않은 상태로 가정) 도메인: 비즈니스 도메인 객체, 예) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클.. Java Category/Spring 2024. 1. 21. [Spring 입문] 스프링 웹 개발 기초 이 글은 인프런 김영한님의 Spring 강의를 바탕으로 개인적인 정리를 위해 작성한 글입니다. 웹을 개발하는 방법에는 크게 세 가지가 있다. 1. 정적 컨텐츠 (static contents) 서버에서 따로 가공을 거치지 않고 파일을 웹 브라우저에 그대로 보내는 방식이다. 2. MVC와 템플릿 엔진(template engine) 과거의 JSP, PHP 같은 것들이 template engine이다. 정적 컨텐츠처럼 html을 웹 브라우저에 그대로 보내는 것이 아니라, 데이터를 가공 해서 html을 동적으로 바꿔서 웹 브라우저에 보내는 일을 한다. 이런 방법을 사용하기 위해서는 Model, View, Controller가 필요한데, 이를 합쳐서 MVC라고 부른다. 정적 컨텐츠와의 차이점 html을 웹 페이지에.. Java Category/Spring 2024. 1. 20. 이전 1 ··· 5 6 7 8 9 10 11 ··· 48 다음