일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- KAFKA
- mybatis
- redis
- Hibernate
- grafana
- WebLogic
- docker
- RabbitMQ
- jmeter
- Selenium
- cassandra
- vue.js
- spring boot redis
- ChannelPipeline
- Redis Sentinel
- docker-compose
- Airflow
- netflix oss
- spring boot
- Spring Open Feign
- spring cloud
- JPA
- MySQL
- Netty
- weblogic 10
- docker compose mysql
- argo cd
- Docker Compose
- QueryDSL
- coalesce
- Today
- Total
목록Spring (98)
IT.FARMER
안드로이드의 앱개발을 위해 서버를 API 형태로 만들어야 하다보니 API문서를 만들고 테스트할수 있는 환경을 갖추어 주려면 엑셀이나, Jmeter와 같은 툴을 이용하여 테스트 하여야 했다. 또한 API를 변경할때마다 문서를 변경해주고 최신화 시켜주어야 하는 작업을 해야 한다. Swagger는 간단한 설정으로 프로젝트에서 지정한 Annotation을 이용하여 API를 보고 테스트 할 수 있는 Web UI 환경을 제공해 준다. (공식 사이트 https://swagger.io/) Springboot 에서는Springfox 를사용한다. 1. 의존성 추가 Gradle 의존성 compile('io.springfox:springfox-swagger-ui:2.7.0') compile('io.springfox:sprin..
diskExpiryThreadIntervalSeconds: 디스크에 저장된 캐시들에 대해 만료된 항목를 제거하기 위한 쓰레드를 실행 할 주기 설정diskSpoolBufferSizeMB: 디스크 캐시에 쓰기 모드로 들어갈때, 사용될 비동기 모드의 스폴 버퍼 크기 설정, OutOfMemory 에러가 발생 시 수치를 낮추도록 한다.diskPersistent: VM이 재기동 할때 캐싱된 객체들을 디스크에 계속 유지 할지 여부diskAccessStripes: 디스크 퍼포먼스를 조정하기 위한 스트라핑 설정eternal: 시간설정에 대한 무시 설정 (boolean), true 면 모든 timeout 설정은 모두 무시 되고 Element에서 캐시가 삭제 되지 않음maxElementsInMemory: 메모리에 캐싱 되어..
RedirectAttributes 를 이용하면 redirect 시 parameter를 url?parameter1=data 의 형태를 대체 할수있다. 코드도 간결해보이고 가독성또한 좋아 보인다. 이대 parameter를 숨기고자 하는 경우가 있는데 그때 사용 할 수 있는것이 redirectAttributes.addFlashAttribute(attributeValue) 이다. 문자 그대로 Flash 이며 한번 호출후 메모리에서 삭제 된다. 새로 고침을 누르면 값은 사라짐으로, 재사용할수 없는 것이다. redirectAttributes.addFlashAttribute("reservationMngNo", reservationHistory.getReservationMngNo()); return "redirect:..
가끔 전체 적인 parameter를 redirect 파라미터로 보내고 싶은경우가 있다. 이런경우엔 코드가 잘못됬다고 볼수도 있지만. 급한? 처리를 해야할때... RedirectAttributes에 모두 담아 보내버리자. Map attributes = new HashMap(); Enumeration params = request.getParameterNames(); while (params.hasMoreElements()){ String name = (String)params.nextElement(); attributes.put(name, request.getParameter(name)); } redirectAttributes.addAllAttributes(attributes); redirectAttrib..
한프로젝트에 모바일과 일반 그리고 테블릿을 분류하기위해 Request 의 Header Agent 값을 분석하여 분기 하여 사용할수 있다. 뭔가 좋은게 더 없을까? 생각하고 찾아보니 Spring Mobile Project가 언젠지 모르게 생겨나있다. http://projects.spring.io/spring-mobile/ , https://spring.io/guides/gs/serving-mobile-web-content/ 아니나 다를까 중간 prefix 를 알아서 만들어준다. 1. 첫번째 방법 Spring Boot 의 properties spring.mobile.devicedelegatingviewresolver.enabled 을 활성화 수동으로 하고자한다면 @RequestMapplig method 인자..
JPA 에서 Forin Key 를 생성해 보자 클레스 다이어 그램으로 구조를 한눈에 먼저 확인하자 MediaManagementEntity 미디어 정보를 가진 엔티티 클레스 CampaignEntity 캠페인 정보를 가진 클레스 미디어 정보를 가진 클레스와 FK를 맺어 미디어 정보를 확인한다. 애드그룹 엔티티와 1:N 관계 AdGroupEntity 애드그룹 정보를 가진 클레스 캠페인 엔티티와 N:0..1 관계 @JoinColumn @JoinColumn 을 이용하여 조인 한다. name="자식 테이블의 컬럼 명, 자기 자신의 컬럼명" referencedColumnName="조인 대상 부모의 컬럼명" @JoinColumn (name="concertOrderId", referencedColumnName="conc..
QueryMethod (Repository 사용자 변형) https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.query-methods PK값이 두개일때 FK가 걸려있는 컬럼을 이용해서 모두 지우려 할경우 JPA 에서는 데이터를 조회 한후 삭제 하기 때문에 삭제할 데이터가 없다는 오류메세지를 주고, 익셉션이 발생한다, 이때 사용자 변형 쿼리를 이용해서 사용하면 해결 가능하다. findByUserId(fieldName) deleteByUserIdAnd{fieldName} @Eembedable 로 Muilti PK 사용시 PK값을 두개를 사용하기 때문에 @Embededable , Id 를 이용하는데 이때는 {PKCla..
Spring Security RBAC 모델의 멋진 권한 컨트롤 시큐어 프레임웍임니다. 이에 이녀석을 가지고 동적 권한 할당에 대해 예전에도 생각해 본적이 있었 습니다. 내용은 관리자가 환경설정에서 PERMISSON을 수정하여, 접속된 사용자에게도 바로 적용되는 것입니다. 접속된 사용자 별로 SecurityContext에서 Authority 객체에 접근하여, 생성한 GrantedAuthority를 restset하고 새롭게 부여해주는방법과. 로그인 할때 GrantedAuthority 없이 항시 urlCall 혹은 methdo 호출 마다 어떤 필터에서 이미 정의된 ROLE ,url을 이용해서 DB에 값을 확인하고 통과 시켜주는 방법입니다. 첫번째 방법은 사용자가 많은 경우 모든 사용자의 권한을 새롭게 부여해줘..
스프링 시큐리티를 사용하여 로그인 모듈생성시, 시큐리티에서는 세션 이름을 무엇으로 만들까 확인하고 싶다.실제 세션을 만들어주는 SecurityContextPersistenceFilter 필터 안에 HttpSessionSecurityContextRepository 에 들어 있다.좀더 자세한 필터 내역을 확인 하시려면, 필터도 여러개가 있고, 각 동작하는 필터마다 의미가 다르기때문에 필터에 관한 내역으로 검색해 보길 권합니다. /////////////////////////////////////////////////////////////////////////// 세션 상세 정보 확인////////////////////////////////////////////////////////////////////////..