일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Web Server
- javascript
- 요리
- linux
- Spring Boot
- MySQL
- Design Patterns
- java
- laravel
- elasticsearch
- docker
- Oracle
- JPA
- ReactJS
- php
- db
- redis
- AWS
- Gradle
- Spring
- it
- Git
- ubuntu
- jenkins
- 맛집
- jsp
- devops
- IntelliJ
- springboot
- tool
- Today
- Total
목록Spring (73)
아무거나
Field Injection이 아닌 Constructor Injection 사용하자 평소 개발시에 스프링쪽이라든지 타 포스팅을 참고하여 Field Injection이 아닌 Constructor Injection 을 지향하게 되었다. 하지만 그 당시 간략히 이해만하고 넘어간지라 최근에 해당 내용에 대해 설명을 해야할 일이 생겼을 때 간략한 내용만 전달하게 되어서 좀 더 자세한 내용을 다시 복습하고자 포스팅을 작성하게 된다. [의존성 주입의 종류] Setter Injection public class ExampleClass { @Autowired private ExampleService1 exampleService1; @Autowired private ExampleService2 exampleService2..
특정 패키지 내부의 원하는 클래스에 특정 메소드만 지정하여 Aspect 적용 의존성 추가 [build.gradle] ... implementation 'org.springframework.boot:spring-boot-starter-aop' ... Bean 등록 [Application.java] @Bean public SelectLogAspect selectLogAspect() { return new SelectLogAspect(); } Controller 생성 [CrudController.java] import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.a..
* 참고로 해당 포스팅은 Aspect가 gradle 디펜던시에 추가되어있다는 가정하에 진행 원하는 패키지 경로 안에 그 하위에 *Service로 끝나는 파일들만 Aspect 적용 import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.Aspect; import org.springframework.stereotype.Component; @Component @Aspec..
일반적으로 log4j를 사용하는 코드를 보자. log.debug("error message example") 위와 같은 방식으로 사용하는 경우가 있으며 아래 코드를 보자 if (log.isDebugEnabled()) { log.debug("error message example"); } 이렇게 되면 두번이나 체크하게 될텐데 효과적일까? 라는 의문을 갖게 된다. 예를 들어 log.debug("Entry Number: " + i + ", Value: " + String.valueOf(entry[i])) 이런식으로 디버깅을 사용한다고 하자. 이러면 메세지 파라미터를 생성할 때 String 연산들이 일어나게 되며 해당 작업은 메세지 로깅여부에 상관없이 항상 발생하게 되어 파라미터 생성 비용을 발생시킬 수 있다...
[springboot] JPA + QueryDSL + Predicate 에서 yyyy-MM-dd 형태의 날짜 조회 방법 * 조회할 날짜의 변수명을 registerdTime이라고 하며, DB에는 TimeStamp형식으로 저장된다. ( entity에는 LocalDateTime 속성임 ) 1. 파라미터값의 속성이 String인 registerdTime을 받아온다.(ex:yyyy-MM-dd 형식으로 받아오는걸로 가정) 2. 시작날짜와 끝 날짜를 구하는 공통 클래스를 만든다. [LocalDateParser.java] import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format..
[spring] 보안 Security - 2 1. 보안 관련 taglibs 추가 [dependencies 추가 pom.xml] 이클립스 기준 pom.xml -> 하단 Dependencies탭 클릭 -> Add.. 클릭 -> Enter groupId, artifactId or sha1 prefix ... 에 security 검색 -> org.springframework.security(spring-security-taglibs) 선택 [선언부] USER ID : Log Out 2. 보안 관련 taglibs 사용 방법 [before] is Log-In is Log-Out [after] is Log-In is Log-Out 참고: https://www.inflearn.com/course/%EC%9E%90%EB..
[spring] 보안 Security - 1 1. 보안 관련 라이브러리 추가 방법 1. https://docs.spring.io/spring-security/site/docs/5.0.6.RELEASE/reference/htmlsingle/ 에서 다운받거나 dependency 추가 방법 2. 이클립스 기준 pom.xml -> 하단 Dependencies탭 클릭 -> Add.. 클릭 -> Enter groupId, artifactId or sha1 prefix ... 에 security 검색 -> org.springframework.security(spring-security-acl) 선택 (1) security-context.xml 생성 ( src/main/webapp/WEB-INF/spring/appSe..
[spring] 트랜잭션(Transaction) - 2 PlatformTransactionManager 인터페이스 보다 더욱 많이 사용되는 TransactionTemplate에 대해 알아보자. TransactionTemplate은 PlatformTransactionManager보다 더 간편하게 사용할 수 있다. 1. dao에 트랜잭션 관련 내용 추가 [testDao.java] .... //PlatformTransactionManager transactionManager; TransactionTemplate transactionTemplate; // 트랜잭션 매니저 setter 추가 // public void setTransactionManager( PlatformTransactionManager tran..
[spring] 트랜잭션(Transaction) - 1 트랙잭션이란 논리적 단위로 어떤 한 부분의 작업이 완료되었다 하더라도, 다른 부분의 작업이 실패할 경우 전체 취소되는 것이다. 이때, 작업이 완료되는것을 커밋(commit), 취소(이전으로 되돌리다)되는 것을 롤백(rollback)이라한다. -> 일상생활에서는 카드 결제나 마일리지 적립 ATM 등 사용된다. 1. dao에 트랜잭션 관련 내용 추가 [testDao.java] .... PlatformTransactionManager transactionManager; // 트랜잭션 매니저 선언 // 트랜잭션 매니저 setter 추가 public void setTransactionManager( PlatformTransactionManager transa..
[spring] jdbc 1. JDBC를 이용한 반복코드 줄이기 - DAO객체를 이용해서 DataBase의 데이터를 이용한다. 이때 매번 같은 동작을 반복하는 부분이 있다. (ex: 드라이버 로드, 커넥션 생성, DB연결, SQL실행, 자원해제) 이런 반복적인 작업들을 스프링에서는 간단하게 처리가 가능하다. * JDBC 드라이버 로드(DriverManager) -> 데이터베이스 연결(Connection) -> SQL문 실행(Statement) -> 데이터베이스 연결 해제(ResultSet) --> 이러한것들을 jdbcTemplate에서 한번에 해결할 수 있다. 2. Spring빈을 이용한 코드 간소화 - jdbcTemplate 빈 안에는 Datasource빈이 있다. 이것을 java 파일에서 갖다쓴다. ..