SpringFramework/Spring 22

Spring Vault 연동(datasource 연결 포함)

Spring Vault 연동 예제 SpringBoot 버전 : 2.3.9.RELEASE Spring 버전 : 5.2.13.RELEASE Vault 버전 : 2.2.3.RELEASE config 설정은 따로 빼서 처리해도 되나, 소스가 복잡해지는것을 막기 위해 하나의 클래스에서 모두 처리 @Configuration public class VaultConfig extends AbstractVaultConfiguration { @Value("${vault_url}") private URI url; @Value("${vault_role_id}") private String roleId; @Value("${vault_secret_id}") private String secretId; @Value("${dataso..

jQuery DataTable Paging Model Mapping

공통 Model을 통해 개발속도 향상을 기대할 수 있도록함. 예제에서는 queryDsl을 사용한다. Front DataTable 구현부 프론트 검색 동작 // Datatable 검색 function fnSearch(){ $('#dataTable').DataTable().ajax.reload(); } 프론트 페이징 사이즈 변경 후 검색 // 페이징 사이즈 변경 function fnChangePagingSize(el){ $('#dataTable').DataTable().page.len($(el).val()); fnSearch(); } 백엔드 페이징 요청 자동매핑 Model @Getter @NoArgsConstructor @AllArgsConstructor public class DataTablePagingM..

Enum 객체 활용 방안

@JsonFormat(shape = JsonFormat.Shape.OBJECT) Front json 값 전달시 enum 객체 자체를 전달하여 front에서 code, name을 직접 선택하여 사용할수 있도록 한다. of(String code) code 값에 해당하는 enum 객체 반환 getAll() enum에 정의된 값을 List으로 반환 받는다. @JsonFormat(shape = JsonFormat.Shape.OBJECT) @Getter @AllArgsConstructor public enum CommonCodeType implements Code { TEL("tel", "전화번호"), PHONE("phone", "핸드폰번호") ; private String code; private String n..

Swagger2 설정 및 사용

설정 의존성 추가 build.gradle에 아래 의존성들을 추가 // support swagger doc compile ('io.springfox:springfox-swagger2:2.9.2') Application 설정 추가 application.yml 파일에 설정 추가 springdoc: swagger-ui: path: /test/api-docs.html # swagger ui html 파일 경로 설정, 컨트롤러에서 해당 경로를 호출하면 자동 생성된 swagger 페이지가 보인다. paths-to-match: /api/** # 매칭 기본 URL 설정 Bean 등록 기본설정 - 설정된 /api/** 이하의 모든 API의 명세를 생성. @Configuration @EnableSwagger2 public ..

class 파일내 DataSource 설정

프로젝트이 vault 기능이 필요하여, 부득이하게 Class 파일에서 DataSource 설정이 필요한 경우 아래와같이 작성한다 @Configuration @EnableTransactionManagement public class DataSourceConfig { @Autowired private ApplicationContext applicationContext; @Value("#{new Integer('${db.connection.count}')}")// 설정 파일내 개수 적용(prod, dev 분할용) private int dbConnectionSize; @Bean(name = "dataSource") public DataSource dataSource() throws Exception { Basi..

REST API

REST API 구성 Resource(자원, URI) 서버는 유니크한 ID를 가지는 Resource를 가지며, 클라이언트는 이러한 Resource에 요청을 보낸다. Method(행위, POST등) CRUD 연산 중에서 처리를 위한 연산에 맞는 Method를 사용하여 서버에 요청을 보낸다. Representation of Resource(자원의 형태, JSON) 클라이언트와 서버가 데이터를 주고 받는 형태 json, xml, text, rss 등이 있다. URL(Uniform Resource Locator) 인터넷상 자원의 위치 URI(Uniform Resource Indentifier) 인터넷상 자원을 식별하기 위한 문자열 구성, URI는 URL을 포함 REST(Representational State ..

Spring Security 세션정보 조회

@Controller로 선언된 bean 객체에서는 메서드 인자로 Principal 객체에 직접 접근할 수 있다. @GetMapping("/login/result") public String loginResult(Principal principal){ log.info("session > " + principal.getName()); return "loginSuccess"; } authentication 토큰 사용 @GetMapping("/login/result") public String loginResult(Authentication authentication){ UserDetails userDetails = (UserDetails) authentication.getPrincipal(); log.info..