일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- error페이지 설정
- unresolved compilation problems
- 프로그래머스
- 조건위치 효율성
- Sequence
- sql error [1] [23000]: ora-00001
- ecleemma
- Java
- select즐겨찾기
- 이클립스형광줄
- 테크톡
- 테이블복사생성
- 메모리낭비적은string연산
- this
- git
- 오버로딩
- 이클립스느림
- 이클립스로딩
- this()
- 오블완
- sql error [936] [42000]: ora-00936
- 다형성
- 이클립스무한로딩
- 이클립스로딩지연
- sql error [947] [42000]: ora-00947
- oracle
- 우아한테크
- 티스토리챌린지
- java크롤링
- 생성자오버로딩
목록Spring (33)
코딩항해기

1. 확장팩 설치 (java, Gradle) 2. 프로젝트 생성상단 검색 창에 >Spring 검색을 통해 생성 도구를 불러올 수 있다. 잠시 로딩 시간 이후 버전을 선택할 수 있는 창이 나온다. 원하는 버전을 선택한다. 그 다음은 사용할 언어를 선택한다. 프로젝트와 패키지명도 정해준다.War를 선택하고,Java 버전도 골라준다.여기서는 주입할 dependency를 고르면 된다. 그러고나면 파일 탐색기가 켜지는데, 프로젝트를 생성할 폴더를 선택해주면 생성이 완료된다.

REST APIREST를 기반으로 만들어졌으며 REST Representational State Transfer 자원을 이름으로 구분하여 자원의 상태를 주고받는 모든 것을 의미한다. 즉, HTTP URI를 통해 자원을 명시하고 HTTP Method (POST, GET, PUT, DELETE, PATCH 등)을 통해 자원에 대한 CRUD를 적용하는 것을 의미한다.REST API란 REST의 원리를 따르는 API이다. CRUD OperationCreate : 데이터 생성(POST)Read : 데이터 조회(GET)Update : 데이터 수정(PUT, PATCH)Delete : 데이터 삭제(DELETE) REST 구성 요소자원(Resource) : HTTP URI자원에 대한 행위(Verb) : HTTP Meth..

예전 첫 SpringBoot 프로젝트를 할 때 단위 테스트를 해봤던 경험이 있었으나 그 때는 잘 모르고 사용했던 것 같아 관련한 내용을 정리해보고자 한다. 단위 테스트 Unit Test단위 테스트는 유닛 테스트라고도 하며 소프트웨어 테스트의 한 유형으로 소프트웨어의 개별 구성 요소 또는 모듈이 예상대로 작동하는지 검증하는 과정이다. 여기서 단위는 보통 메서드 또는 함수, 클래스와 같은 소프트웨어의 가장 작은 테스트 가능한 부분을 의미한다. 단위 테스트 특징독립성각 테스트는 다른 테스트와 독립적으로 실행되며 테스트 간의 상호 의존성을 가지지 않는다. 빠른 실행단위 테스트는 비교적 적은 코드량을 테스트하기 때문에 빠르게 실행된다. 모의 객체 사용단위 테스트에서는 외부 의존성을 모의 객체로 대체하여 테스트한다..

문제 발생 이유Java에서는 Camel case를 DB에서는 Snake case를 사용하기 때문에 컬럼명과 필드명이 불일치할 수 밖에 없고, 이 경우 값을 주입하지 못해 null값이 출력되게 된다. 하지만 Java에서 Snake case를 사용하는 것은 권장되지 않으므로 설정을 통해 해당 차이를 인지 시켜주는 것이 좋다. 해결방법mybatis설정파일(xml)설정 값을 추가해 Camel case로 변경되는 것을 인지시켜줄 수 있다. 별칭(AS) 설정alias를 통해 별칭으로 필드명을 지정해 주입시킬 수도 있다.예를 들어 컬럼명이 TEST_NUM이고, DTO의 필드명이 testNum이라면, 별칭을 통해 일치시키는 방식이다.SELECT TEST_NUM AS testNum FROM TEST; resultMa..

