Tech/SpringBoot
-
Java 시간 포맷 및 시간 계산 쉽게 하기Tech/SpringBoot 2017. 7. 27. 09:42
아파치 commons 의 라이브러리를 사용한다. import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; 오늘 날짜를 yyyyMMdd 형식의 문자열로 출력 System.out.println("XX: "+DateFormatUtils.format(new Date(),"yyyyMMdd")); 오늘부터 3일전 날짜 구하기 DateUtils.addDays(new Date(),-3) 이밖에도 다양한 시간을 계산 할 수있는 라이브러리를 제공 한다.
-
JPA Indexing 설정 방법Tech/SpringBoot 2017. 7. 25. 10:25
Entity 클래스에 인덱싱 설정 하려는 컬럼 명을 명시해주면 인덱싱 설정이 된다.@Table(indexes = {@Index(columnList="mycol1"), @Index(columnList="mycol2")})참고로 JPA 를 사용하여 자동 테이블 생성시 기본키, 참조키 는 자동으로 인덱싱을 해주게 된다. 참고자료 :https://stackoverflow.com/questions/3405229/specifying-an-index-non-unique-key-using-jpa
-
EnableSNIExtension 확장 기능 끄기Tech/SpringBoot 2017. 7. 20. 17:58
handshake alert: unrecognized_name; nested exception is javax.net.ssl.SSLProtocolException: handshake alert: unrecognized_name Server to Server 로 API 서비스를 호출 할 경우 위와 같은 exception 발생함.restTemplate.postForObject(new URI(apiServerUrl),request,String.class); 해결책:enableSNIExtension=false 로 SNI 확장 기능을 끄도록 한다.여러가지 방법이 있겠지만 일단 아래와 같은 방법으로 해결java -jar -Djsse.enableSNIExtension=false "${DAEMON}" 서버 실행시 위와..
-
Spring RedisTemplate-HashOperation 사용Tech/SpringBoot 2017. 7. 7. 16:43
RedisTemplate-HashOperation 사용법@Autowired private RedisTemplate redisTemplate; // @Resource(name = "redisTemplate") // private HashOperations hashOperations; @Test //@Ignore public void redisTest() throws Exception{ redisTemplate.setHashKeySerializer(new StringRedisSerializer(StandardCharsets.UTF_8)); redisTemplate.setHashValueSerializer(new StringRedisSerializer(StandardCharsets.UTF_8)); String..
-
스프링에서 객체를 리턴할때 null 값인 필드값을 제외 하고 싶을 경우Tech/SpringBoot 2017. 6. 23. 10:17
스프링에서 객체를 리턴할때 null 값인 필드값을 제외 하고 싶을 경우 가 있다.아래 와 같이 null 필드값들이 포함된 객체가 있다고 할때 { "id": 5, "name": "Gavin", "password: null, "birthDate": null, "email": null } application.properties 에서 다음과 같이 설정 하도록 한다. spring.jackson.default-property-inclusion: NON_NULL { "id": 5, "name": "Gavin" } null 이 아닌 데이터들만 출력하게 된다. 주의 사항:위의 옵션 설정시 어플리케이션 모든 객체에 일괄 적용되므로 검증시 고려해야 함.
-
Spirng Vaadin HelloworldTech/SpringBoot 2017. 6. 21. 08:47
Spring Vaadmin Helloworld스프링 바딘? 일반적인 웹 개발시 프론트엔드에서 자바스크립트와 html,css 를 별도의 언어로 개발해주어야 한다.바딘 프로젝트로 개발 할 경우 순수 자바 로 프론트 영역까지 개발 할수 있도록 해준다.간단한 Spring Vaadin HelloWorld 출력 해보기 설정: IntelliJ 에서 Spring Initialize 프로젝트를 선택 -> dependency 에서 vaadin 선택 com.vaadin vaadin-bom ${vaadin.version} pom import vaadin maven 안을 들여다보니 다양한 dependency 들이 존재 한다.vaadin dependency -> server,push,themesAdd-on dependency -..
-
PersistentObjectException: detached entity passed to persistTech/SpringBoot 2017. 6. 15. 14:11
아래 에러는 JPA 사용시 Entity 들간 매핑시 Cascadetype 으로 인하여 발생한 에러이다. PersistentObjectException: detached entity passed to persist해당 엔티티 관계는 아래와 같다 (에러발생 엔티티들의 관계 )@Entity @Table(name="parent") class Parent{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; } @Entity @Table(name="child") class Parent{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToOne(fetch = F..
-
Spring profile 적용Tech/SpringBoot 2017. 6. 9. 12:25
스프링을 사용하여 개발 할 경우 개발/테스트/운영 까지 단계에서 환경 설정들이 각각 다를 수 있다.그중의 한 예로 데이터베이스를 들수 있다.개발 디비 ,운영디비 ,테스트 디비 들의 정보들을 하나의 프로퍼티로 관리하다보면 많은 반복 작업이 있을 수 있다.이러한 문제점들을 각 환경에 맞는 프로파일설정을 통하여 해결 하도록 한다.(완전한 해결책은 아님)개발 환경은 intelliJ를 사용한다는 가정아래 와 같이 패키지 안에 각각 디플로이 디렉토리를 생성하고 각각의 환경에 맞는 프로퍼티 설정을 해준다. 메이븐 설정파일인 pom.xml 에서 아래 와 같이 각 환경 설정 프로퍼티 파일을 추가 해준다. dev dev local local test test op op 각 프로파일 설정들은 디플로이먼트에 있는 설정 파일들..
-
Java8 Stream 사용Tech/SpringBoot 2017. 5. 24. 17:45
@Test public void streamTest() { List accountlist = new ArrayList(); AccountModel a1 = new AccountModel(); a1.setName("a1"); AccountModel a2 = new AccountModel(); a2.setName("a2"); AccountModel a3 = new AccountModel(); // a3.setName("a3"); accountlist.add(a1); accountlist.add(a2); accountlist.add(a3); List result = new ArrayList(); // accountlist.stream().forEach(ac->result.add(ac.getName())); a..
-
Java8 stream - list compareTech/SpringBoot 2017. 3. 27. 10:46
자바8 에서 제공하는 스트림을 사용하여 리스트에서 데이터 비교할 경우 쉽게 처리할 수 있는 방법 List AAAList = Array.asList();int findInt = 10; List findList = AAAList.stream().filter(A->findInt==A.getValue).collect(Collectors.toList()); AAA 타입의 리스트가 존재 할 경우 해당 리스트에서 finInt값을 가진 객체들을 추출하여 새로운 리스트를 만들 경우 사용.