Programming/Java & JSP & Spring 썸네일형 리스트형 Base64 인코딩 (+ Base58) 인코딩이란? 인코딩(encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태나 형식으로 변환하는 처리 혹은 그 처리 방식을 말한다. Base64 Base64는 인코딩 방식 중에 하나로 문자 코드에 영향을 받지 않은 64개의 아스키 영역의 문자들로 이루어진 문자열로 변경하는 것을 말한다. 데이터가 여러 플랫폼에서 통신하면 플랫폼의 차이로 데이터가 깨질 수도 있다. 이를 방지하기 위해 아스키 문자열이라는 공통 캐릭터를 사용하여 안전하게 데이터를 송수신한다. Base64의 본래 뜻은 64진법이라는 뜻이다. 8진수는 octet digits 또는 base8, 16진수는 hexdecimal 또는 base16이 된다. 사용 용도 Base64는 압축의 목적도 아.. 더보기 [Spring] DI - 빈 주입하기 With Kotlin Spring에서는 빈을 주입하는 방법은 세가지가 있다. Field Setter Constructor Field 우선 첫번째 방법으로는@Autowired 어노테이션을 이용하여 주입하는 방법이다. @Service class UserService { @Autowired private lateinit var userRepository: UserRepository ... // Business Logic } Constructor 다른 방법으로는 생성자에 주입할 객체를 파라미터로 작성하는 방법이다. @Service class UserService(private val userRepository: UserRepository) { ... // Business Logic } 위의 UserService 클래스처럼 생성자가 .. 더보기 [Spring] @Retryable 어노테이션 특정 Exception이 발생했을 경우 일정 횟수만큼 재시도할 수 있는 어노테이션이다. 예를 들어, 서비스 내에서 다른 서비스에 있는 API를 호출할 때 간헐적으로 토신 오류가 발생할 수 있다. 하지만 이때마다 사용자가 에러메세지를 받아본다면 당혹스러울 것이다. 사용법은 아주 간단하다. 1. Spring Application에 @EnableRetry 어노테이션 추가 2. 재시도 하고 싶은 메소드에 @Retryable 어노테이션 추가 - include : 여기에 설정된 특정 Exception이 발생했을 경우 retry한다. - exclude : 설정된 Exception 재시도 제외 - maxAttempts : 최대 재시도 횟수 (기본 3회) - backoff : 재시도 pause 시간 @Retryable(.. 더보기 [Spring] 자동설정 (AutoConfiguration) 스프링에서 그 많던 설정은 스프링부트로 넘어오면서 어디로 사라진걸까?? 스프링부트는 스프링에서 주로 사용했던 설정들을 자동으로 설정한다. 이 기능은 자바의 main 진입점에 @SpringBootApplication 을 붙임으로서 사용할 수 있다. @SpringBootApplication class Application @SpringBootApplication 안에 있는 @ComponentScan 과 @EnableAutoConfiguration 어노테이션을 통해 프로젝트의 스프링 빈을 찾아내어 등록한다. @ComponentScan 은 @Repository @Configuration @Service등을 찾아내어 스프링 빈으로 등록하는 기능을 가진 어노테이션이다. @EnableAutoConfiguration은.. 더보기 [JPA] Entity 칼럼 상속 테이블을 설계하다보면 칼럼이 많이 중복되는 경우가 있을 수 있다. (정규화를 할 수 없는 경우, 예를 들어 히스토리 성 테이블 같은 경우) 테이블과 매핑하지 않고 부모 클래스를 상속받는 자식 클래스에게 매핑 정보(엔티티 칼럼)만 제공하고 싶으면 @MappedSuperclass를 사용하면 된다. @MappedSuperclass는 비유를 하자면 추상 클래스와 비슷한데 @Entity는 실제 테이블과 매핑되지만 @MappedSuperclass는 실제 테이블과 매핑 되지 않는다. 단순한 상속 목적으로 사용한다. @MappedSuperclass @Data public abstract class BaseEntity { @Id @GeneratedValue private Long id; private String nam.. 더보기 [SpringBoot] 프로파일(Profile) 설정 Web개발을 하고 배포할 때 로컬 설정과 배포 설정은 다를 수 있다.또한 기능을 테스트할 때의 설정도 다를 수 있다. 하지만 그때마다 properties 설정 파일을 계속해서 수정할 순 없다.이럴 때 프로파일 파일을 만들면 편리하다. application.properties 파일이 있는 위치에서 application-{profile name}.properties와 같이 파일을 생성해주면 된다. 예를 들어 내부 개발 환경인 "local"과 실제 배포 환경인 "production"이 필요하다면 다음과 같이 파일을 만들면 된다.application-local.propertiesapplication-production.properties application.properties 파일은 해당 프로필 파일들이 공통.. 더보기 [Spring Boot] 스프링부트에서 JSP 사용하기 Java 기반의 Web개발을 할 때 대부분은 Spring Boot를 이용한다. Spring Framework를 기반으로 MVC를 쓸 때와 달리 Spring Boot는 static폴더와 templates폴더가 있어서 리소스 파일이나 템플릿을 폴더에 넣으면 자동으로 경로로 지정되어작동되게 해준다. 그러나 Spring Boot에서 JSP를 사용하려면 따로 설정이 필요하다. 1. 먼저 jasper 라이브러리를 추가해주어야 한다.//JSP compile('org.apache.tomcat.embed:tomcat-embed-jasper') 2. JSP파일은 Spring Boot 기본 templates 폴더 안에서 작동하지 않는다.src/main/webapp/WEB-INF/ 폴더를 직접 생성한 뒤 그곳에 jsp파일을 .. 더보기 [JPA] 테이블생성 어디서 할 것인가? JPA를 사용하면서 편한 기능 중 하나는 Query문을 전혀 사용하지 않고도테이블을 생성하고 작성할 수 있다는 것이다. 보통 JPA가 익숙해지기 전까지는 테이블을 자동으로 생성해주는 옵션을 사용한다. 하지만 프로젝트를 진행할 때마다 자동 생성 옵션으로 테이블을 생성할 것인가?아니면 쿼리문을 통해 직접 수동 생성할 것인가? 두가지 옵션 중 고민을 하게 된다. 우선 테이블을 자동 생성했을 때를 알아보자편하게만 보이는 테이블 자동 생성이 운영 중이나 개발 중에 치명적인 오류나 불편함을 초래할 수 있다. 우선 테이블 생성 옵션부터 알아보면 다음과 같다. (설정파일에서 옵션 변경)none : 기본 값이며 아무 일도 일어나지 않는다.create-only : 데이터베이스를 새로 생성한다.drop : 데이터베이스를 d.. 더보기 이전 1 2 3 4 5 6 ··· 10 다음