전체 글 (49) 썸네일형 리스트형 익명 클래스와 익명객체(Anonymous Object) 익명 클래스탄생 배경추상 클래스와 인터페이스는 객체를 생성하려고 하면 에러가 발생하게 된다.메소드의 구현체가 존재하지 않기 때문이다.사실 default method는 자바 8 이후로 구현체를 인터페이스에 작성할 수 있게 됐다.하지만 통일성을 위해 이 규칙은 유지default method를 구현해도 여전히 객체를 생성할 수 없다 익명 객체익명 클래스는 이름 없는 일회성 클래스를 정의하며, 추상 클래스나 인터페이스를 상속(또는 구현) 하여 필요한 메서드를 즉시 재정의한 뒤 인스턴스를 생성한다. abstract class A { abstract int method(int a, int b);}abstract class B { int method(int a, int b) { return .. 모집시작 메일 전송 기능 개발 Cotato 프로젝트를 진행하면서 사용자에게 메일을 보내야 할 때가 있다. 예를 들면 '메일 인증번호 전달' 이나 '권한 변경 안내 메일' 등이 있다. 이 때 빠른 개발을 위해 JavaMailSender를 이용했다. 하지만 새로운 기능에는 더 안정적이고 모니터링이 가능한 Amazon SES를 이용하기로 결정하였다. 이번 포스트에서는 '모집 시작 메일 신청 + 전송 기능' 개발 기록을 작성하겠다. 기능 설명동아리에서는 6개월에 한번씩 새로운 회원 모집을 지원한다. 기존에 동아리에 흥미를 갖고 있는 인원들은 다음 모집 기수가 언제 시작하는지 알 수 있는 방법이 수시로 홍보 게시물을 확인하는 방법 외에 없다. 이 때문에 모집이 시작될 때 메일로 알려주는 기능이 있으면 좋겠다는 결론에 도달하였다. 핵심 기능은 .. [Java] 클래스는 왜 하나만 상속 받을 수 있을까? 자바를 공부하다 보면 금방 마주치는 제약 중 하나가 있습니다.“자바는 클래스의 다중 상속을 지원하지 않는다.”실제 얼마전에 면접 질문으로 받았던 질문이었습니다. 나름 잘 대답했다고 생각했는데 면접관의 질문이 "그것밖에 없나요?" 였다. 모르는 이유가 있는걸까? 생각이 들어 공부한 내용을 정리해보았습니다. 클래스와 인터페이스의 차이점인터페이스는 클래스와 다르게 다중 상속을 지원합니다. 이 차이를 이해하기 위해 클래스와 인터페이스의 차이부터 설명하겠습니다. 1. 관점: 구현 VS 설계클래스는 구현 중심입니다. 필드와 메서드를 함께 정의하며 객체를 생성할 수 있는 구조를 정해줍니다.이에 반해 인터페이스는 설계 중심입니다. 인터페이스에서는 단지 설계를 진행하고 상속받은 클래스에서 인터페이스에서 설계한 내용을 구.. [생각 정리] 나의 협업 성장일기 개발자의 꿈을 꾸게 된 이유! 협업개발자에게 협업 능력, 커뮤니케이션 능력이 중요하다 것은 귀에 못이 박히도록 들었다. 하지만 오히려 그게 개발자의 매력이라 생각해 개발자의 꿈을 꾸게 됐다. 어릴 때부터 주변에서 한소리 들을 정도로 "다양한" 사람들이랑 이야기하려고 노력했다. 물론 새로운 인연이 좋기 때문도 맞지만, 사람마다 생각하고 살아가는 방식이 너무 다르다는 걸 느꼈기 때문이다. 같은 환경, 같은 사람들만 만나며 지내다 보면 생각도 고이기 마련이다. "주변 사람들은 다 이렇게 생각하는데, 이게 맞는 거 아니야?"라는 식으로 굳어져 버린다. 그런데 그 '맞는 것'이 사실은 편협한 생각일 수도 있다.다양한 생각들을 들으면서 최대한 편협한 생각에 빠져 살지 않고 싶었고 그렇게 얻은 경험을 통해 다른 사람.. [회고록] IT 연합 동아리 코테이토를 2년 간 활동하며 느꼈던 생각들 2023년 3월, 단순히 다양한 사람들을 만나고 프로젝트를 진행하고 싶다는 생각 하나만으로 나는 코테이토에 들어왔다. 그 때부터 6기 ~ 10기, 2년 간(사실 중간에 한 기수 쉬었기 때문에 1년 반이긴 하지만) 동아리 활동을 하면서 느꼈던 생각들을 정리하고자 한다. 쫄아서 신청한 스터디(2023.03 ~ 2023. 08)처음 동아리에 들어왔을 때, 이미 이전 기수부터 들어왔던 사람들은 나와 차원이 다르게 잘한다 생각이 들었다. 첫 뒷풀이 때 주변에서 개발 이야기를 하고 있을 때, 나는 대부분의 이야기를 이해하지 못했다. 그 전까지 의욕만 가득했지 백엔드에 대해 제대로 공부한 적 없는 상태였기 때문에 주눅이 든 상태로 프로젝트, 스터디 신청 기간이 다가왔다. 아무것도 모르는 상태에서 이 사람들이랑 프로젝.. [Spring] Params를 통한 동일 path API 구분 + Swagger에서 불가능한 이유 코테이토 프로젝트에서 이름, 포지션, 합격 기수별 멤버를 필터링 API가 있다. 또한, 이번 스프린트를 통해 멤버 상태(승인, 불승인, OM)에 따라 필터링 하는 같은 경로(path)의 API를 추가했다. 이번 글에서는 Controller에서 같은 path + 다른 파라미터의 API를 구분하게 하는 방법과 Swagger에서 구분할 수 있는지 확인해보겠다. 같은 URL, 같은 HTTP 메서드의 엔드포인트가 존재하면?1. 이름, 포지션, 합격 기수별 멤버 필터링 API@RequestMapping("/v1/api/member")public class MemberController { @Operation(summary = "기수별 멤버에 추가 가능한 멤버 반환 API") @RoleAuthority(.. QueryDSL을 이용한 동적 쿼리 프로젝트를 진행하면서 다양한 조건을 통한 필터링을 구현해야 했다. 이 때 조건이 있을 수도 있고 "전체"로 찾는 경우도 있다. 기존의 방식대로라면 각 조건이 있는지 없는 지 여부에 따라 다양한 API를 구성해야 했다. 이를 한 API로 해결하고자 QueryDSL을 통한 동적 쿼리로 구현하였다. QueryDSL이란?QueryDSL은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다. 왜 사용하는지 설명하기 위해 다른 쿼리 생성 방식을 설명하겠습니다. Spring Data JPA스프링을 사용하면 기본적인 CRUD는 보통 JPA를 통해 구현한다. 이는 repository.findAllByName(String name) 처럼 Repository에서 정해진 간단한 네이밍 룰을 사.. 2025년에는 어떤 개발자가 되고 싶은가? 2024년에 4학년이었지만 3학년까지 열심히 학교를 다니면서 학점을 거의 다 채웠기 때문에 1학기 때 프로젝트 수업을 제외하고는 학교를 가지 않았다. 정말 자유로운 한 해였다. 그리고 자유로웠기 때문에 다사다난한 한해였다. 프로젝트에 몰두한 2024년도먼저 1년동안 무엇을 했냐하면 IT 연합 동아리 코테이토 홈페이지 제작을 계속 이어나갔다. 2023년 10월부터 시작한 벌써 1년 3개월째 하고 있는 프로젝트다. 2023년에는 단순히 배운 가벼운 스프링 지식을 기반으로 구현하기에 급급했다. 하지만 실제 서비스를 시작하고 기능 개발과 유지보수를 진행하면서 프로젝트를 통해 배운다는게 어떤 건지 알게 됐다. 새로 배운 지식이 있으면 프로젝트에 적용하면서 과거에 이 정도 코드가 최종 버전이라 생각했던 것이 부끄.. 이전 1 2 3 4 ··· 7 다음