JAVA = High Level 언어 (인간 친화적 언어)JAVA 도 컴퓨터가 이해하기 쉬운 언어로 바뀌어야 함 변경과정에서 알아두어야 할 것 : JVM - JRE - JDKJAVA 기계어를 컴퓨터가 이해할 수 있도록 JAVA Byte Code로 변경한다.JVM 이 바
하위 버전이더라도 상위호환 가능
Code Editor vs IDE Visual Studio Code Intellij IDEA Community Edition
Docker 1. Docker 기초 컨테이너 기반의 가상화 기술 컨테이너는 안에 내용물은 상관 x, 배에 올리기 위해서는 컨테이너의 형태로 되어 있어야 OS 위에 컨테이너를 올려서 어플리케이션을 활용 이전 가상화 기술 (이전 버전은 Hypervisor, 컨테이너 안에
Spring Boot Spring Boot 는 웹어플리케이션 프레임워크이다. HTML, CSS ,JS 인터넷의 주축 1) 브라우저에 표시될 내용을 기술하는 언어 2) 표현되는 형식을 정의하는 언어 3) 브라우저에 동작을 제공하는 언어 => 인터넷이 사용하는 기술들
Spring Boot initializer Spring Boot initializer
JAVA로 이뤄진 프로젝트는 .java 파일에 정의된 java source code로 이뤄짐jdk : 자바 소스 코드를 자바 바이트 코드로 바꾸기 위한 javac 파일이 들어있는 상태JAVA COMPILER (컴파일 : 인간을 위한 소스코드를 기계가 알아들을 수 있게
사용자브라우저 <-- 컴퓨터 통신 영역 --> 물리적컴퓨터(서버)신호들이 서버로 전달될 때 신호들은 ip 주소를 보고 ip 주소에 해당하는 서버로 신호를 전달해준다.IP : 포트 , 번호로 구성되어 있는데 IP 주소로는 신호를 "어떤 물리적 서버" 에 전달해줄 지
Java의 Interface IoC Container란 Spring Bean과 DI Spring과 Spring Boot의 차이
HTTP는 무엇인가 이미지출처 HTTP 요청 / 응답의 형식 Media Types
1) Model : 서비스 데이터 그 자체2) View : 사용자가 확인하는 데이터의 표현3) Controller : 사용자의 입출력 다루는 부분사용자는 view를 통해서 화면을 보고 controller라는 부분에 하고자하는 명령을 내리게 되면 이 controller은
3. Controller, RestController
이미 작성이 완료돼 변하지 않는 파일들(ex) html, css, js ,imagewebpage : 서버에서 html 문서의 내용을 데이터에 따라 다르게 작성해 제공되는 이미지다양하게 변형되어 나타내는 웹 페이지1) built.gradlehttps://mvnr
postman 활용
CRUD 실습
RequestMapping 재구성
Service, Repository 사용하기
관계형 데이터베이스와 ERD MySQL과 Workbench 설치하기 MySQL에 스키마 / 유저 생성 기본적인 SQL 작성법
Auto Generated Keys
JPA Hibernate
Table, Column, JoinColumn, JoinTable
Service, Repository를 이용하여 CRUD 데이터 다루기
Spring Boot Properties Spring Boot의 property 설정 Spring Boot Profiles Configuration을 통한 Bean 생성
Logging의 기본 개념들, Logback 설정법
Spring AOP Logging이 필요한 시점 Aspect Oriented Programming AOP에 필요한 기초 개념 실제로 적용해보기
Validation 사용자 입력 검증 Validation Annotation 활용하기 오류 사항 검증
ResponseStatusException Controller에 ExceptionHandler 만들기 HandlerExceptionResolver 만들기 ControllerAdvice 만들기 Error Page 만들기
Interceptor와 Filter의 차이 Interceptor Use-Case Filter Use-Case
Unit Testing에 대하여 JUnit으로 Test 해보기 Test Driven Development란? (심화)
Actuator는 어디에 쓰는건지? Actuator의 기본 설정 Endpoint 활성화
1) controller 패키지 1. Board 만들기 2) BoardController(클래스) 3) model 패키지 4) BoardDto (클래스) 5) Repository 6) BoardRepository (인터페이스) model.BoardDto gette
MediaController
Misson 3 데이터를 Database에서 관리하기 이전 미션에서 Post와 Board를 관리하는 서비스를 만들었습니다. 해당 서비스는 어플리케이션이 종료되면 데이터가 다 사라지게 되어있습니다. 이제 어플리케이션이 꺼져도 데이터가 유지될 수 있도록 JPA를 사용해
Auth의 의미 Authentication과 Authorization HTTPS 이론
Login 기본 Login 기능 구현해보기 인증이 필요한 경로 구분 로그인 상태에 따른 화면 구분
Login 커스텀 UserDetailsService 만들어보기 UserDetails 정의하고 사용하기
OAuth2 & JWT Social Login의 실체 OAuth2 Json Web Token Naver Login 구현하기
Spring Cloud
Micro Service Architecture
Spring Cloud Gateway
Spring Cloud Config
jwt 를 발급하는 것은 쉽지만, 프론트와 소통하며 원활한 플로우를 이뤄내는 것은 쉽지 않은 일입니다. 그러나 우리 팀은 밤낮을 갈아가며 해내고 말았습니다. 이 과정이 너무 소중하고 내가 개발을 사랑한다는 확신을 주게 된 소중한 경험이라 공유하고 싶었습니다.
참고 블로그 : https://incheol-jung.gitbook.io/docs/study/jpa/6#n-n
@Data 이 어노테이션을 dto 로 만든 클래스 위에 붙여주지 않으면, response 로 보내줄 때 > MessageConversionException: Could not write JSON: No serializer found for class ... and no properties discovered to create BeanSerializer ...
회원가입 request dto를 클라이언트가 보낼 때 null아닐뿐만 아니라 " " , " " 와 같은 빈칸일때도 적절하지 않다고 에러 내보내고 싶어서 타입 안가리고 notblank notempty 어노테이션을 붙여놨더니 아래와 같은 에러들이 마구 생김HV00003
인가 & 인증의 중요성인증 후 인가가 일어남1) dependencies 안에 넣어주기스프링 시큐리티를 추가했다면, 이제 모든 요청은 인증을 필요로 한다.의존성을 추가하는 것만으로도 모든 요청에 인증을 요구하게 된다. 의존성에 security 추가 시에, 모든 요청에 인
알수록 신비한 스프링부트 Security
소켓을 적용하기 위한 코드
연관관계 , 영속성 전이, 지연 로딩, auditing
dispatcherServlet in context with path \[] threw exception Request processing failed; nested exception is org.springframework.orm.jpa.JpaSystemExcepti
지연 로딩을 설정해 매핑된 엔티티 정보가 필요한 경우, 데이터를 조회상품을 등록할 때는 전달받은 dto 객체를 엔티티 객체로 변환하는 작업을 해야하고, 조회 시에는 객체를 dto 객체로 바꿔주는 작업 수행 필요업로드할 파일을 읽어올 경로를 설정해오는 과정 필요WebMv
객체 지향 설계와 스프링
스프링 핵심 원리 이해1
스프링 핵심 원리 이해2 - 객체 지향 원리 적용
의존성 주입의 원시적인 형태와 발단
프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것프레임워크 vs 라이브러리1) 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞다. (JUnit)2) 반면에 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프
-설정을 구성한다는 뜻의 @Configuration 을 config에 붙여주기 @Bean을 넣어주면 di 컨테이너에 등록이 되는 것 이제 이 config를 설정할 수 있도록 applicationContext에 이 설정을 저장 스프링 컨테이너 ApplicationContext 를 스프링 컨테이너라고 한다. 기존에는 개발자가 AppConfig 를 사용해...
스프링 컨테이너 생성 new ApplicationContext : 스프링 컨테이너 ApplicationContext 는 인터페이스 => 따라서 new AnnotationConfigurationContext() 는 ApplicationContext 를 구현한 구현체이다.
부모타입으로 조회하면 자식 타입도 함께 조회하게 된다.부모 빈을 조회하면 그 자식 빈들도 나오게 된다.getBean() 제공해주는 스프링컨테이너의 최상위 인터페이스빈 관리, 조회 기능 외에도 부가기능 필요공통적으로 사용되는 부가기능들을 제공자바 코드가 아니라 xml이라
https://mangkyu.tistory.com/75
같은 일을 동시에 진행작업 처리 단위를 동시에 처리(ex) 입금, 송금 -> 두개가 다르게 일어나면 돈을 보내도 돈이 줄지 않고, 그런 요상한 상황 발생서로의 행위(목적)가 다르기때문에 둘의 작업 처리 시간은 일치하지 않고, 일치하지 않아도 됩니다작업 처리 단위를 동시
지금까진 설정정보에 직접 수동적으로 등록 하는 정보를 나열하는 방식을 취함 실무에서는 이를 일일히 등록하기 어려우며, 설정정보 어렵고 누락하는 위험성 존재무엇보다 빈을 등록하는 일이 반복된다. 스프링은 설정정보가 없어도 스프링 빈을 자동적으로 등록해주는 컴포넌트 스캔
웹애플리케이션은 여러 고객이 동시에 호출 문제상황 : 이렇게 계속적으로 호출이 일어나게 된다면 , 고객 요청이 올 때마다 똑같은 객체를 계속 새롭게 생성해야 함 요청을 할 때 마다 객체를 새로 생성고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸=
현재 PageImpl을 통해서 내 리스트를 Page로 반환하게 한 후의 결과 값이다그러나 내가 진행하는 프로젝트에서는 프론트 분께서는 내가 건네주는 데이터로 아래와 같은 표를 만들어야 한다. 그래서 나는 저 열에 해당하는 인덱스 값들을 넘겨줘야 한다. 아래와 같이 한
아이템과의 관계가 끊어지면 이미지가 알아서 삭제되는 것을 구현하고 싶었는데, 아래 스택오버플로우에서 도움을 많이 받았다. https://stackoverflow.com/questions/31470414/jpa-orphan-removal-does-not-work
관리자 권한이거나 경로 상 폴더 존재 여부가 원인
배포 방식
jpql
문자열로 받은 아이를 스프링부트에서 객체로 변환해서 DTO 로 활용할 사항이 생겼다.이런 기능을 제공해주는 것이 gson dependencies 에 를 추가해주자1) 객체로 만들 문자열을 String 으로 데려오기2) 만들 객체 & 인스턴스명 선언 3) Gson 인스턴
사용자가 사진을 입력하지 않을 시엔 해당 이미지 부분을 null로 저장해두고, dto에서 불러올 때 대상의 image가 null 이라면 defaultImage 주소를 돌려주도록 해주면 된다.나는 이 과정에서 환경 변수를 설정해줌으로써 관리하였다. DTO 단에서는 환경변
기존 ROUTEORDERING 에서 ROUTEPRODUCT 를 찾을 때 걍 이렇게 리스트 반환받아서, 그 중에서 present 인 애를 현재 작동 routeProduct로 지정따라서 @Query 문을 통해서 오름차순으로 자리잡게 만듦이 로직을 아주아주 다양한 곳에서 사
build.gradle 맨 아래에아래 코드 추가! 나 같은 경우는 아래와 같이 함.그리고 bootJar 눌러서 생성하면 끝이다!
나는 페이징 유형을 2개 사용하고 있다. (queryDsl 유무) 1. QueryDSL 사용 X BEFORE Pageable 이라는 기본 아이를 통해 size, page , sort 정도로만 pagination을 진행하고 있었다. 그러나 이제 , 넘어온 검색어가 프로젝트의 이름, 개발 유형, 생산 조직, 고객사, 차종, 고객 제품번호, 제품번호, 제품명,...
페이징 커스터마이징 할 때 유용히 쓰일 것 같다!
내가 설정해둔 dto 의 모습이다. 디자인님께서 제시해주신 모듈 순서를 맞추기 위해서 순서를 맞췄다. Project ~ Document 순으로 말이지 (아래는 디자인 순서) 그리고 서비스단에서는 해당 필드에 맞게 값 채워서 주지 근데 json response 확
내 웹사이트에는 50명밖에 들어오지 못해!!
동시 접속 유저수 제한 기능을 Redis 를 통해 구현합니다.
아 ~ 띄웠도다 크하하
내가 사용하고 있던 filter && 으로 조건을 걸면 적용될 줄 앎 그러나 filter에 건 조건이 하나도 적용이 안되고 findAll() 이 모두 찾아와지고 있었다!!
세션을 저장할 레디스를 설치하고 연동해야 합니다.