AOP란? AOP(Aspect Oriented Programming) spring boot application 전체에걸쳐서 사용되는 기능을 재사용. 핵심기능과 공통기능(Logging, Scheduler 등..) 을 분리시키는 방식1. Aspect 분리할 부가적인 공통 기능을 모듈화2. Advice Aspect의 구현체3. JointPoint Advice를 적용할 부분 @Before Method 실행 전에 동작 @After Mothod 실행 후 동작 @Around Method 실행 전 후 동작 @AfterReturning Method 실행 후 동작(Method 반환값 반환) @AfterThrowing 예외가 발생했을 때 동작4. Pointcut 실제로 Advice가 적용되는 부분(JointPoint의 상..
JPA Auditing JPA Auditing으로 생성시간, 수정시간 자동화 pom.xml에 dependency 추가 org.hibernate hibernate-core 5.2.11.Final BaseTimeEntity 클래스 생성 public class BaseTimeEntity { @CreatedDate private LocalDateTime createDate; @LastModifiedDate private LocalDateTime monidiedDate; } 다른 클래스에서 BaseTimeEntity를 상속받아서 createdDate, modifiedDate 관리.
Static Field를 @value로 받아오는 방법 Spring 에서 static으로 선언된 변수에는 injection할 수 없다. static 변수는 null을 반환 static이 아닌 setter메소드를 추가해서 직접 값을 넣는방법으로 사용하면 됨 public static String testField; @Value("${app.testField}") public void setTestField(String testField) { this.testField= testField; }
Environment를 이용한 외부 설정 주입 @value 어노테이션으로 외부 설정 주입이 가능하지만, Environment로 주입하는 테스트 진행 pom.xml 파일 내용의 일부 ......... xxx .... 1.0.0 application.yml 파일 내용 project: version: @project.version@ pom.xml 의 project version을 가져오는 yml 설정파일 Environment를 이용해 외부 설정 주입 @Autowired public Environment env; ..... System.out.println(env.getProperty("project.version")) pom.xml에서 설정했던 1.0.0의 version 값이 정상적으로 출력
gRPC gRPC는 google에서 만든 RPC 시스템이다. RPC란? gRPC를 알기 전에 RPC부터 알아야 한다. RPC(Remote Procedure Call) 은 프로세스간 통신 기법이다. 다양한 환경, 플랫폼에 제약이 없어서 분산시스템 기법에 좋다. 별도의 원격제어 없이 프로세스간 함수나 프로시저를 호출할 수 있다 IDL(Interface Definition Language)을 사용하여 서버의 호출 규약을 정의 ProtoBuf 서비스와 메세지를 정의하기위해 사용한다. google에서 개발한, 데이터 직렬화 오픈소스(gRPC의 IDL로 사용함) gRPC의 장점 높은 생산성, 유지보수가 좋음 환경, 플랫폼에 제약이 없다. HTTP/2 기반 통신으로, server/client가 서로 데이터를 스트리밍..
Spring boot Redis Redis channel Subscribe(lettuce 사용) 1.pom.xml 파일에 redis관련 dependency 추가 org.springframework.boot spring-boot-starter-data-redis 2.외부 redis-server를 사용하는 경우 application.yml 파일 설정 내용(Test를 위해 redis 관련 setting값만 설정) spring: redis: host: localhost port: 6379 3.redisConfiguration class에 connectionFactory를 만들고, redis사용에 필요한 bean을 생성한다. @Configuration @EnableRedisRepositories @Slf4j pu..
JPA Auditing이란? Database table에 생성, 수정일자등의 값을 자동으로 넣어주는 기능 @CreatedDate Entity가 생성되어 저장될 때의 시간 @LastModifiedDate 조회한 Entity의 값을 변경할 때의 시간 사용 example @EnableJpaAuditing @SpringBootApplication public class testApplication { public static void main(String[] args) { SpringApplication.run(testApplication .class, args); } ... } 위와 같이 EnableJpaAuditing 어노테이션을 추가해주면 CreatedDate, LastModifiedDate등의 값을 받아..
Spring IoC, DI IoC(Inversion of Control) Container BeanFactory IoC를 담당하는 핵심 Container Bean들의 의존성, lifeCycle을 관리 ApplicationContext BeanFactory 인터페이스를 상속 BeanFactory에서 제공하는 기능 외에, AOP, Message처리, 이벤트처리 등의 기능 제공 Bean을 생성할 때, 모든 Bean을 singleton으로 생성하여 관리한다 Bean 등록 방법 Component Scan @Component, @Repository, @Service, @Controller, @Configuration 등등의 Annotation들이 있다 Java 설정파일로 등록 설정파일을 이용하여 Bean을 등록하면..
싱글톤(Singleton) pattern 인스턴스가 1개만 생성되야 하는 경우에 사용되는 패턴. 하나의 인스턴스를 메모리에 등록해서 여러 스레드가 동시에 해당 인스턴스를 공유할수 있다.자바의 싱글톤 패턴 생성자를 private으로 정의해서 외부 클래스로부터 인스턴스 생성을 차단. 싱글톤 클래스 내부에, private static객체 생성 public static 메서드를 통해, 외부에서 싱글톤인스턴스에 접근할수 있도록 함 Eager Initialization 클래스가 호출될 때 인스턴스를 생성. 인스턴스를 사용하지않아도 인스턴스를 생성하기때문에 효율이 낮음. ex) public class Singleton { private static final Singleton instance = new Singlet..
지금까지의 업로드는 을 통해서 이루어지기 때문에 아래의 작업이 필요하다 업로드 후 업로드부분을 초기화시키는 작업 결과데이터를 이용해서, 화면에 섬네일이나 파일 이미지를 보여주는 작업 1.초기화 은 , 다른 DOM요소들과 조금 다르게 readonly라서, 안쪽내용을 수정할 수 없기 때문에 별도의 방법으로 초기화시켜야한다. var cloneObj = $(".uploadDiv").clone(); $("#uploadBtn").on("click", function(e){ var formData = new FormData(); var inputFile = $("input[name='uploadFile']"); var files = inputFile[0].files; console.log(files);..