IT 58

객체 생성시 무분별한 Setter를 지양하고 Builder 패턴을 써야 하는 이유

[결론]객체를 생성할 때 new 생성자와 Setter를 조합하는 방식은 객체의 일관성과 불변성을 훼손하므로, 안전한 객체 생성과 명확한 가독성을 보장하는 Builder 패턴을 기본으로 사용해야 한다. [본론]기존방식// 기존 방식User user = new User();user.setName("홍길동");user.setAge(20);// user.setEmail(...) -> 필수 값을 실수로 누락해도 에러가 안 남! 일관성(Consistency) 붕괴: 객체가 생성된 직후에는 빈 껍데기(불완전한 상태)다. 필수 값 셋팅을 하나라도 빼먹으면 불완전한 객체가 시스템을 돌아다니다 런타임 에러(NPE 등)를 터뜨린다.불변성(Immutability) 보장 불가: 값을 주입하기 위해 Setter 메서드를 publ..

IT/JAVA&Spring 2026.03.06

네트워크 인바운드(Inbound) vs 아웃바운드(Outbound)

인바운드(Inbound) 규칙 정의: 내 서버로 들어오는 트래픽에 대한 규칙.방향: Client (Outside) → Server (Inside)포인트:기본적으로 'Deny All' 상태로 시작하는 것이 보안상 유리하다.Port를 기반으로 제어한다. (예: HTTP는 80, HTTPS는 443, SSH는 22)허용되지 않은 IP나 포트로부터의 접속 시도는 인바운드 규칙 단계에서 모두 차단된다. 아웃바운드(Outbound) 규칙 정의: 내 서버에서 나가는 트래픽에 대한 규칙방향: Server (Inside) → Outside학습 포인트:서버에서 OS 업데이트를 다운로드하거나, 외부 API 서버와 통신해야 할 때 사용된다.보통 기본값으로 모든 나가는 트래픽을 허용(Allow All)하는 경우가 많지만, 보안..

IT 2026.02.13

Windsurf로 java 프로젝트 import 하기

[settings.json] 파일에"java.jdt.ls.java.home": "C:/java/openjdk-21.0.9"해당 설정을 해주어야 extension Pack for Java 가 제대로 동작이 된다 해당 설정은 프로젝트 runtime 환경 설정이 아닌 ide에서 사용되는 java 도구들 (익스텐션 등)의java 경로를 지정해주는 설정이다.21 이상의 java가 필요하다고 경고가 울리는데25 버전으로 설정했더니 windsurf ide 에서 해당 설정을 해석?인지? 하지 못하는 것 같다. 추후 windsurf ide 또는 해당 익스텐션이 upgrade가 된다면 지원해줄 것 같다.아마 ide 문제일 확률이 좀 더 높아보인다. 익스텐션에서는 21 버전 이상을 지원해준다고 했지만ide에서는 25를 인식..

IT/JAVA&Spring 2026.01.20