전체 글 124

[Java]SecureRandom 클래스를 이용한 임시 비밀번호 생성 방법

우리가 특정 웹사이트의 비밀번호를 잊어버렸을 경우 회원 정보 확인 후 로그인을 위한 임시 비밀번호를 제공받는다. 이러한 임시 비밀번호는 어떻게 생성이 되는 것일까? 바로 Java의 강력한 암호화 난수 생성기를 제공하는 SecureRandom 클래스를 사용하여 구현이 가능하다. 하지만 SecureRandom 클래스 외에 그냥 Random 클래스 또한 존재하지만 잘 사용하지 않는다. 이것의 이유 또한 알아보자. Random VS SecureRandom 우선 이 두 개의 클래스를 비교하기 위해서는 seed에 대한 개념을 알고 있어야 한다. seed는 난수를 발생시키는 기준 값을 의미한다. Random, SecureRandom의 가장 큰 차이는 이 seed의 값이 다르다. Random 클래스는 시스템 시간을 기..

Languages/Java 2023.02.03

[Java]Java 8 이후의 도입된 현재의 날짜 및 시간 가져오기

📌Java 8 이후의 도입된 현재의 날짜 및 시간 가져오기 Java에서는 날짜와 시간을 다루는 java.util.Date, java.util.Calender 두 개의 클래스가 존재하였습니다. 하지만 여러 가지 이유로 사람들은 사용하길 지양하고, 별도의 오픈 소스 라이브러리를 사용하여 시간, 날짜를 표현하였습니다. 하지만 이러한 문제를 해결하고자 Java 8 이후에 새로운 클래스들이 등장하였습니다. 🟥Calender, Date의 사용을 지양하는 여러 가지 이유 - 아래 링크 확인 🟥출처 : https://d2.naver.com/helloworld/645609 📌새로운 클래스의 등장 - Java 8 이후 java.time.LocalDate java.time.LocalTime java.time.LocalDat..

Languages/Java 2023.02.02

[Spring]DI와 Autowired 확실히 알고 사용하기

📌Autowired 확실히 알고 사용하기 Spring으로 개발을 하면서 수도 없이 작성하는 어노테이션 중 하나인 @Autowired이 있다. 사실 정확한 동작 원리를 알고 쓴다기보단 습관처럼 선언하고 사용했기에 이번 포스팅을 통해 정확히 정리하고 넘어가려고 한다. 우선 Spring Framework의 큰 특징인 DI(Dependency Injection)에 대해 간단하게 알아보자. 📌DI(Dependency Injection) DI(Dependency Injection)은 다른 Framework에서는 볼 수 없는 Spring에서 제공하는 의존 관계 주입 기능을 말한다. 즉, 필요할 때마다 객체를 생성해서 사용하는 것이 아닌 미리 생성 후 필요한 부분에 주입하여 사용할 수 있다. 이러한 기능을 사용하면 결..

WEB/Spring 2023.01.31

[Spring]DTO와 VO의 모호한 사용, 확실하게 사용하기