*만약 개발도구(IDE)가 이클립스라면 MyBatis 플러그인이 필요하다. (인텔리제이는 필요없음)*정리한 내용은 spring 방식으로 관련 어노테이션을 사용하는 springboot에서는 mapper인터페이스를 사용한다.마이바티스 MyBatis (IBatis)자바 개발자들이 데이터베이스를 쉽게 다룰 수 있도록 도와주는 오픈 소스 ORM(Object-Relational Mapping) 프레임워크이다.마이바티스는 SQL문과 프로그래밍 언어 코드를 분리해 응집도를 높이고 결합도를 낮춰 유지보수에 용이하다.매핑 Mapping서로 다른 데이터가 서로 오갈 수 있도록 변환하는 것이다.ORM의 경우 객체(DTO,VO)와 테이블(또는 SQL구문, ResultSet(결과) 등)의 데이터가 서로 오갈 수 있도록 변환(매핑..

HikariCPHikariCP는 오버헤드 제로의 프로덕션 지원 JDBC 연결 풀(커넥션 풀 관리 프레임워크)이다. 데이터 베이스 연결(Connection)을 관리해주는 라이브러리로 커넥션 풀에 설정된 커넥션 사이즈만큼 연결을 허용해 요청에 대해 순차적으로 DB 커넥션을 처리해준다. HikariCP는 DBCP(Database Connection Pool)를 관리하며, 여러 라이브러리가 있지만 가볍고 빠르게 처리할 수 있다는 장점을 가지고 있어 Spring Boot 2.0 이후 부터는 기본 옵션으로 채택하고 있다.(Spring Boot 2.0 이전에는 tomcat-jdbc를 사용했다.) JDBC (Java Database Connectivity)데이터 베이스에 접속할 수 있도록 하는 JAVA API로 자료..

[Spring] 템플릿 패턴 : JDBCTemplate 적용 (DAO 고도화)템플릿 패턴복잡한 로직, 반복되는 로직을 캡슐화하는 패턴으로 중복되는 코드를 줄이고 유지보수를 편리하게 할 수 있다. GoF 디자인패턴 : 템플릿 패턴알고리즘의 구조를 메서드에 정의하고, minibcake.tistory.com KeyHolder가 필요한 이유가게 정보를 가진 Store 테이블과 해당 Store의 영업 정보를 가지고 있는 StoreWork 테이블이 있다. 이 테이블은 부모자식관계로 StoreWork가 Store의 PK를 FK로 갖는 구조다. 가게를 새롭게 만들때 가게 정보와 가게 영업 정보를 모두 입력받아 두 테이블에 데이터를 넣게되는데, 이때 Store에 데이터를 넣는 것까지는 문제가 없지만 StoreWork 데..

프로젝트 경로를 받아오기 위해 여러 경로 메서드에 대한 기록을 남긴다.ServletContext는 직접 Spring 컨테이너가 주입해줄 수도 있고, session에서 받아올 수도 있으며, request에서 받아올 수도 있다. 기록한 메서드 외에도 다양한 경로 메서드가 있다. (+++ target 폴더로 경로가 뜨는 것은 인텔리제이 로컬 서버 기본 설정이 target으로 되어있기 때문이다. 수정하면 수정한대로 뜬다.) [Tip] 인텔리제이 정적리소스 실시간 반영인텔리제이의 로컬 서버는 target 폴더를 통해 빌드한 소스로 보여주기 때문에 정적리소스가 추가되면 서버를 재시작하지 않는 이상 반영되지 않는다. 이 문제를 로컬 서버 설정 수정을 통해 해minibcake.tistory.com log.warn("-..

MultipartFile을 사용해 이미지 파일을 업로드할 수 있다.먼저 MultipartFile로 이미지 파일을 업로드 받기 위해서는 몇 가지 환경을 조성해야한다. DTO에 MultipartFile을 타입으로 갖는 필드 추가해당 필드를 통해 view로부터 전송되는 MultipartFile을 자동 주입 받을 수 있게 된다.@Getter @Setter @ToStringpublic class ImageDTO { private int imageId; private String path; private int bid; private MultipartFile image;} 이때 MultipartFile를 자동으로 import하지 못하는 경우 의존성을 추가한다. commons-fileupl..

@Order동일한 조인포인트에 여러 개의 Advice가 지정된 경우, 여러 개의 AOP가 같은 시점에 동작하게 되는 중첩 AOP상태가 된다. 특히 Spring framework에서 정의한 AOP가 사용될 때 자연스럽게 중접 AOP가 되는 경우가 많이 있는데, 이 때 먼저 실행해야하는 AOP가 있다면 @Order를 통해 우선 순위를 지정할 수 있다. Spring에서 자주 사용하는 @Transectional 어노테이션을 사용하는경우 Transaction Advisor 다음에 다른 Advisor가 위치하면 해당 Advisor 또한 트랜잭션에 포함되므로 수행되는 시점은 굉장히 중요하다. 또한 경우에 따라 순서가 뒤섞이며 의존성 관련한 문제가 생길 수도 있다. 문법위치는 중첩되는 Advice 메서드 위에 위치한..