Spring & Spring Boot12 Spring & Spring Boot - @Accessors @Accessors@Accessors(chain = true)는 Lombok 라이브러리에서 제공하는 애노테이션이다. 이 애노테이션은 자동으로 생성된 Getter 및 Setter 메소드의 동작을 변경하는 데 사용된다.기본적으로 Lombok은 @Getter 및 @Setter 애노테이션을 사용하여 필드의 Getter 및 Setter 메소드를 생성한다. 그러나 @Accessors(chain = true)를 사용하면 체인 형식의 호출을 지원하는 메소드들을 생성한다. 이것은 객체의 메소드 호출을 연결하여 단일 표현으로 나타낼 수 있게 해준다예를 들어, 다음과 같은 클래스가 있다고 가정해보자import lombok.Getter;import lombok.Setter;import lombok.AccessLevel;imp.. 2024. 5. 9. WAR 빌드와 배포 - intelliJ Tomcat(톰캣) 설정 톰캣 설치 톰캣 설치 링크 Download 메뉴에서 Apache Tomcat 10 버전의 톰캣 다운로드 Core에 있는 zip 을 선택 다운로드 후 압축 풀기 톰캣 실행 설정 MAC, 리눅스 사용자 톰캣폴더/bin 폴더로 이동 권한 주기: chmod 755 * 실행: ./startup.sh 종료: ./shutdown.sh 참고 MAC, 리눅스 사용자는 권한을 주지 않으면 permission denied 라는 오류가 발생할 수 있다. 윈도우 사용자 톰캣폴더/bin 폴더로 이동 실행: startup.bat 종료: shutdown.ba Intellij (유료버전) - 톰캣 설정 1. 상단 Run(실행) -> Run...(실행...) -> Edit Configuration(구성 편집) -> 왼쪽 상단 플러스 버.. 2024. 2. 6. Netty Netty(네티)는 네트워크 응용 프로그램을 개발하기 위한 고성능, 이벤트 기반의 네트워크 프레임워크입니다. Netty는 Java로 작성되었으며, TCP, UDP, HTTP 및 기타 다양한 프로토콜을 지원하는 다목적 네트워크 프로그래밍을 위해 설계되었습니다. 여기에는 다양한 기능이 포함되어 있어 대규모의 분산 시스템 및 서버 개발에 적합합니다. Maven 프로젝트에서 pom.xml 파일에 의존성 dependency 추가 io.netty netty-all 4.1.86.Final Netty 구조 application.yml netty: server: use: true port: 2xxx client: use: true host: 1xx.xxx.xx.xx port: 3xxx requestTime: 10 app.. 2023. 11. 21. Springboot - 생성자 주입 , 필드 주입 방식, 수정자 주입 방식의 차이점 & 생성자 주입 방식을 권하는 이유? @Autowired InquiryService inquirService; 위에 코드를 보면 나는 컨트롤러를 구성할 때 필드 주입 방식을 사용하였다. 이렇게 컨트롤러를 구성했을 때 선배들한테 피드백을 받았다. 필드 주입 방식이 아닌 생성자 주입 방식으로 처리를 하라는 피드백 이었다. 나는 궁금해서 생성자 주입 방식 필드 주입 방식 수정자 주입 방식의 차이점을 공부를 해보았다. 우선 위에 설명 했듯이 스프링 프레임워크에 의존성을 주입하는 방식은 3가지가 있다. 1. 생성자 주입 public class AdminController { private final MemberService memberservice; private final AdminService adminService; @Autowired // (.. 2023. 2. 20. Springboot - ResponseEntity란? ResponseEntity란? Spring Framework에서 제공하는 클래스 중 HttpEntity라는 클래스가 존재한다. 이것은 응답자체의 독립된 값이나 표현형태로, 사용자의 HttpRequest에 대한 응답 데이터를 포함하는 클래스이다. 따라서 HttpStatus, HttpHeaders, HttpBody를 포함한다. H HttpEnityt를 상속받으며, RestTemplate(서버와 서버간 통신을 쉽게해줌) 및 @Controller메서드에 사용하고 있다. Response header : 웹서버가 웹브라우저에 응답하는 메시지 Reponse body : 데이터 값 ResponseEntity 사용법 String 내부에서 친절하게 ResponseEntity 객체가 구현이 되어있다. 생성자에 status .. 2023. 2. 15. Springboot - Lombok 라이브러리에서 자주 사용하는 애노테이션 Lombok 라이브러리 Lombok 라이브러리는 반복적인 Getter/Setter, ToString과 같은 반복적인 자바 코드를 컴파일할 때 자동으로 생성해주는 라이브러리 입니다. Lombok 라이브러리를 사용하면 반복적인 소스코드를 제거할 수 있으므로 코드를 좀 더 깔끔하게 작성할 수 있습니다. Lombok을 사용하기 위해서 mvnrepository 에서 lombok을 검색하여 pom.xml에 의존성을 다음과 같이 추가합니다. Lombok 라이브러리에서 자주 사용하는 애노테이션 애노테이션 설명 @Getter/Setter 코드를 컴파일할 때 속성들에 대한 Getter/Setter 메서드 생성 @ToString toString() 메서드 생성 @ToString(exclude={"변수명"}) 원하지 않은 속.. 2023. 2. 14. Springboot @Scheduled 애노테이션 쓰레드 문제 쓰레드 풀 설정 기본적으로 @EnableScheduling 어노테이션을 사용 시 작업을 실행할 스케줄링을 위해서 스레드가 하나만 있는 스레드 풀을 만듭니다. @Scheduled 작업은 대기열에 쌓이게 되며 단일 스레드에 의해서만 실행됩니다. 여러 작업을 제시간에 맞추어서 실행하기 위해서는 스레드를 늘릴 필요가 있을 것입니다. SchedulingConfigurer 인터페이스를 구현하여 설정을 변경할 수 있습니다. setThreadNamePrefix를 이용하여 로그로 남길시 현재 실행하는 쓰레드 명 Prefix를 붙일 수 있습니다. @Configuration public class SchedulerConfig implements SchedulingConfigurer { @Value("${thread.pool.. 2023. 1. 19. Springboot & Vue3.js - 쿠키 , 세션을 이용한 로그인 처리 서버에서 쿠키 생성하기 new Cookie("memberId", String.valueOf(loginMember.getId())); : Cookie 라는 클래스 생성자로 key/value 를 인수로 넘겨주어 생성한다. response.addCookie(idCookie); : 생성된 쿠키(idCookie)를 서버 응답 객체(HttpServletResponse) 에 addCookie를 이용해 담아준다. 그럼 실제로 웹 브라우저에서는 Set-Cookie 프로퍼티에 쿠키정보가 담겨져 반환된다. 서버에서 쿠키 조회하기 @CookieValue(name = "memberId", required = false) Long memberId : 쿠키를 편하게 조회할 수 있도록 도와주는 애노테이션이다. 전송된 쿠키정보중 ke.. 2023. 1. 12. Springboot & Vue3.js - 암호화된 비밀번호 검증 - BcryptPasswordEncoder 1. 암호화된 비밀번호 검증 - BcryptPasswordEncoder 2. matches 메서드를 활용해 암호화된 비번 검증할 수 있다. 시큐리티를 사용 중, 회원사 비번 수정 기능을 부여하는데 있어서 기존 비밀번호를 한 번 더 테스트해야 될 필요가 있었다. 하지만, 비번을 암호화하면 매번 다른 랜덤키로 인코딩 되기 때문에, 기존 방식으로 검증은 불가능하고, 인코더 객체의 matches 함수를 활용해, 검증할 수 있었다. 스프링코드 @ResponseBody @RequestMapping(value = "login", method = RequestMethod.POST) public boolean login(@RequestBody Member member) { boolean idMatch = false; b.. 2023. 1. 11. Springboot & Vue3.js - 비밀번호 암호화 - BcryptPasswordEncoder 개요 BcryptPasswordEncoder는 PasswordEncoder 인터페이스의 구현체이며 Bcrypt 해싱 함수를 사용해 비밀번호를 인코딩해주는 메서드와 사용자가 로그인할 때 제출한 비밀번호와 DB에 저장되어 있는 비밀번호의 동일 여부를 확인해주는 메서드를 제공 사람들은 여러 사이트에 동일한 아이디와 비밀번호를 사용하는데 혹여나 DB가 해킹당했을 경우 해커가 평문으로 저장된 아이디와 비밀번호를 통해 여러 사이트를 동시에 접속할 가능성이 있기 때문에 비밀번호는 항상 암호화를 한 뒤 저장해줘야한다. 이번 게시글에서는 해싱 즉, 단방향 암호화 기능을 제공하는 BcryptPasswordEncoder에 대해 공부해보겠다. Spring Security에서 공식 지원하는 PasswordEncoder 구현 클.. 2023. 1. 11. 이전 1 2 다음