본문 바로가기

Java29

[Spring] kotlin + Spring 시작하기 Kotlin + Spring 시작하기 최근 취업 준비를 하며 코틀린에 대한 필요성을 느꼇고, 코틀린을 공부해 보았습니다. 뒤이어 Spring에 Kotlin을 적용해 일명 코프링프로젝트를 시작하기로 했습니다. 버전의 경우 제 현재 프로젝트의 버전이 입력되어 있습니다. 때에 따라 다르게 적용하시면 됩니다. build.gradle - 코틀린 적용 plugins { ... id 'org.jetbrains.kotlin.jvm' version '1.6.21' id 'org.jetbrains.kotlin.plugin.spring' version '1.6.21' ... } dependencies { ... implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' implem.. 2022. 8. 10.
[CleanCode] 2장 의미있는 이름 의미있는 이름 의도를 분명히 밝혀라 // 좋지 않은 예 int d; // 좋은 예 int daysSinceCreation; 변수나 함수 그리고 클래스 이름은 해당 변수와 클래스의 존재 이유, 수행 기능, 사용 방법에 대한 질문에 모두 답하여야 한다. // 좋지 않은 예 public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) if(x[] == 4) list1.add(x) return list1; } // 좋은 예 public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (Cell cell : gameBoard) if(cell.isFlagged()) f.. 2022. 6. 25.
[Java] replaceAll, replaceFirst 에서 특수문자 인식하기 replaceAll, replaceFirst 에서 특수문자 인식하기 개발 도중 url 의 가장 첫 . 앞에 특정한 문자를 추가해야하는 상황이 생겼다. @Test void javaReplaceDotTest() throws Exception { String url = "aaa.bbb.ccc.ddd"; String replaceUrl = url.replaceFirst(".", "gg"); Assertions.assertThat(replaceUrl).isEqualTo("aaaggbbb.ccc.ddd"); } 위와 같이 내가 의도한 상황은 aaaggbbb.ccc.ddd이지만 위와 같은 결과가 나타났다. 이는 replace와 replaceAll, replaceFirst의 매개변수 차이로 인해 나타나는 현상이다. r.. 2022. 6. 24.
[Spring] UnmarshallingFailureException 에러 해결하기 UnmarshallingFailureException 에러 해결하기 Spring Batch 에서 StaxEventItemReader 사용 중 xml 파일을 읽어 객체에 매핑하는 과정에 Staorg.springframework.oxm.UnmarshallingFailureException가 발생했다. org.springframework.oxm.UnmarshallingFailureException: XStream unmarshalling exception; nested exception is com.thoughtworks.xstream.security.ForbiddenClassException: com.heekng.springbatch.Customer 에러가 발생한 이유 oxm와 xstream를 사용하기 위해.. 2022. 6. 6.
zsh no matches found 에러 해결하기 zsh no matches found 에러 해결하기 spring batch 공부를 하면서 job parameter을 java -jar 방식에서 넘기려 시도하였다. java -jar spring-batch-0.0.1-SNAPSHOT.jar name=user1 seq(long)=2L date(date)=2022/01/01 age(double)=16.5 zsh: no matches found: seq(long)=2L 위와 같이 zsh상에 파라미터를 받지 못하는 현상이 나타낫다. 이는 zsh에서만 그런지 몰라도 인식에 문제가 있는 것 같다. java -jar spring-batch-0.0.1-SNAPSHOT.jar 'name=user1 seq(long)=2L date(date)=2022/01/01 age(dou.. 2022. 5. 18.
win-jenv 첫 오픈소스 프로젝트 win-jenv 첫 오픈소스 프로젝트 처음으로 node.js를 기반으로한 windows에서 사용 가능한 java jdk 환경변수설정 npm 오픈소스를 만들어 보았습니다. 왜 만들었나? 제 개인 개발환경은 macos입니다. 하지만 회사에서 사용하는 개발환경은 windows os이고 점심시간을 이용해 개인 springboot 프로젝트를 수정해야 할 떄 jdk8과 jdk11을 왔다갔다 해야할 때가 있었습니다. 안 그래도 짧은 점심시간… 환경변수 수정하는 것조차 불편해서 mac os의 jenv와 유사한 win-jenv를 만들었습니다. 어떻게? 최근 블로그 포스팅을 마크다운으로 하고싶어 찾아본 방법 중에 jojoldu님의 markdown-tistory를 사용하게 되었습니다. npm을 이용해 cli 오픈소스를 충분.. 2022. 4. 2.
Java 요청 IP 확인 방법 Java 요청 IP 확인 방법HttpServletRequest객체에서 IP주소 받아오기요청한 클라이언트의 IP주소는 HttpServletRequst 객체를 통해 받아올 수 있다.protected String getClientIpAddr(HttpServletRequest req) { String ip = req.getHeader("X-Forwarded-For"); log.info(">>>> X-FORWARDED-FOR : " + ip); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = req.getHeader("Proxy-Client-IP"); log.info(">>>> Proxy-Client-IP : " + ip);.. 2021. 8. 29.
[JSP] MyBatis [JSP] MyBatis 기존의 JSP에서 데이터베이스와의 통신을 하려면 JDBC를 이용하여 자바를 꼭 거쳐야 했다. 따라서 자바에서 불가피하게 SQL코드가 작성되었고, 자바와 SQL이 섞이다 보면 코드가 길어지고 섞여 유지보수와 분업이 쉽지 않아진다. 이러한 불편함을 해소하기 위해 myBatis를 이용한다. myBatis 구조 myBatis는 기존의 JDBC방식과는 달리 sQL문을 XML파일에 작성함으로써 코드가 줄어들고, SQL문 수정이 편해진다. 또한 DBCP를 사용하여 커넥션을 여러 개 생성하기 때문에 JDBC만 사용하는 것 보다 작업 효율과 가독성이 좋아진다. ibatis는 2.5버전이며 JDK4버전 이상에서 사용가능하다. MyBatis는 3.0버전이며 JDK5버전 이상에서 지원한다. ibati.. 2021. 3. 15.
[Java] 크롤링 crawling, 셀레니움 Selenium [Java] 크롤링 crawling, 셀레니움 Selenium 웹 크롤링의 정식 명칭은 Web Scraping이며, 웹 사이트에서 원하는 정보를 추출하는 것을 의미한다. 보통 웹 사이트는 HTML기반이기 때문에 정보를 추출할 페이지에서 개발자모드 실행 후 원하는 정보를 가지고 있는 태그를 검색하는 스킬이 요구된다. 크롤링을 할 때에 크롤링한 데이터를 소장, 활용하는 것은 불법이 아니지만, 해당 데이터를 배포할 경우 문제가 될 수 있다. 때문에 이러한 경우에는 해당 사이트의 허락을 반드시 맡아야 한다. 목차 목차1 목차2 웹 크롤링 라이브러리의 종류 웹 크롤링 라이브러리는 Jsoup, Selenium 2가지가 있다. Jsoup 정적인 자료를 수집하는 경우에 주로 사용한다. 정적 데이터를 비교적 빠르게 수집.. 2021. 2. 22.