목록WebApp/Spring (10)
miinsun
📌 원인 : @Query 사용 @Query(value = "SELECT * FROM place_keyword pk "+ "ORDER BY (CASE WHEN pk.keyword_id = :keyword THEN 1 ELSE 2 END)") List findPlaceKeywordBykeyword(@Param(value = "keyword") int keyword); ❌ 에러 위의 코드를 실행시키고자 했는데 이런 오류가 발생했다... @Query 어노테이션을 사용해 MySQL, Oracle 등 네이티브 쿼리를 수행하려면 아래와 같이 native Query 속성을 true로 설정해줘야 한다. nested exception is java.lang.IllegalArgumentException: Validation..
네이버 블로그 검색 결과를 프로젝트에 사용하기 위해서 네이버 open api를 이용해보았다. Naver Developers의 공식문서를 많이 참고해가면서 나름대로 활용했다. 이것보다 효율적으로 사용할 수 있는 방법도 있을것 같으니 시간이 되면 한번 찾아봐야겠다. 1. 클라이언트 키 발급 애플리케이션 - NAVER Developers developers.naver.com 먼저 위 사이트에 접속해서 클라이언트 키를 발급받자 애플리케이션 이름: 프로젝트, 서비스를 대표하는 이름 사용 API: 블로그 검색 같은 경우 데이터랩(검색어트렌드)를 선택하면 된다. 웹 서비스 URL: 로컬 환경에서 개발하는 경우, 'http://127.0.0.1:포트번호' 를 입력해주면 된다. 2. API 관리 [Spring] API ..
지금 만들고 있는 프로젝트에서 카카오, 네이버와 같은 여러 외부 API를 사용해야 되서 따로 API KEY를 관리 할 필요를 느꼈다. 나는 properties 파일을 이용해 API KEY를 숨겨보았다. 빌드 툴은 Maven을 이용했으며, 먼저 파일 구조는 아래와 같다. 1. application-API-KEY.properties 파일 생성 NAVER-CLIENT=YYYYYYYYYYYY NAVER-KEY=YYYYYYYYYY 필요한 클라이언트 키와 private 키를 적어준다. 위는 샘플 코드로 각자 발급된 키 정보를 적어줘야한다. 2. application.properties 파일 수정 #API KEYS spring.profiles.include=API-KEY 3. .gitignore 파일 수정 ### A..
📌 원인 : 오라클은 mySql과 다르게 id 자동 증가가 불가하다. 📌 해결 방법 JPA를 통해 시퀀스 생성기를 만들어서 @ID 값에 직접 주입해주자 1. DB에 시퀀스 생성 CREATE SEQUENCE FOLDER_SEQ START WITH 1 INCREMENT BY 1; 2. 시퀀스 생성기 만들기 @SequenceGenerator( name = "FOLDER_SEQ_GENERATOR" , sequenceName = "FOLDER_SEQ" , initialValue = 1 , allocationSize = 1 ) public class Folder implements Serializable{ ... } 3. 시퀀스 적용 @Id @Column(name="folder_Id") @GeneratedValue..
📌 JPA 복합키 설정하는 방법 먼저 PK 클래스를 만들어 준다. @Data class UserLikePlacePK implements Serializable{ private String userId; private int placeId; } 만들어준 PK 클래스를 JPA 도메인 클래스에 적용해준다. @SuppressWarnings("serial") @Entity @Table(name="user_like_place") @NoArgsConstructor @AllArgsConstructor @Getter @Setter @IdClass(UserLikePlacePK.class) public class UserLikePlace implements Serializable{ @Id @Column(name = "use..
📌 원인 : 한글 파라미터를 넘겨 api 테스트했을 때 위와 같이 한글이 깨진다. 📌 해결 방법 GET과 POST방식이 서로 다른 방법으로 해결 가능하다. 1. POST 방식 해결 방법 web.xml 추가 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* 2. GET 방식 해결 방법 server.xml 추가 📌 해결 완료 아래 사진과 같이 필요한 '숲'을 인식해 필요한 값을 리턴해준다.
1. 단위 테스트 단위 테스트란? 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 이를 통해 문제 발생 시 정확하게 어느 부분이 잘못되었는지를 재빨리 확인할 수 있게 해준다. JUnit을 이용한 단위 테스트 JUnit이란 자바 프로그래밍 언어용 단위 테스트 프레임워크이다. ex) @DisplayName("자동차가 전진한다") @Test public void moveCar() { // given Car car = new Car("dani"); // when car.move(4); // then assertThat(car.getPosition()).isEqualTo(1); } @DisplayName("자동차가 멈춘다") @Test public void stopCar() { // give..
💻 실습 환경 Language: Java8 Spring Boot IDE: IntelliJ 💬 요구 사항 Spring Security를 이용해 로그인, 로그아웃, 패스워드 암호화 기능을 구현한다 📌 스프링 시큐리티 프레임워크 추가 build.gradle파일에 아래 하단에 코드 추가 // 스프링 시큐리티 implementation 'org.springframework.boot:spring-boot-starter-security' // Thymeleaf (뷰 템플릿 엔진) implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' 📌 스프링 시큐리티 활성화 WebSecurityConfig.java 파일 생성 import org.springf..