Spring 7

[ spring ] @Component 와 @Configuration

@Component "이 클래스는 커스텀 빈이다" @ComponentScan 을 통해 검색된다. @SpringBootApplication에 래핑 되어 있기에 일반적으로는 신경 쓰지 않아도 된다. 용도에 맞춘 스테레오 타입의 어노테이션을 가지고 있다. @Controller @Service @Repository @Configuration 가능하면 스테레오 타입을 사용한다. Class-level annotation이다. @Component는 등록하려는 Bean의 클래스 소스가 편집 가능한 경우(개인이 직접 만든 클래스)에 사용한다. @ Bean Method - level annotaion이다. 인스턴스화 하는 코드가 수동으로 작성됨으로 외부 라이브러리나 써드파티 클래스도 Bean으로 등록이 가능하다. @Con..

Spring 2022.12.16

[ Spring ] 트랜잭션

Transaction이란? DB 상태를 변화시키기 위해 수행하는 작업의 논리적 단위 DB 상태를 변화시킬 수 있는 행동 Select DML - Update, Insert, Delete DDL - Create, Drop 여기서 select는 왜 트랜잭션 단위로 묶일까? Select가 데이터 베이스 상태를 변화시킬 수 있는 것은 아니다. 그러나 트랜잭션으로 관리하면 좋다. 왜냐하면 Select를 수행하는 동안 해당 테이블을 업데이트 할 수 없도록 하기 위함이다. 보통 Select 한 결과를 update, insert, delete의 매개변수로 이용할 수 있기 때문에 트랜잭션으로 관리한다. 트랜잭션의 성질 ACID 원자성 - 한 트랜잭션 내에 실행한 연산들은 하나의 작업으로 봄 ( all or nothing ..

Spring 2022.12.12

[ Spring ] 의존성 주입 방법 (feat.lombok)

여러 강의를 듣고, 참고자료를 찾아보며 사람들마다 의존성 주입 방법이 다른 것을 느낄 수 있었다. 나는 지금까지 생성자를 이용해서 의존성 주입을 하고있었는데, 롬복을 활용한 방법을 보고 궁금증이 생겨 공부를 하고 이 글을 작성하게 되었다. 의존성 주입이란? 필요한 객체를 직접 생성하는 것이 아닌 외부로부터 객체를 받아 사용하는 것이다. 이를 통해 객체간의 결합도를 줄이고 코드의 재활용성을 높일 수 있다. 의존성 주입의 3가지 방법 기본적으로 의존성 주입에는 3가지 방법이 있다. 생성자 주입 필드 주입 setter 주입 1) 생성자 주입 private DeveloperRepository developerRepository; //final로 선언 가능 @Autowired public DMakerService..

Spring 2022.11.23

[ Spring ] Swagger이란

swagger는 api를 문서화 시켜주는 것이다. 전에 졸업작품 프로젝트를 진행할 때에는 액셀 스프레드시트를 이용하여 api를 직접 문서화 했다. 그리고 이를 통해 프론트와 소통했다. 이는 개발자가 일일히 작성해줘야 하기 때문에 굉장히 귀찮고, 실수가 많았다. 그런데 이 swagger는 이를 자동으로 해주는 툴이다. 1. dependency 설정 maven repository에 접속하여 springfox를 검색한다. 그 다음 springfox boot starter에 들어가야 한다. 여기서 gradle dependency를 가져와서 다시 빌드한다. // https://mvnrepository.com/artifact/io.springfox/springfox-boot-starter implementation..

Spring 2022.11.17

[ Spring ] restTemplate

지금까지는 항상 server의 입장에서 API를 제공하는 방법에 대해 공부했다. 여기서 더 나아가, 백엔드에서 client가 되어 다른 server와 연결하는 것도 필수적이다. 이 때 사용하는 것이 restTemplate이다. Get 요청하기 Object로 받기 public void getForObject(){ URI uri = UriComponentsBuilder .fromUriString("http://localhost:9090") .path("/api") .queryParam("name","steve") .queryParam("age",10) .encode() .build() .toUri(); log.info("uri : {}",uri); RestTemplate restTemplate = new R..

Spring 2022.11.11

[spring] 어노테이션 (Annotaions)

정말 자주 쓰이는 어노테이션들을 정리해보았습니다. Annotation 의미 @SpringBootApplication Spring boot applicatiion으로 지정 @Controller View를 제공하는, ViewResolver를 사용하는 controller로 설정 response형태가 기본적으로 html형태임. @RestController rest api를 제공하는 controller로 설정 response형태는 ObjectMapper를 통해 json으로 변경되서 내려감 @RequestMapping url 주소를 매핑하는 형태, 원하는 http메서드를 지정해야한다. 지정하지 않으면 모든 http메서드가 동작하게 됨. @GetMapping RequestMapping을 세분화 시킨 것 @PostMa..

Spring 2022.11.04

[ Spring ] Get/Post 와 ObjectMapper

Get query - param 1. @ requestParam map - map으로 받기 2. @ requestParam String name ~~ - 변수로 받기 3. UserRequest userRequest - 객체로 받기 객체로 받는 방법이 제일 많이 사용된다. path - variable /path-variable/{id} @PathVariable(name = "id") String pathName) {}안의 값이 받는 변수값이랑 다를땐 name지정을 해줘야 한다. Post requestParam으로 받을 수도 있긴하다. get과 차이점은 쿼리가 바디로 숨겨져서 들어오는 것. 그러나 현재는 대부분 Json을 이용한다. Json 1. @RequestBody , Map로 받기 2. @Request..

Spring 2022.11.03