Tech/SpringBoot
-
spring cloud configTech/SpringBoot 2018. 2. 18. 17:53
지금까지 spring framework 을 사용하여 개발시 아래와 같이 local/dev/test 와 같이 여러개의 설정파일들을 나눠서 사용하였다.기존 dev/test/local 환경일때마다 주석처리 해주는 수고는 덜어주었다.하지만 설정 값을 변경 후에는 꼭 서비스를 재 시작 해야하는 번거로움 이 존재 하였다. 이런 문제점을 해결할수있는 서비스가 spring cloud config 라는 것이다. http://docs.pivotal.io/spring-cloud-services/1-5/common/config-server/index.html spring cloud config 를 도입했을때 프로세스는 그림과 같다. 간단히 요약 하면,,,,- config 파일을 별도로 관리하는 git repository (d..
-
spring boot admin serverTech/SpringBoot 2018. 2. 11. 14:41
spring boot admin 은 기본적인 모니터링 서비스를 제공하며,UI 또한 제공 해주고 있음admin-server 와 client dependency 를 각 영역에 설정 해주면 admin -server 에서 client 들에 대해 리소스 모니터링뿐만 아니라 다양한 기능들을 활용 할수있다. 참고 동영상 주소: https://youtu.be/KZjqKL7r4PY 설정 방법:admin-server 가 될 pom.xml 에 maven dependency spring-boot-admin-server 추가 하고, @EnableAdminServer 를 추가해주면 된다.다음으로 client가 될 pom.xml 에 maven dependency spring-boot-admin-starter-client 를 추가해..
-
JPA 와 JDBCTemplate 저장 속도 비교Tech/SpringBoot 2017. 9. 28. 18:23
spring boot 에서 jpa 와 jdbctemplate 을 제공해주며 , jpa 와 jdbctemplate 동시에 둘다 사용 가능 하다. pom.xml org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-jdbc 접속 정보는 properties 에 아래와 같이 한다. spring.datasource.username=xxxx spring.datasource.password=xxxx spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://xxxx:xxxx/parcelab..
-
JPA saveIterable 과 save 저장 속도Tech/SpringBoot 2017. 9. 28. 14:48
spring 에서 jpa 를 사용하여 save 를 하는것과 save iterable 을 할 경우의 차이점과 속도를 알아보도록 한다. List save(Iterable var1) iterable 형태로 인자 값을 전달 할 경우 hibernate 는 내부적으로 메모리에 올린 다음 한번에 DB 에 커밋을 하도록 한다. 해당 메소드의 내부 로직을 알아보도록 하자. @Transactional public List save(Iterable entities) { List result = new ArrayList(); if(entities == null) { return result; } else { Iterator var3 = entities.iterator(); while(var3.hasNext()) { S ent..
-
JPA 사용시 Lombok 의 Data 어노테이션 사용 이슈Tech/SpringBoot 2017. 8. 28. 15:36
아래 예시로 설명 하도록 한다. @Dataclass A{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(fetch=FetchType.LAZY,cascade = CascadeType.ALL) @JoinColumn(name="a_id") private List bList; } @Dataclass B{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToMany(fetch=FetchType.LAZY,cascade = CascadeType.ALL) @JoinColumn(name="a_id") private Long a_id; A 와 B..
-
Java 8 ArrayList sortTech/SpringBoot 2017. 8. 10. 19:00
아래와 같이 객체 클래스가 존재 한다고 했을때해당 객체를 담고 있는 리스트를 생성 했다고 하자.이때 리스트에서 해당 객체들을 시간순으로 (descending) 하려고 한다.java8 에서 제공하는 stream 을 사용하여 간단하게 정렬 하는 방법을 사용해봄@Datapublic class MyClass{private Date time;private message; }List resultList = new ArrayList();resultList.stream().sorted(Comparator.comparing(StatisticsDTO::getTime).reversed()).collect(Collectors.toList());
-
영문과 숫자를 조합한 랜덤키 만들기Tech/SpringBoot 2017. 8. 2. 11:00
// 영문 + 숫자를 조합한 키 생성 public static String generateKey() throws Exception{ // 16byte 의 랜럼 수치를 저장 String key = ""; while(true) { byte[] bytes = new byte[16]; SecureRandom random = new SecureRandom(); random.nextBytes(bytes); try { key = new String(Base64.encodeBase64(bytes, false), "UTF-8").replace("==", ""); } catch (Exception e) { log.error("generateKey: "+e); throw new Exception(e); } if(key.ma..
-
특정 날짜로부터 남은 날짜 구하기Tech/SpringBoot 2017. 8. 2. 10:55
남은 날짜를 계산할때 23시간 전은 0 으로 되기 때문에 , 0일 경우 시간으로 다시 계산 한 후 시간으로 비교하도록 하였다 // 남은 날짜 계산 public static int calcRemainDate(Date end) throws Exception{ Date now = new Date(); int remain = (int) ChronoUnit.DAYS.between(now.toInstant(),end.toInstant()); if(remain == 0){ // 시간으로 계산 하고 있으므로 23시간 전이면 0 이 되므로 시간으로 다시 계산한다 remain = (int)ChronoUnit.HOURS.between(now.toInstant(),end.toInstant()); if(remain >0){ r..
-
특정날짜의 요일 구하기Tech/SpringBoot 2017. 8. 2. 10:43
특정 날짜의 요일을 구한다. public static String getDateDay(Date date) throws Exception { String day = null; Calendar cal = Calendar.getInstance(); cal.setTime(date); int dayNum = cal.get(Calendar.DAY_OF_WEEK); switch(dayNum){ case 1: day = "일"; break; case 2: day = "월"; break; case 3: day = "화"; break; case 4: day = "수"; break; case 5: day = "목"; break; case 6: day = "금"; break; case 7: day = "토"; break; }..