개발을 하면서 데이터를 담을 객체로 DTO와 VO를 사용하게 됩니다. DTO와 VO에 대한 이론적인 차이는 알고 있었지만, 스스로 조차 혼용해서 사용하고 있었고 확실하게 용도에 맞게 사용하는 것이 맞다고 생각하여 이번 포스팅에서 정리하려고 합니다. DTO(Data Transfer Object)란? DTO는 Layer 간 데이터 전송을 목적으로 하는 객체이다. 오로지 getter, setter 메서드만 가지고 있으며, 애초에 전송 목적을 위한 객체이기 때문에 이외에 메서드는 가질 수 없다. public class TestDto { private String name; public String getName() { return name; } public void setName(String name) { th..

WEB/Spring 2023.01.30

[Java]toString() 메서드는 왜 만들어졌을까?

toString() 메서드는 왜 만들어졌을까? 객체를 문자열로 리턴하기 위해 사용한다고 알고 있던 toString() 메서드에 대해 의문이 생겨 이 글을 작성하게 되었다. toString()의 반환 결과 Java에 모든 클래스들은 최상위 클래스 Object를 상속받는다. 따라서 Object의 정의된 메서드 또한 사용이 가능하다. toString() 메서드 또한 Object에 정의된 메서드 중 하나로 반환 형식은 다음과 같다. getClass().getName() + '@' + Integer.toHexString(hashCode()) toString() 예시 코드 class Blog { private Strintg name; private int count; } package moon; public cla..

Languages/Java 2023.01.30

[Spring]@Controller VS @RestController

@Controller VS @RestController 전통적인 Spring Framework의 대한 컨트롤로의 대한 선언으로 @Controller를 사용해 왔습니다. 하지만 좀 더 Restful 한 웹 서비스를 기대하면서 Spring 4 이후에 @RestController라는 새로운 어노테이션이 등장하였습니다. 이번 포스팅에서는 이 두 개의 어노테이션에 차이를 알아보도록 하겠습니다. @Controller VS @RestController 비교하기 @Controller @ResponseBody public class Controller { } @RestController public class RestController { } 위의 두 개의 컨트롤러의 기능은 동일합니다. 이와 같이 @RestControl..

WEB/Spring 2023.01.30

[Spring]@RequestBody와 @RequestParam 비교하여 이해하기

2023.01.25 - [WEB/Spring] - [Spring]@RequestParam의 파라미터 사용의 이해 [Spring]@RequestParam의 파라미터 사용의 이해 @RequestParam 클라이언트에서 서버로의 요청 시에 HTTP 요청 파라미터를 컨트롤러 메소드의 파라미터로 전달받을 때 사용된다. 클라이언트가 전달하는 쿼리 변수를 1:1로 매핑해준다. @RequestParam 단 mooonstar.tistory.com 2022.12.26 - [Network] - [Network]REST, REST API [Network]REST, REST API ❓REST란? “Representational State Transfer”의 약자로 자원의 표현으로 구분하여 해당 자원의 정보를 주고받는 방식을 의..

WEB/Spring 2023.01.27

클라우드에 대한 시장성과 전망 그리고 MSA

클라우드 점유율 아마존, 마이크로소프트, 알리바바, 구글 클라우드, 화웨이 등 상위 5개 IAAS 제공업체가 전체 시장의 80% 이상 점유, 현재 국내시장은 서비스형 인프라(IAAS) 중심으로 형성되고 있다. 전문가들은 “국내 기업들은 상대적으로 진출 기회가 아직 남아있는 글로벌 SaaS 시장 진출을 위해 노력해야 한다고 본다. 국내에 클라우드 확산을 위한 제도적 제약 해소와 전통적 SW개발, 유통 패러다임 전환, 강점 및 미래 유망산업 적용 확산, 우리 데이터 주권 확보를 위한 인프라 강화 추진 등이 필요하다.”라고 말했다. 클라우드 시장 클라우드 컴퓨팅 시장은 서비스 모델, 배포, 모델, 조직, 규모, 산업 분야 및 지역을 기준으로 분석된다. 서비스 모델에 따라 IaaS(Infrastructure a..

Cloud 2023.01.26

[Java]Map의 요소를 반복하는 다양한 방법

Map의 요소를 반복하는 다양한 방법 ⚡️keySet을 통해 순환 Map map = new HashMap(); for (String key : map.keySet()) { map.get(key); } ⚡️entrySet을 통해 순환 Map map = new HashMap(); for (Map.Entry entry : map.entrySet()) { String key = entry.getKey(); String value = entry.getValue(); } ⚡️iterator을 통해 순환 Map map = new HashMap(); Iterator keys = map.keySet().iterator(); while (keys.hasNext()) { String key = keys.next(); map..

Languages/Java 2023.01.26

[Spring]@RequestParam의 파라미터 사용의 이해

클라이언트에서 서보로의 요청 시에 HTTP 요청 파라미터를 컨트롤러 메서드의 파라미터로 전달받을 때 사용되는 어노테이션인 @RequestParam에 대해 알아보자. @RequestParam 사용법 @Controller @RequestMapping("/test") public class TestController { @GetMapping("/RequestParam") public String(@RequestParam String param) { return param; } } 위와 같은 방법으로 클라이언트에서 전달받은 파라미터를 param으로 받을 수 있다. 포스트맨을 사용하여 직접 테스트해 보도록 하자. 클라이언트가 보낸 Key = Value 형태의 쿼리 변수에 따라 param에는 사용자가 입력한 par..

WEB/Spring 2023.01.25