분류 전체보기 793

Java를 시작한지 286-7일, 블로그를 만든 건 282-3일차.

발표를 마무리하고 개인 공부를 퇴근 후에 다시 재개했다. MapStruct, 좋은 것 같다는 생각이 많이 든다. 더 봐야알 것 같기는 한데, 스프링 빈의 자동주입이 가능하다는 점과 ContextRefresh 사이클에 이미 메모리에 띄워진다는 점도 좋게 보인다. 다음주 발표 준비를 꾸준히 하고, 개인공부도 꾸준히 계속 들어가야겠다.

생각모음 2021.01.12

MapStruct

Compile 사이클에 인터페이스에 선언 된 어노테이션을 기반으로 매핑 클래스를 Spring Bean 으로 만든다. 사용하는 이유는 Model 클래스 사이의 맵핑을 간단하게 구현하기 위함이다. Spring Bean 의 SingleTon 스코프로 자원 사용을 줄인다. 간단한 어노테이션으로도 매핑 구현클래스를 생성해낸다. 싱글톤이라는 점, 자동 주입이 가능하다는 점이 강점으로 보인다. 필요의존 org.mapstruct:mapstruct:${version} org.mapstruct:mapstruct-processor:${version} test,compile 시점에 어노테이션 프로세서를 사용해야 함 ext{ mapstructVersion="1.4.1.Final" } implementation "org.maps..

기본적인 폴더구조, 컨벤션

src api : Axios 콜 components : 비즈니스 로직 등이 담긴 컴포넌트 routes : index.js 로 정의 라우터 정보 기입 store : 도메인 경계별로 모듈화 , index.js 에서 통합 views : 비즈니스 로직을 제외한 라우터에 등록할 컴포넌트기입 vue.config.js : webpack.config.js 파일의 설정을 하는 파일 Router 의 동적 주소 매칭 백엔드 API 와의 호출을 위한 경로 변수, 쿼리스트링을 사용하기 위해서 제공 경로변수의 경우 :name 형태로 기입 에서 변동되는 데이터를 넘겨주면 해당 컴포넌트에서 param 으로 받을 수 있다. // rourte -> index.js { path: '/user/:id', component: UserView..

VSCode 플러그인, 코딩 컨벤션, Vue 3.x 대의 변경 사항

VSCode 플러그인 Vutur : 싱글파일 컴포넌트 기반 자동완성 제공 TSLint : 타입 에러를 잡아 줌 ESLint : 코드 작성 규칙을 잡아 줌 Auto Close Tag : HTML 태그를 자동으로 닫음 Material Icon Theme : 아이콘을 명확히 잡아 줌 Night Owl : 코드 하이라이팅 Live Server : html 파일 우클릭시 브라우저 갱신 코딩 컨벤션 Style Guide — Vue.js Style Guide — Vue.js Vue.js - The Progressive JavaScript Framework vuejs.org 변경사항 모듈 생성 키워드 vue create [proj-name] webpack.config.js 노출 X : 대신 vue.config.js 사..

Java를 시작한지 284일, 블로그를 만든 건 280일차.

Lambda , Stream 관련 기본 정리를 얼추 마무리했다. 생각하기로 시간이 얼마걸리지 않을 것 같았는데, 오후 1시부터 시작해서 지금까지 왔다. 보면 볼 수록, 다행이다 싶었다. 이런 기회에 다시 공부해서 정말 다행이다. 하면서 열심히 배웠다. 일을 미루면, 정말 쉬는 시간에 쉴 수 없고, 하고 싶은 공부를 할 수가 없게 된다..그 생각을 해보니까 참 안타까워서 더 열심히 했던 것 같다. 하고 싶은 공부이기도 했다. 이 전부터 Stream 에 대해 잘 알면 간결성 있게 데이터를 조작할 수 있을 것이라고 생각해왔기 때문이다. 이번 기회에 Stream 과 좀 더 가까워 져서 기분이 좋다.

생각모음 2021.01.10

Lambda , Stream 개인 정리

코드의 간결 성, 함수를 이해하는 개인 간의 가독 성 상승 Collection 의 요소를 순회하여 Filtering , Mapping 가능 Collection 의 요소를 간결한 코드로 순회하여 결과를 만들어 낼 수 있다. @FunctionalInterface , 함수형 인터페이스에서 람다식 사용 허용 Anonymous Function , 익명 함수를 만들어내는 방식으로 작성된다. 즉, Runtime 시점에 Anonymous Implementation Object 를 생성하는 형태 기본문법 람다식 -> 매개변수를 가진 코드블록 -> 익명 구현 객체 (매개변수) -> { … } (매개변수) 란은 Lambda 에서 사용될 값을 제공 하나의 매개변수를 가진다면 괄호를 생략가능 하나의 Statement 로 끝난다..

JAVA-Basic 2021.01.10

Java를 시작한지 283일, 블로그를 만든 건 279일차.

스프링 시큐리티관련 CORS 이슈가 생겨 Axios 에 Proxy 를 달았다. vue.config.js 에도 프록시를 달아놓고 개발서버 환경을 주니까 사라지더라. 프록시 타겟에 요청이 가는 바람에 Vue Router 에서 설정한경로와 백엔드서버 Zull Routing 경로가 일치하여 Prefix 를 달아 해결했다. 백엔드는 /api 프론트는 Prefix 를 빼주니 Vue Router 는 경로대로, Zull은 라우팅된 서버대로 잘 돌아가더라. 프론트에서 띄우는 라우팅 경로와, 서버에서 받는 api 엔드포인트를 나누어주는 게 핵심이라고 본다. 스프링 시큐리티 설정을 얼추 마치고 추가작업을 하다가 퇴근 직전에 주말 계획을 세우고 퇴근했다. 이행하고, 준비하여서 주말을 잘 보내겠다.

생각모음 2021.01.09

Gradle 테스트 사이클에서 원하는 테스트 클래스를 실행하기

Gradle 의 테스트 사이클에서 원하는 테스트 클래스를 찾는 키워드는 --tests 이다. 원하는 타겟클래스는 이러하다. @DataMongoTest @TestInstance(TestInstance.Lifecycle.PER_CLASS) public class PersistenceTests { @Autowired private ProductRepository productRepository; private ProductEntity productEntity; @BeforeEach public void setUpDb() { System.out.println("Before"); productRepository.deleteAll();; ProductEntity entity = new ProductEntity(1,..

Etc 2021.01.08

MongoDB 인덱스 안태워질때

실패하던 테스트 Index인데 왜 ....왜지? 했었다. Stack OverFlow 에서도 미리 데이터 들어가 있으면 안됨, @Indexed 가 mongo side 것이 맞나요? 라고 해서 갈피를 못잡던 차.. @Document(collection = "products") @NoArgsConstructor @RequiredArgsConstructor @Getter @Setter public class ProductEntity { @Id private String id; @Version private Integer version; @NonNull @Indexed(unique = true) private int productId; @NonNull private String name; @NonNull priv..

Exception 2021.01.08