java

·코딩딩/Error
@Slf4j @RequiredArgsConstructor @RestController @RequestMapping("/api/my") public class MemberApiController { private final MemberService memberService; @PatchMapping("/hospital") @ResponseStatus(HttpStatus.OK) public String appendFavorites( @AuthenticationPrincipal UserDetails principal, @RequestParam("hospitalSeq") Long hospitalSeq ) { log.info("=========================={}====================..
·코딩딩/Java
@Transactional(readOnly = true) public List findReviewsByMemberEmail(String memberEmail) { List reviews = reviewRepository.findReviewsByMemberEmail(memberEmail); return reviews.stream() .map(ResponseReviewDto::toDto) .sorted(Comparator.comparing(ResponseReviewDto::getReviewSeq) .reversed()) .collect(Collectors.toList()); } 다음과 같이 수정하면 된다. 여기서 .map(ResponseReviewDto::toDto) 까지는 자주 사용하는 람다식이지만 그 밑..
·코딩딩/Error
문제의 컨트롤러 @PostMapping("/post") // redirect 시 ResponseStatus 어노테이션을 붙이면 redirect가 실행되지 않습니다. // @ResponseStatus(HttpStatus.CREATED) public String createReview( @Valid RequestReviewFormDto requestReviewFormDto ) { reviewService.createReview(requestReviewFormDto); return "redirect:/my/reviews"; } @ResponseStatus를 이용해 상태코드를 같이 전송할시 redirect가 실행되지 않는 오류를 겪었다. 이유는 ResponseStatus는 Body에 상태값을 실어서 보내지만 타..
·코딩딩/Spring
프레임워크 완성된 소프트웨어가 아니라 어떤 문제를 해결하기 위해서 만들어진 미완의 모듈로 모든 자바 개발자들이 공통으로 사용하는 기능을 미리 만들어서 제공하는 프로그램(해결해야 하는 문제 - 내가 개발해야 하는 시스템⇒ 교육시스템, 예약시스템, 인터넷뱅킹, 쇼핑몰…)재사용이 가능한 모듈, 일반적으로 프레임워크를 이용해서 개발하는 시스템들의 공통모듈들은 프레임워크에서 제공하는 기능을 이용해서 개발공통모듈 - DB연동, 트랜젝션처리, 뷰관리, 로그기록, 보안, 다국어처리, 메시징…검즘받은 프로그램으로 신뢰성 높은 시스템을 개발할 수 있다.프레임워크를 사용하면 개발자들간의 의사소통이 가능대부분 개발자들이 직접 개발하고 처리하던 작업을 프레임워크가 제공해주기 때문에 유지보수나 시스템 개발을 위해 필요한 시간을 ..
·코딩딩/Spring
실행 방법에 따른 자바 클래스의 구분서블릿서블릿 작성 규칙실행 방법에 따른 자바 클래스의 구분 Application : mian 메소드를 만들어서 실행java 클래스명 ———- |______________java 인터프리터가 public static void main(String[] args) 스펙의 메소드를 찾아서 실행Applet : html 태그로 삽입(지금은 안쓴다. 무겁다)servlet 서블릿 클라이언트의 요청을 처리하기 위한 자바기술서버에서 클라이언트의 요청을 처리하고 응답할 수 있도록 만들어진 객체클라이언트가 요청하면 서버에서 실행되면서 DB에 대한 처리, 서버의 리소스를 이용해서 만들어진 결과를 클라이언트에 응답클라이언트가 요청하면 서버가 요청한 서블릿을 찾아서 실행하므로 서버가 찾을 수 있..
·코딩딩/Spring
싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링 없는 순수 DI 컨테이너 싱글톤 패턴 싱글톤 패턴의 문제점 싱글톤 컨테이너 싱글톤 컨테이너 스프링 컨테이너를 사용하는 테스터 코드 싱글톤 방식의 주의점 상태를 유지할 경우 발생하는 문제점 예시 @Configuration과 싱글톤 테스트 코드 @Configuration과 바이트코드 조작 AppConfig@CGLIB 예상코드 싱글톤 컨테이너 웹 애플리케이션과 싱글톤 스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다. 대부분의 스프링 어플리케이션은 웹 어플리케이션이다. 물론 웹이 아닌 어플리케이션 개발도 얼마든지 개발할 수 있다. 웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다. 스프링이 없는 순수한 DI 컨테이너인 AppConfig는 ..
·코딩딩/Java
다형성 추상클래스 package oop.polymorphism; /* * 추상클래스 * => 상위클래스의 역할을 하는 클래스 * => 객체를 생성할 수 없는 클래스(미완성된 클래스) * => 내용이 구현되어 있지 않은 메소드를 포함하고 있는 클래스를 추상 클래스라 한다. * ----------------------- * 추상 메소드(body가 없는 메소드) * 1) 추상 메소드를 선언하는 방법 * 접근제어자 abstract 리턴타입 메소드명 (매개변수1, 매개변수2....); * 2) 추상클래스의 특징 * - 추상메소드가 하나라도 정의되어 있으면 추상클래스가 된다. 추상클래스는 선언부에 abstract을 추가한다. * - 추상 클래스에는 추상 메소드와 일반 메소드를 모두 정의할 수 있다. * - 추상 클..
·코딩딩/Java
스프링 컨테이너 생성 스프링 컨테이너가 생성되는 과정을 알아보자. // 스프링 컨테이너에 AppConfig를 등록한다. ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class); ApplicationContext를 스프링 컨테이너라 한다. ApplicationContext는 인터페이스이고 해당 코드를 보면 알 수 있듯 다형성이 적용되어 있다. 스프링 컨테이너는 XML을 기반으로 만들 수 있고, 에노테이션 기반의 자바 설정 클래스로도 만들 수 있다. (요즘엔 XML은 잘 사용하지 않는 추세다) 직전에 AppConfig를 사용했던 방식이 애노테이션 기반의 자바 설정 클래스로 스프링 컨테이너를 만..
·코딩딩/Java
for문같은 반복문 안에서 메소드를 호출하면 호출 될때마다 힙 메모리에 해당 메소드가 호출되어 메모리를 더 많이 쓰게된다. 계속 바뀌는 값이면 어쩔 수 없지만 바뀌지 않는 고정된 값이라면 반복문에 들어가기 전 변수에 해당 값을 할당한 뒤 반복문을 돌려주는게 더 효율적이다. Instance member stack과 heap 영역에 할당된다. 인스턴스 멤버란 객체를 생성한 후 사용할 수 있는 필드와 메소드를 말한다. 클래스 멤버는 객체에 소속된 멤버이기 때문에 객체 없이는 사용할 수 없다. 객체가 가지고 있는 고유의 값이라고 생각하면 될 것 같다. Static member method 영역에 할당된다. static(정적) 멤버란 클래스의 고정된 멤버로서 객체를 생성하지 않고 사용할 수 있는 필드와 메소드를 ..
·코딩딩/Java
Getter (게터)와 Setter (세터): Getter와 Setter는 객체의 상태에 접근하고 조작하기 위한 메서드. 주로 private한 멤버 변수의 값을 가져오거나 설정하는 용도로 사용된다. Getter는 해당 변수의 값을 반환하고, Setter는 해당 변수의 값을 설정한다. 이를 통해 클래스 내부의 멤버 변수를 캡슐화하여 외부에서 직접 접근하는 것을 방지하고, 객체의 상태를 제어할 수 있는 인터페이스를 제공한다. 일반적으로 Getter와 Setter 메서드는 public으로 정의됨. Getter: 멤버 변수의 값을 읽어오는 메서드. 예를 들어, getName() 메서드는 이름 멤버 변수의 값을 반환. Setter: 멤버 변수의 값을 설정하는 메서드 예를 들어, setName(String name..
전낙타
'java' 태그의 글 목록