분류 전체보기
-
ORM - JPA시작(비지니스 로직)FrameWork/ORM 2024. 2. 28. 12:35
JPA시작(비지니스 로직) 비지니스 로직 @Component public class JpaMain { @Transactional public void logic(EntityManager em){ String id = "id1"; Member member= new Member(); member.setId(id); member.setUsername("진영"); member.setAge(2); //등록 em.persist(member); //수정 member.setAge(20); //한건 조회 Member findMember = em.find(Member.class,id); System.out.println("findMember="+findMember.getUsername()+ ", get="+findMemb..
-
Spring Boot API - Spring SecurityFrameWork/Spring&Spring-boot 2024. 2. 21. 16:45
Spring Security spring 기반 애플리케이션 보안(인증, 권한)을 처리하는 프레임워크 https://spring.io/projects/spring-security implementation group: 'org.springframework.boot', name: 'spring-boot-starter-security', version: '3.1.5' RESTful API에서는 어플리케이션의 인증 처리를 위해서는 다양한 방식이 있는데 Oauth, Token, 아이디-비밀번호 등을 통해서 인증을 할 수 있다. 스프링 시큐리티가 적용된 상태에서 security password 없이 전체 user를 조회하는 위와 같은 uri를 호출하면 401 Unauthorized와 같은 오류가 발생하는 것을 확인..
-
Spring Boot API - Swagger, Actuator, HAL ExplorerFrameWork/Spring&Spring-boot 2024. 2. 21. 14:41
Swagger + Spring Boot 3.x implementation group: 'org.springdoc', name: 'springdoc-openapi-starter-webmvc-ui', version: '2.2.0' @OpenAPIDefinition( info = @Info(title = "My Resful Service API 명세서", description = "Spring Boot로 개발하는 RESTful API 명세서 입니다.", version = "v1.0.0" ) ) @Configuration @RequiredArgsConstructor public class SwaggerConfig { @Bean public GroupedOpenApi customTestOpenAPI(){ Stri..
-
Spring Boot API - Validation, Internationalization(다국어 처리), Filtering카테고리 없음 2024. 2. 20. 13:05
Validation dependency 추가 implementation group: 'org.springframework.boot', name: 'spring-boot-starter-validation', version: '3.2.1' spring boot에서 validation기능은 JDK에 포함된 validation API 혹은 하이버네트 라이브러리에 포함되어 있는 하이버네이트 validation을 사용할 수 있다. @PostMapping("/users") public void createUser(@Valid @RequestBody User user){ User savedUser = service.save(user); } @Data @AllArgsConstructor public class User ..
-
Spring Boot API - User Service, Exception Handing...FrameWork/Spring&Spring-boot 2024. 2. 19. 12:24
User Service 도메인 도메인 각 회사들이 가지고 있는 도메인을 뜻하는게 아니라 도메인 knowledge라고 해서 비지니스 서비스에서 사용되는 업무 영역, 업무 규칙, 업무 지식을 의미한다. User도메인 사용자 정보를 어떤 형태,어떤 구조로 저장할지 어떤 데이터를 저장할지에 대해 설계를 하고 사용자에 아이디, 이름, 가입 날짜와 같은 것들이 들어 갈 것이다. UserDaoService.java @Component public class UserDaoService { } 스프링 컨텍스트에 Component로 등록 스프링 컨텍스트가 이해할 수 있는 빈의 유형을 등록하는 것이다. Retrieve User resource @RestController public class UserController {..
-
SpringBoot - Bean추가, Configuration, Path VariableFrameWork/Spring&Spring-boot 2024. 2. 19. 09:38
Bean추가 Java 형태의 Bean으로 반환시켜주는 메소드 @RestController public class HelloWorldController { //GET //URI - /hello-world //@RequestMapping(method=RequestMethod.GET, path="/hello-world") @GetMapping(path = "/hello-world") public String helloWorld(){ return "Hello World"; } @GetMapping(path = "/hello-world-bean") public HelloWorldBean helloWordBean(){ return new HelloWorldBean("Hello World"); } } 두번 째 메서드..
-
ORM - JPA설정FrameWork/ORM 2024. 2. 14. 16:14
JPA 설정 JPA 설정은 영속성 유닛(persistence-unit)이라는 것부터 시작하는데 일반적으로 연결할 데이터베이스당 하나의 영속성 유닛을 등록한다. 그리고 영속성 유닛에는 고유한 이름을 부여해야 하는데 application.properties spring.datasource.url=jdbc:h2:tcp://localhost/~/test:mem:jpausage 위와 같이 url 속성에 연결해서 `mem:jpausage`와 같이 명시 해주면 된다. JPA 표준 속성 spring.data.username : 데이터베이스 접속 아이디 spring.datasource.password : 데이터베이스 접속 비밀번호 spring.datasource.url : 데이터베이스 접속 URL 하이버네이트 속성 sp..
-
회고록 - 서비스 내 재화 시스템 Cash도입나의 개발 이야기 2024. 2. 3. 18:28
Cash 시스템 도입 작년 제가 백엔드를 담당하고 있는 앱에 Cash와 비슷한 개념에 실제 돈을 주고 앱내 제화를 구매하여 사용하는 시스템이 도입되었습니다. 해당 프로젝트를 하면서 고민했던 사항에 대해 공유하는 글을 쓰고자 합니다. 설명의 편의성을 위해 이하 앱내 제화를 Cash라고 통일하여 명명하겠습니다. 어느 정도 돈으로 환원되는 부분이 있기 때문에 처음에는 해당 도메인을 구상할 때 작은 세상의 화폐를 설계한다는 생각으로 접근했습니다. 최초의 데이터 구조 최초의 생각한 데이터의 구조는 위와 같습니다. 통장과 같이 획득 내역과 사용내역을 +,- 연산해서 남는 금액이 최종 잔액이 되는 것입니다. 유효기간이 존재하는 Cash 그리고 우선순위 하지만 이 구조는 실제 화폐와 다르게 무료로 획득한 Cash경우 ..