[Spring Boot] Setter vs Constructor vs Builder
·
개발/Spring Boot
Spring boot로 코딩을 하다보면 객체의 값을 변경해줘야 할때가 있다. 방법은 크게 Setter, 생성자, Builder 3가지로 나뉜다. 1. Setter (자바빈즈 패턴) 자바 개발자들은 setter를 지양하라고 한다. 그럼 왜 setter를 지양하고 새로 객체를 생성해야 하는 생성자나 Builder를 사용해야 할까.. (1) 일관성 먼저 setter를 사용하면 언제든 값을 바꿀수 있다는 말이 된다. 다시말해 값을 바꿀수 없는 불변한 객체를 만들지 못한다는 말이 된다. (2) 가독성 만약 객체의 속성이 엄청 많아서 엄청나게 많은 setter가 있다고 가정한다. 그러면 객체만다 일일히 setName, setAge, ~~~ 을 계속 해주다보면 코드가 아주 더러워지고 나중엔 빠진 set 메소드를 찾고..
[Spring Boot] Controller, Service, Repository
·
개발/Spring Boot
Controller와 Service, Repository는 각각 역할이 있다. 흐름은 위와 같다. 컨트롤러는 client와 소통을 하며 데이터를 받거나 넘겨주고 서비스에서는 비즈니스 로직만을 작성한다. 여기서 Dao가 DB와 연결하며 CRUD를 수행하는데 이를 Repository라고 보면 된다. 1. Controller 가장 큰 역할은 Client와의 소통이다. Client로 부터 받은 데이터를 Service로 넘겨주어 Service가 비즈니스 로직을 수행하도록 한다. 그리고 Service로부터 데이터를 받아 Client로 넘겨준다. @RestController public class PostsApiController { private final PostsService postsService; @Post..
[Article] 가짜 크립토 월렛
·
개발/Article
Review and analysis of fake Trezor cryptowallet Fake hardware cryptowallet, and how bitcoins were stolen from it. www.kaspersky.com 해당 뉴스에서는 오픈소스로 운영되고 있는 Trezor Model T 지갑에 대한 얘기다. 요약하자면 사용자가 Trezor Model T 지갑을 구매함 알고보니 해커가 준비했던 Trezor Model T 지갑이었음. 해커가 준비한 지갑은 처음 구동시 펌웨어 업데이트를 통해 정보를 갈취. 개발자 측에서 이를 방지하여 펌웨어 버전을 띄엄띄엄 만들어버림. 즉, 사용자가 자신의 크립토 자산을 지키기 위해 하드월렛을 구매했지만 오히려 하드월렛이 해킹당하는 상황이다. 해당글에서도 전문..
[Docker] `error storing credentials - err: exit status 1, out: `pass not initialized: exit status 1: Error: password store is empty. Try "pass init".``
·
개발/Docker
docker login을 하려고 했는데 에러가 발생했다. login을 하려면 pass라는 과정을 거쳐야 한다고 한다. docker hub와 같은 외부 저장소와 상호작용 하기 위해서는 사용자의 자격 증명을 저장해야 한다고 한다. Linux 환경에서는 도커가 pass 라는 바이너리를 찾는데 이게 없어서 나타나는 오류인 것 같다. docker login docker login: Login to a registry. docs.docker.com pass 를 추가해 주기 위해서는 아래 사이트에 설명이 나와있다. Learning Center and sign in docs.docker.com 공식문서에서는 Docker Desktop을 통해 로그인하는걸 추천한다. gpg --generate-key pass init
[Article] 마이크로소프트의 코파일럿
·
개발/Article
“대중화 한 발짝” 마이크로소프트, 코파일럿 지원 앱 및 테스트 규모 확대 마이크로소프트가 오피스 앱 포트폴리오에 AI 비서 코파일럿 통합 작업을 진행 중인 가운데 코파일럿의 고객 평가가 600곳 기업으로 확대된다. 평 www.itworld.co.kr 마이크로소프트는 코파일럿 AI를 자기들의 서비스에 더욱더 확장할 것이라고 밝혔다. AI가 계속 발전하고 있는 시기에 기업이 할수있는 대응이라고 생각한다. 기존 액셀 등 365 마이크로 소프트 제품에 AI가 결합된다면 업무의 생산성은 당연히 높아진다고 생각한다. 업무의 생산성은 높아지지만 그만큼 보안에 더더욱 신경써야 한다고 생각한다. GPT사례만 보더라도 삼성 심지어 구글까지 GPT를 사용함으로써 보안에 문제가 있었다. 뉴스를 보면 아래와 같은 문구가 있다..
[Spring Boot] DTO vs VO vs Entity
·
개발/Spring Boot
1. DTO (Data Transfer Object) DTO란 데이터 전송 객체이다. 말그대로 데이터를 전송하기 위한 객체로 사용된다. class colorDTO{ private int red; private int blue; private int green; public colorEntity(int red, int blue, int green) { this.red = red; this.blue = blue; this.green = green; } public int getRed() { return red; } public int getBlue() { return blue; } public int getGreen() { return green; } public void setRed(int red) { t..