일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JavaScript
- java9
- spring boot
- React
- NextJS
- custom valid
- jvm
- memcached
- SpringBoot
- 초기 구축
- MySQL
- JPA
- dto valid
- 도커
- java8
- docker 설치
- 헤더 설정
- 리눅스
- docker
- spring
- generate pojos
- swagger
- header setting
- Next.js 14
- jpa entity자동
- generate entity
- Java
- CentOS6
- 초기 세팅
- ollama langflow
- Today
- Total
목록4. JAVA (76)
개발자의 길
Package Tree패키지 구성에 대한 내용입니다.유효성 검증 기능의 시작은 “validator”라는 패키지를 시작으로 구성됩니다.└── validator # validation 구현의 시작이며, 프로젝트 전용 파일들 └── common # 공통적으로 사용될 수 있는 모듈 ├── extension # 다른 패키지에서 사용하는 공통적인 확장 모듈 ├── format # 날짜, URL, IP와 같은 포맷 기반의 모듈 └── match # 특수문자, 영어, 한글과 같은 문자열 매칭 기반의 모듈 └── utils # 정규식 활용을 위한 유틸리티들패키지는 위와 같은 기준으로 분리 구분하여, 실질적으로 common 내부의 모듈..
api 개발을 하다보면, 필연적으로 swagger 셋팅을 하기 마련이다. 그런데 api를 외부에 제공하기 위해선, 필수로 헤더에 access token 같은 암호화된 값을 받게끔 개발을 진행 할 것이다. 하지만 기본 swagger 설정에선, header 설정하는 부분이 없어서, config 에서 약간 수정을 하면 바로 사용 가능하다 내가 한 버전은implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.5.0' 이거고, 굳이 starter-webmvc-ui가 아니더라도 springdoc 다른 라이브러리를 써도 상관없다. @Configurationpublic class SwaggerConfi..
jpa 로 프로젝트를 시작할 때, 먼저 jpa 의 entity 파일로 db 구조를 짜서, 자동으로 db에 create table 하는 방식은 쉽게 옵션으로 가능하다. 하지만 이미 짜여진 db 구조를 가지고 반대로 jpa entity 파일을 만들려고 하면, 노가다를 할 수 밖에 없다. 컬럼이 한두개면 괜찮지만, 너무 많은 컬럼과 테이블이 있으면, 이걸 하나하나 하기도 번거롭고, 오타도 많이 발생한다. 그래서 자동 생성을 찾아보던 중에 발견한 방법이다. 우선 나는 mysql 로만 테스트를 진행해봤다. intellij 에서 mysql 연결을 먼저 한다.(오른쪽 사이드에 위치) intellij 로 프로젝트를 진행 한다 하면, 왼쪽 프로젝트 하단에 Scratches and Consoles 이 보일것이다. Sc..
java 든 spring 이든 파일 다운로드를 바로 시키는 경우가 아닌, pk값을 가지고 db에서 파일 정보를 조회해 와서 다운로드 시키는 방식을 많이 사용한다. 이럴 경우 2가지 케이스가 존재한다. 1. 실제 파일 경로 ex) - /home/my/test.png - C:\Desktop\test.zip 2. url 경로 - http://test.test.com/test.png - https://test.test.com/aaa.zip 실제 파일이 저장된 경로를 가지고 있든, 브라우저에서 호출되는 url 경로를 가지고 있는 2가지 이다. 2가지 케이스에 대한 예제를 남긴다. 1번 케이스 (file path) - FileDownloadResponse.java package com.test.common.resp..
타임리프에서는 효율적인 오브젝트 사용을 위해 기본적인 오브젝트 유틸리티를 제공하고 있다. 타임리프의 기본 제공 유틸리티 함수는 다음과 같다. #numbers #strings #arrays #lists #sets #maps #objects #bools #dates #calendars #uris #messages #conversions #aggregates #ids 다음 중 자주 사용하는 주요 함수만 정리하도록 하겠다. numbers 종류 설명 ${#numbers.formatInteger(num,3)} ${#numbers.arrayFormatInteger(numArray,3)} ${#numbers.listFormatInteger(numList,3)} ${#numbers.setFormatInteger(numS..
어떤 자바 버전을 사용해야 할까? 최신 Java 버전은 이제 6개월마다 따른다. 수많은 새로운 버전이 출시됨에 따라 기본적으로 다음과 같은 사용 시나리오가 존재 기업의 기존 프로젝트에서는 Java 8을 사용해야 하는 경우가 많음 일부 레거시 프로젝트는 Java 1.5(2004년 출시) 또는 1.6(2006년 출시)에서 중단되기도 함 최신 IDE, 프레임워크 및 빌드 도구를 사용하고 그린 필드 프로젝트를 시작하는 경우 Java 11(LTS) 또는 최신 Java 17 LTS를 망설임 없이 사용할 수 있다. 안드로이드 개발의 특별한 분야가 있는데, 자바 버전은 기본적으로 자바 7에 고정되어 있고, 특정한 자바 8 기능들을 이용할 수 있다. 또는 코틀린 프로그래밍 언어를 사용하는 것으로 전환 특정 자바 버전을 ..
MailSender 인터페이스를 상속받은 JavaMailSender를 이용하는 이메일 전송 시스템 build.gradle 디펜던시 추가 implementation 'org.springframework.boot:spring-boot-starter-mail' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vin..
업무를 하다보니, 한개 프로젝트에 다중의 db를 연결 할 일이 많다. 대부분의 구글링을 찾다보면, 가장 자주 보이는 예제가 Transactional(readonly=true) 같은 어노테이션으로 master/slave를 나눠서 쓰는 예제가 많이 보인다... 근대 나는 사실 트랜잭션과 상관없이, 다중의 db를 쓰고 싶고.. 3개 이상의 다른 connection db 를 사용하고 싶었다.. 고민에 고민을 거듭하고, 검색에 검색을 하여서.. custom annotation을 따로 만들어서, 해당 값을 AbstractRoutingDataSource에 determineCurrentLookupKey() 에서 값을 받아 오면 될거 같았다 기본 springboot 셋팅은 했다 치고.. application.yml sp..
spring security 의 설정중에 중복 로그인을 막는 설정이 있다. 찾아보면, sessionManagement maximumSessions maxSessionsPreventsLogin expiredUrl sessionRegistry 뭐 이런 설정을 하라고 나와있을 거다. 그런데, 설정 하라는대로 다 했는데 안되면 막막하다. 우리가 로그인쪽에 셋팅한 부분에서 implements UserDetailsService 를 설정한 파일에 @Override public UserDetails loadUserByUsername(String loginId) throws UsernameNotFoundException { return ~~~ } 이런 소스가 있을거다. 기본적으로 springsecurity는 유저 정보를..
자바 스트림(Stream) 자바의 스트림(Stream)은 'Java 8'부터 지원되기 시작한 기능이다. 컬렉션에 저장되어 있는 엘리먼트들을 하나씩 순회하면서 처리할 수 있는 코드패턴이다. 람다식과 함께 사용되어 컬렉션에 들어있는 데이터에 대한 처리를 매우 간결한 표현으로 작성할 수 있다. 또 한, 내부 반복자를 사용하기 때문에 병렬처리가 쉽다는 점이 있다. 'Java 6' 이전까지는 컬렉션의 엘리먼트들을 순회하기 위해서 Iterator 객체를 이용했다 ArrayList list = new ArrayList(Arrays.asList("a", "b", "c")); Iterator iterator = list.iterator(); while(iterator.hasNext()) { String value = i..