오랜만에 돌아온 TIL..😳많은 내용이 아니더라도 매일매일 쓰는 것을 목표로 !!링크예를 들어 햄버거 가게를 차린다고 했을 때 여러 시행착오를 최소화하여 더 빠른 기간내로 오픈하고 싶다? ➡ 프랜차이즈에 가입레시피, 서비스 등의 노하우들이 집약되어 있음.프로그램도 마
링크 Spring vs Spring Boot "이걸 씀으로써 개발자들의 겨울은 끝났다!" 봄 vs 조금 더 봄 Spring Boot > 더 쉽게 만들고, 단독적이고, 상용화 수준의 스프링 기반 애플리케이션. 당신은 오직 "실행"만 시켜라 Spring depende
유튜브준비할 것1\. JDK: 자바 코드의 번역과 실행을 위함2\. IDE: 개발 생산성을 높여주는 도구참고 링크나는 8버전으로 설치brew tap AdoptOpenJDK/openjdk brew install --cask adoptopenjdk8 /usr/libexec
강좌 링크웹은 클라이언트의 요청, 서버의 응답으로 동작.브라우저 - 클라이언트 / 스프링부트 - 서버 로써의 역할을 수행하여 hello world를 웹 페이지에 출력할 수 있었던 것.그냥 무작정 웹 페이지에서 localhost:8080을 실행시키면 동작하지 않음 ➡️
강좌 링크spring boot는 서버의 역할을 수행한다고 했다.그런데 더 자세히 들여다보면 Controller + Model + View의 유기적 역할 분담이 존재한다.Controller는 client로부터 요청을 받음 ➡️ View는 최종 페이지를 만들어줌 ➡️ Mo
폼 데이터: HTML 요소인 form 태그에 담긴 데이터폼 데이터는 택배 상자📦 에 비유 가능. 수령자가 누구인지, 특급 배송인지,,그래서 폼 데이터에도 where과 how를 기재할 필요가 있다.컨트롤러는 이 데이터를 객체에 담아 받는다. 이때, 폼 데이터를 받는 객
강의링크이번 시간에는 받아온 데이터를 데이터 베이스에까지 저장시키는 것이 목표DB: (DataBase) 데이터를 관리하는 창고DB는 java를 이해하지 못한다. 데이터베이스는 SQL이라는 언어를 사용한다. 그럼 대체 어떻게 데이터베이스에게 java를 명령할 수 있을까?
DB 테이블과 SQL 목표: 저장된 데이터를 DB에서 확인하기 DB는 테이블로 이루어져 있으며 테이블 내에서 대표적으로 insert(Create), select(Read), update(Update), delete(Delete) 행위가 이루어진다. 이는 SQL이라는
목표: 롬복을 활용해 기존 코드를 리팩토링 하기 (기존 코드 간소화): 코드를 간소화 시켜주는 라이브러리여러 필수 코드의 반복을 최소화.: 코드의 구조, 성능을 개선하는 작업Logging: 프로그램의 수행 과정을 기록으로 남기는 것. (자동차의 블랙박스📹 같은)먼저
새로운 선생님➡️ 압축 풀어 열기HelloSpringApplication.java간단히 이대로 실행 시키면 localhost:8080에서 서버가 실행되는 것을 볼 수 있음@SpringBootApplication을 해주었기 때문에 main문에서 SpringApplicat
1️⃣ 정적 컨텐츠 정적 컨텐츠: 그냥 파일을 웹 브라우저에 그대로 내려주는 것 MVC와 템플릿 엔진: (템플릿 엔진: HTML을 그냥 주는 것이 아니라 서버에서 프로그래밍하여 동적으로 바꾸어 내리는..) API: JSON이라는 데이터 포멧으로 내려주는데 이때 이 데이
✔️ 목표비즈니스 요구사항 정리회원 도메인과 리포지토리 만들기회원 리포지토리 테스트 케이스 작성회원 서비스 개발회원 서비스 테스트간단하게 비즈니스 요구사항은 데이터: 회원 ID, 이름기능: 회원 등록, 조회그리고 가상의 시나리오로 아직 데이터 저장소가 선정되지 않았다고
멤버 서비스, 레퍼지토리, 서비스를 통해 멤버 가입, 레퍼지토리에 저장, 레퍼지토리에서 꺼내오고..화면을 붙이려면 컨트롤러, 뷰 템플릿이 필요멤버 컨트롤러가 필요한데 멤버 컨트롤러가 멤버 서비스를 통해 가입, 데이터 조회할 수 있어야 함.➡️ 이것을 서로 의존관계가 있
1️⃣ 회원 웹 기능 - 홈 화면 추가 멤버 컨트롤러를 통해 회원 등록, 조회하는 기능 만들기 ✔️ 우선, controller 패키지에 HomeController.java 생성 ✔️ resources/templates 디렉토리에 home.html 생성 서버 실행
1️⃣ H2 데이터 베이스 설치 > Jdbc: DB sql을 가지고 애플리케이션 서버와 DB를 연결할 때 필요한 기술 스프링 JdbcTemplate: 순수 Jdbc가 너무 힘드니까 스프링이 제공하는 템플릿 JPA: (스프링만큼 오래된 기술) 객체를 바로 DB에 쿼리 없
🔔 [6_1] 스프링 DB 접근 기술 (이전 포스트) 3️⃣ 스프링 통합 테스트 (DB까지 연결된) 🙃 이번 시간도 편안하게 보고 넘기자! 이전까지 했던 test는 사실 순수한 java 코드로만 이루어졌기 때문에 spring과는 아무 관련이 없었음. ✔️ te
1️⃣ AOP가 필요한 상황 > - 모든 메소드의 호출 시간을 측정하고 싶다면? 공통 관심 사항(cross-cutting concern) vs 핵심 관심 사항(core concern) ( ➡️ 이렇게 분리 ) 회원 가입 시간, 회원 조회 시간을 측정하고 싶다면? ✔️
스프링 핵심원리 - 기본편 1️⃣ 자바 진영의 추운 겨울과 스프링의 탄생 오늘은 스프링의 배경 에 대해 알아보자. (🐯 옛날옛적 이야기기 때문에 오늘도 편하게 봐주셔요.) 2000년대 초반 최고의 기술은 EJB(Enterprise Java Beans). (자바당
[Spring Boot] [3] 1. 객체 지향 설계와 스프링 (1) 4️⃣ 좋은 객체 지향 설계의 5가지 원칙(SOLID) ⭐️ 좋은 객체 지향 설계의 5가지 원칙(SOLID) 👩🏻💼 면접에서도 많이 물어보는 질문! SOLID 클린코드로 유명한 로버트 마틴
1️⃣ 프로젝트 생성 우선은 순수한 자바로만 프로젝트를 만들어보자! 사전 준비물 Java 11 설치 IDE: IntelliJ OR Eclipse 설치 (IntelliJ 권장) 📌(참고) 개발환경 만들기 이전 포스트 > 잠깐! ✋🏻이전 포스트에서 Java 11
📌 \[Spring Boot] \[3] 2. 스프링 핵심 원리 이해 1\_예제 만들기 (1)✔️ hello.core 패키지 안에 MemberApp.java 클래스 생성 (순수 자바로만)⬇️ 결과 📌 (단축키) psvm + enter ➡️ public static
1️⃣ 새로운 할인 정책 개발 새로운 할인 정책을 확장해보자. > 👽 악덕 기획자: 서비스 오픈 직전에 할인 정책을 지금처럼 고정 금액 할인이 아니라 좀 더 합리적인 주문 금액당 할인하는 정률% 할인으로 변경하고 싶어요. 예를 들어서 기존 정책은 VIP가 10000원
스프링 핵심 원리 이해 2 - 객체 지향 원리 적용 (1) (이전 게시물) 5️⃣ 새로운 구조와 할인 정책 적용 > 그렇다면 처음으로 돌아가 정액 할인 정책을 정률 할인 정책으로 변경해보자. FixDiscountPolicy → RateDiscountPolicy > 🤔: 어떤 부분만 변경하면 정책을 바꿀 수 있을까? 📌 AppConfig의 등장으로 애...
ApplicationContext = 스프링 컨테이너 = 인터페이스스프링 컨테이너는 XML을 기반으로 만들 수 있고, 애노테이션 기반의 자바 설정 클래스로 만들 수 있다.전에 AppConfig를 사용했던 방식 = 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를
5️⃣ 스프링 빈 조회 - 상속 관계 > 이번 시간 중요하니 집주웅 !! 👁🥄 👁 부모를 조회하면 자식 Bean들은 다~ 끌려나온다 !! (의존관계 주입 고민? 필요없다 !!) ✔️ test/beanfind ApplicationContextExtendsFind
🌱 [ SpringBoot ] 객체지향 / SOLID / DI / 스프링 컨테이너 / 인텔리제이 단축키
원래 스프링은 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다.웹이 아닌 애플리케이션 개발도 가능하지만 대부분의 스프링 애플리케이션은 웹 애플리케이션이다.✔️ test에 singleton 패키지 생성 후 SingletonTest.java⬇️ 결과: 웹 애플리케이션
지금까지는 @Bean 또는 XML <Bean\\>으로 설정 정보에 직접 등록할 스프링 빈을 나열해왔다.우리는 아직 등록할 빈이 많지 않았지만 나중에 큰 프로젝트를 할 때 등록할 빈이 수백개라면 어떻게 다 등록하고 관리할까,,? 그리고 일단 귀찮지 않나.그런데 스프
생성자를 통해서 의존관계 주입수정자 주입(setter를 통한 주입)필드에 바로 주입 일반 (아무) 메소드에다가 주입 : 생성자를 통해 의존관계 주입 (지금껏 사용했던 방법)⭐️ 특징생성자 호출 시점에 딱 한 번 호출⭐️불변, 필수 의존관계에 사용(딱 한 번 호출될 때
의존관계 자동 주입 (1) ➡️ (참고) 코드를 수정하기 전에 이렇게 테스트를 전체적으로 함 싹 돌려주는 것이 좋음 !!@Autowired는 타입(Type)으로 조회한다. (ex. @Autowired private DiscountPolicy discountPolicy)
데이터베이스 커넥션 풀(미리 애플리케이션 서버와 DB를 서버 뜰 때 미리 연결)이나, 네트워크 소켓처럼 애플리케이션 시작 시점에 필요한 연결을 미리 해두고,애플리케이션 종료 시점에 연결을 (안전하게) 모두 종료하는 작업을 진행하려면 객체의 초기화와 종료 작업이 필요하다
스프링 빈은 스프링 컨테이너의 시작과 함께 생성돼 스프링 컨테이너가 종료될 때까지 유지된다고 배웠다.이것은 스프링 빈이 기본적으로 싱글톤 스코프로 생성되기 때문이다. (스코프: 빈이 존재할 수 있는 범위)📌 스프링이 지원하는 다양한 스코프싱글톤: 기본 스코프. 스프링
📌 Spring roadmap2 스프링 입문
📌 스프링 웹 개발 기초 - 1. 정적 컨텐츠 2. MVC와 템플릿 엔진 3. API
📌 회원 도메인, 리포지토리 생성, 테스트 케이스 작성
1️⃣. 컴포넌트 스캔과 자동 의존관계 설정 2️⃣. 자바 코드로 직접 스프링 빈 등록
홈 화면, 회원 등록, 회원 조회 화면을 만들어봄
📌 H2 DB 설치 / JbcTemplate / JPA
AOP가 왜 필요한지, 뭔지
📌 SpringBoot 웹 애플리케이션 개발 - 실전 1 (프로젝트 환경설정)
...삽질만 해본 프로젝트 생성기
📌 jpashop 프로젝트 환경설정(환경설정, h2 DB, View 환경설정, lombok, jpa와 db 동작확인)
📌 도메인 모델과 테이블 설계 / 엔티티 클래스 개발 / ⭐️ 엔티티 설계시 주의점 ⭐️
📌 애플리케이션 요구 사항, 패키지 구조, 개발 순서
📌 회원 리포지토리, 서비스 개발 / 테스트
📌 상품 엔티티 개발(비즈니스 로직 추가) / 상품 리포지토리 개발 / 상품 서비스 개발
📌 주문, 주문상품 엔티티 개발 / 주문 리포지토리 개발 / 주문 서비스 개발 / 주문 기능 테스트 / 주문 검색 기능 개발(비추 가득)
⭐️ 중요한 내용 ⭐️ 변경 감지와 병합(merge)
📌 회원 등록, 수정, 조회 API
📌 조회용 샘플 데이터 등록하기
📌 간단한 주문 조회 V1, V2, V3, V4
📌 주문 조회 V1 ~ 6 / API 개발 고급 정리
OSIV와 성능 최적화에 대하여,,
📌 스프링 데이터 JPA / QueryDSL
SpringSecurity에 대해 알아보고 실습해보자.
ORM / MyBatis
🔗 스프링 핵심 원리 - 고급편 + @Controller와 @RestController의 차이
로그 추적기 만들기
로그 추적기 V1, V2
필드 동기화 - 개발, 적용, 동시성 문제 /
ThreadLocal / ThreadLocal 동기화 / 주의사항
SpringBoot Annotation & JPA Annotation & Lombok Annotation
템플릿 메소드 패턴 - 예제1,2,3 / + 익명 내부 클래스
전략 패턴 (strategy pattern)
템플릿 콜백 패턴 / + 템플릿 콜백 패턴/전략 패턴/제네릭
Entity&Repository 생성, API 구현
SpringData JPA의 Auditing
MultipartFile
+ gitignore 작성 + Unit test
SpringData JPA를 통한 게시판 구현하기 (+H2)
+ 서버 템플릿 엔진 vs 클라이언트 템플릿 엔진 + mustache
게시글 등록, 게시글 전체 목록 화면, 수정, 삭제기능 구현하기
✔️ 스프링 시큐리티와 OAuth 2.0 : Authentication(인증) + Authorization(인가) 구글 소셜 로그인 구현하기
어노테이션을 생성해 코드 축약하기 + 세션 저장소로 DB 사용하기
네이버가 해주는 내 로그인 기능 + 테스트 오류 수정
나는 될 때까지 한다,, (2/1~)
세 가지 문제를 해결하고 거기에 기능을 곁들인 (2/5~)
스프링부트 프로젝트를 하며 공부한 것들에 대한 정리(2/12~16, 22)
Google FullCalendar 적용하고 공식문서 살펴보기