본문 바로가기

728x90

스프링부트

[Spring Boot] RESTAPI - 예외처리 /* 특수 예외처리 (유저 찾기 실패 시)*/ @GetMapping("/users/{id}") public EntityModel retrieveUser(@PathVariable int id) { User user = userDaoService.findById(id); if (user == null) { throw new UserNotFoundException("id:" + id); } EntityModel entityModel = EntityModel.of(user); WebMvcLinkBuilder link = linkTo(methodOn(this.getClass()).retrieveUserList()); entityModel.add(link.withRel("all-users")); return ent.. 더보기
[Spring Boot] JsonIgnore, JsonIgnoreProperty, JsonFilter /* 사용 이유 */ 클라이언트에게 보내면 위험한 데이터가 있다. 따라서 @JsonIgnore, @JsonIgnoreProperties 아니면 @JsonFilter를 이용해 클라이언트에 데이터를 보낼 시 필터링 작업을 거칠 수 있다. /* 방법 1. @JsonIgnore - field2 가리기*/ public class SomeBean{ private String field1; @JsonIgnore private String field2; private String field3; public SomeBean(String field1, String field2, String field3){ this.field1 = field1; this.field2 = field2; this.field3 = field3;.. 더보기
[Spring Boot] RestAPI - ResponseEntity, Hateoas /*REST API*/ REST (Representational State Transfer) API : 웹 서비스에서 클라이언트와 서버간의 통신을 위한 아키텍처 스타일. /*ResponseEntity - 빌더사용*/ HTTP 요청에 대한 응답을 캡슐화하는 클래스. HTTP 상태 코드, 헤더, 바디 를 포함할 수 있다. Builder를 사용하는 게 직관적이어서 더 좋다고 생각한다. @GetMapping("/test") public ResponseEntity test(){ HttpHeaders headers = new HttpHeaders(); headers.add("HeaderName","HeaderValue"); return ResponseEntity.ok() //상태코드 .headers(headers).. 더보기
[Spring Boot] 메시지 국제화 (Internationalization) /* 메시지 국제화 */ 내가 만들고 있는 웹이 여러 언어 환경을 지원할 수 있도록 설계하는 것을 의미한다. (독일에 있는 독일인이 내 웹을 보고싶다 -> 자동으로 독일어를 지원하게 하는 웹) /* 디폴트값 설정 */ 나는 REST API로 메시지 국제화를 해볼 생각이다. 그래서 localhost:8080/hello-world-internationaized 를 방문했을 때 Good Morning 을 디폴트 값으로 설정하고 독일어를 지원할 생각이다. 그러면 디폴트값은 다음과 같이 설정할 수 있다. // messages.properties good.morning.message = Good Morning 파일명은 반드시 messages.properties로 해야한다. yml파일은 안된다 (혹시 되나요?) /*.. 더보기
[Spring Boot] @Validation 유효성 /* Validation */ implementation 'org.springframework.boot:spring-boot-starter-validation' 위는 gradle 용 dependency로 validation dependency를 이용할 수 있다. /* 객체 설정*/ @Getter @Setter @Entity public class Todo { @NotNull private int id; @NotBlank(message = "유저명은 필수 입력 값입니다") private String userName; @Size(min = 10, message = "열글자 이상 입력하세요") private String description; private LocalDate localDate; private .. 더보기
[Spring Boot] Spring JDBC /* Spring JDBC */ Spring JDBC를 이용해 Java 언어로 데이터베이스와 연동해 쿼리를 실행시킬 수 있다. 일단 테이블을 만들어야 하므로 resource 폴더에 schema.sql 이라는 파일을 만들고 다음과 같이 쿼리를 작성했다. CREATE TABLE course ( id bigint not null, name varchar(255) not null, author varchar(255) not null, primary key(id) ); SPRING JDBC 의존성을 추가했으므로 스프링부트 실행 시에 이 쿼리도 실행이 될것이다. 그리고 Course라는 객체를 다음과 같이 만들자 @Getter @Setter public class Course { private Long id; pri.. 더보기
[Spring Boot] @ConfigurationProperties /* 사용하는 이유*/ application.properties 나 application.yml에 있는 외부 설정 정보를 가져오기 위한 기능을 제공한다. 이는 RestAPI를 만들 때에도 용이하다. /* application.properties 설정*/ application.properties에 외부 설정 정보를 다음과 같이 설정했다고 하자. 우리는 이 내용들을 자바 클래스 안에서 다루고 싶다. 그러면 다음과 같이 설정을 하자 /* ConfigurationProperties 설정*/ 어노테이션 @ConfigurationProperties를 이용해 application.properties를 참고하고 prefix를 이용해 어느 정보를 얻고싶은지 알려야 한다. 그리고 이 외부정보들을 Spring IOC Con.. 더보기
[Spring Boot] 컴포넌트와 빈 차이 (Component vs Bean) Udemy에서 들은 내용을 바탕으로 합니다 @Component 와 @Bean 은 둘다 스프링에 빈을 등록해준다. 그렇다면 언제 @Component를 쓰면 좋고, 언제 @Bean을 쓰면 좋을까? @Component @Bean 사용 방법 자바 클래스 안에 사용된다 Configuration 클래스안에서 사용 편리성 어노테이션만 추가하면 된다 빈 객체에 필요한 정보를 모두 써야한다 Autowired 방법 필드, 생성, Setter 주입 Method Call 아니면 Method Parameter 빈 등록 스프링 프레임워크가 직접 빈 등록 우리가 빈 등록 코드를 작성 해야함 언제? 우리가 만든 애플리케이션 코드에 대해 빈 등록이 필요할때 1. 비즈니스 로직 2. 서드파티 라이브러리에 대한 빈을 등록할때 더보기

728x90