반응형

Spring Boot 에서 TimeZone 설정하려면 아래와 같이 @PostConStruct를 설정해주면 된다.

 

 @SpringBootApplication public class Application {  	@PostConstruct 	void started() { 		TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul")); 	}  	public static void main(String[] args) { 		SpringApplication.run(Application.class, args);  	}  } 

UTC를 원한다면 TimeZone.getTimeZone("UTC")라고 하면 된다.

 

시간을 KST로 설정하고싶어서 TimeZone.getTimeZone("KST")라고 계속 했는데 안되서 삽질한 경험이 있다. KST라고하면 안되고

한국 시간 설정은 Asia/Seoul로 설정해주면 된다.

 

그 외 example timezone offset은 아래의 사이트에서 확인할 수 있다.

https://docs.oracle.com/javase/tutorial/datetime/iso/timezones.html

반응형
반응형


※ RDS사용시 MySQL 한글로 설정 https://pangyeon.tistory.com/9?category=682580


Spring Boot에서 데이터베이스가 UTF8로 설정 되어있음에도 불구하고 물음표(?)로 값이 들어갈 때가 있다.

이 경우 application.propertise에서 mysql 주소뒤에 

주소/테이블명/?useUnicode=true&characterEncoding=utf8


이렇게 붙여주면 데이터 입력시 한글로 잘 들어간다.

반응형
반응형


Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하는 방법이다.

JPA ORM방식으로는 https://pangyeon.tistory.com/4?category=682580 여기에 있다.


JPA ORM 방식으로 하는 방법은 여기에 있다.

1. 2018/10/24 - [Spring Boot] - Spring boot jpa map, hashmap, JSON형식



Spring Boot Json익히기

Spring boot Json 1편, 2편, 3편, 4편, 마지막

1. 2018/11/06 - [Develop/Spring Boot] - Spring Boot Json, JsonObject로 만들기 - JSON 1편

2. 2018/11/07 - [Develop/Spring Boot] - Spring Boot Json, Gson을 이용한 JsonObject to String, String to JsonObject- JSON 2편

3. 2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

4. 2018/11/12 - [Develop/Spring Boot] - Spring Boot Deserialization Json, Deserialization JsonString to JsonObject - Json 4편

5. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막


Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기



//import할 것
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

//EnittyManager 선언
@PersistenceContext
private EntityManager entityManager;


Query query = entityManager.createNativeQuery("SELECT id, password FROM Test");
query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List r = query.getResultList();

for(Object obj : r) {
		Map row = (Map) obj;
			
		for(Object key: row.keySet()) {						
			System.out.println("key : " + key + "value : " + row.get(key));
		}		
}


이렇게 하게되면 결과가 Map 형식으로 mapping되어 나타나게 되며, 만약 테스트id라는 값과 테스트pw라는 값이 Test라는 테이블에 있다면,

key : id value : 테스트id

key : password value : 테스트pw

이렇게 값이 찍힌다.



반응형
반응형

AWS Elastic BeanStalk를 이용한 Spring boot의 Jar파일 배포를 할 것이다. War파일도 다를게 없지만, 조금 다르긴하다.

차이점으로는 Java플랫폼을 사용한 Jar파일 배포는 JVM 커맨드라인을 사용할 수 없지만 대신 .ebextensions/ 의 Procfile을 통해 사용할 수 있지만, 이 글에서는 다루지 않는다. (바로 아래에 경로가 있다)

Tomcat 플랫폼을 사용한 War파일 배포는 JVM 커맨드 라인을 사용할 수 있다. 


1. Elastic beanstalk 환경변수설정시 주의사항

2019/02/12 - [Develop/Spring Boot] - Spring boot ElasticBeanstalk 환경변수설정시 주의사항


2. .ebextensions 와 Procfile

2019/02/12 - [Develop/Spring Boot] - Spring boot .ebextensions nginx 및 기본 사용방법 (AWS Elastic Beanstalk)




1. 먼저 AWS의 Elastic BeanStalk에 들어간다.

지금 같은 경우는 애플리케이션이 하나 생성되어 있어서 맨처음 화면이 아래와 같이 나타나게 되지만. 처음에는 시작하기라는 화면이 나올텐데

크게 다르지 않다. 어쨌든 생성하는 방식은 같다.


※ 주의 Jar파일 빌드전 appliaction.properties에서 server.port=5000으로 설정한다. 안하신 분들을 밑에 환경변수 설정부분을 보시면 됨. War파일은 안해도 됨. Jar파일은 ngnix가 port를 5000번으로 잡기때문




2. 화면 상단의 새 애플리케이션 생성에서 새 애플리케여신을 생성한 다음. 아래의 사진 처럼 작업의 환경 생성에 들어간다.



3. 환경 생성에 들어오면 아래와 같이 환경 티어 선택이있는데, 웹 서버 환경을 선택한다.


4.  환경이름과 도메인은 본인들이 쓸 이름을 적으면된다. 그리고 플랫폼에 Java라고 선택한다.(Jar파일을 사용할거기 때문)

War파일을 배포할 분들이라면 플랫폼에 Tomcat을 선택한다.

그리고 Jar파일을 처음 배포하는 것이기 때문에 애플리케이션 코드에서 코드업로드를 선택한다.




5. 코드 업로드를하게 되면 기존 컴퓨터에 저장되어있는 Jar파일 또는 War파일을 선택할 수 도있으며, S3를 사용하시는 분들이라면 S3에있는 파일을 사용할 수도 있다.  



6. 파일 업로드 후 추가 옵션 구성에서 본인이 필요한 옵션들을 설정할 수 있다. 특히 appliaction.properties에 들어가는 환경변수라던지

War파일 배포하는 분들이라면 JVM Command Line 명령어 등 과 로드밸런싱을 설정할 수 있다.

7. application.properties나 War파일 배포하시는 분들이라면 위 사진의 소프트웨어를 클릭하고 수정버튼을 누르고 아래와 같이 사용할 수 있다.

주의할 점으로는 application.properties파일과는 달리 예를들어 server.port 이면 SERVER_PORT 밑에 점 대신 언더바 _ 를 사용해야 한다.


※ 주의 Jar파일 빌드전 appliaction.properties에서 server.port=5000으로 설정안하신 분들은 밑에 사진의 SERVER_PORT부분을 추가하면 됨. War파일은 안해도 됨. Jar파일은 ngnix가 port를 5000번으로 잡기때문



8. 이후 저장하면 생성중이라는 콘솔화면이 나타나며 생성이 되면 대시보드가 나오게 될 것이다.

에러가 난다면 옆의 Log메뉴에서 Log를 호출하여 보면 된다.


참고 : https://docs.aws.amazon.com/ko_kr/elasticbeanstalk/latest/dg/GettingStarted.html

반응형
반응형

서버 배포시 application.properties를 함께 배포하기 민감하기 때문에 

애초에 프로그램 작성시 application.properties에는 내용을 작성하지않고 

Run Configuration에 작성을 해두는게 편한다.


1. 기존의  application.properties에 작성되어 있는 값을 지우고




2 .아래의 메뉴를 타고 들어가서



3. 아래와 같이 propery와 value에 키와 값을 적으면된다.


주의할점은 property에서 자동완성을 시켜줄 때가 있는 데 웬만하면 사용하지말고 본인이 써야하는 키값 그대로 써야한다

왜냐하면 가끔 자동완성에 spring.test-id 라고 되어있지만 내가 사용해야할 키는 spring.testId 이기 때문이다,



4. 그리고 위에 동그라미친 Common을 통해 설정해놓은 값을 export시켜 다른 곳에 사용할 수 있다. 

반응형
반응형

JPA ORM을 이용한 @Query의 결과값을 Map, JSON형식으로 바로 만들어주는 방법은 2가지가 있다


1. Map을 이용한다.

2. DTO(POJO, VO)를 생성하여 이용한다.



JPA EntityManager를 이용한 Map형식으로 Mapping하는 방법은 아래 링크에 있다.

1. 2018/10/28 - [Develop/Spring Boot] - Spring boot JPA EntityManager를 이용한 Map형식으로 mapping하기




Spring Boot Json익히기

Spring boot Json 1편, 2편, 3편, 4편, 마지막

1. 2018/11/06 - [Develop/Spring Boot] - Spring Boot Json, JsonObject로 만들기 - JSON 1편

2. 2018/11/07 - [Develop/Spring Boot] - Spring Boot Json, Gson을 이용한 JsonObject to String, String to JsonObject- JSON 2편

3. 2018/11/09 - [Develop/Spring Boot] - Spring Boot Json, Jackson을 이용한 JsonParsing - Json 3편

4. 2018/11/12 - [Develop/Spring Boot] - Spring Boot Deserialization Json, Deserialization JsonString to JsonObject - Json 4편

5. 2018/11/13 - [Develop/Spring Boot] - Spring Boot Json, hashmap to json , JsonObject 만들기- JSON 마지막



Spring boot에서 MySQL JSON 타입 SELECT하는 방법

1. 2018/11/30 - [Develop/Spring Boot] - Spring boot MySQL JSON - MySQL JSON DATA TYPE 값 가져오기



1. Map을 이용.

 

(html편집기가 자꾸 안되서 사진으로 대체합니다)


select 문 안에 new map을 선언한다. 주의할 점으로는 as를 사용하지않으면 Map의 Key값에 숫자가 들어간다. 예를들면 만약 저 위의 코드에 as를 주지 않는다면 {0 : id, 1 : password}라는 숫자가 0부터 증가하는 형식으로 들어가게 되며 as를 주게되면 as 로 선언한 이름이 Key값으로 들어간다. 

 2. DTO(POJO, VO)를 이용하는 방법. 먼저 패키지를 생성하고 DTO(POJO, VO)를 생성한다 ex) net.test.com // 패키지안에 TestDTO.java 생성
public class TestDTO{
   private String id;
   private String password;

   public TestDTO(){}

   public Test(String id, String password){
        this.id = id;
        this.password=password;
   }
   public String getId(){
         return id;
   }
   public void setId(String id){
         this.id =id;
   }

   public String getPassword(){
         return password;
   }
   public void setPassword(String password){
         this.password =password;
   }
}

주의할점은 디폴트 생성자를 필수적으로 생성해줘야 한다. 이후
@Query("select new  net.test.com.TestDTO(t.test_id, t.test_password) from Test t")
	List test();

//위의 값을 가져오는 방법.
List t = testDAO.test();
t.getId()

1번의 Map과 다르게 as를 설정하지 않아도 {id : id} 값으로 잘 받을 수 있다. 하지만 일일이 DTO(POJO, VO) 를 생성해야 하는 번거로움이 존재.


반응형
반응형

spring.profiles.active 와 외부 properties입력시 주의사항.


https://stackoverflow.com/questions/31038250/setting-active-profile-and-config-location-from-command-line-in-spring-boot

반응형
반응형

Spring boot에서 개발시 사용할 Log와 배포시 사용할 Log를 profile설정을 통해 구분할 수가 있다.


기존에 작성되어 있는 logback-spring.xml 에서 아래와 같이 추가하면 쉽게 가능하다.




		
			
			


이후 이클립스에서 실행할 때는 상단 메뉴 또는 패키지 우클릭에서 Run -> Run Configuration 에서 아래 사진같이 Profile에 xml에서 지정해놓은 이름을 적어두면 된다.



배포시 서버에서 Jar파일을 이용한 커맨드라인으로 실행할 경우 아래와 같이 실행하면 된다.

java -jar -Dspring.profiles.active=prod test-0.0.1-SNAPSHOT.jar

-jar 뒤에 붙는 -D옵션같은 경우는 항상 Jar파일 앞에 적용해줘야 한다.


반응형

+ Recent posts