[SpringBoot] Service, Bean, Query String

왕감자·2024년 8월 22일

KB IT's Your Life

목록 보기
141/177

Service

@Service
@RequiredArgsConstructor
public class ItemService {

    private final ItemRepository itemRepository;

    public void saveItem(String title, Integer price) {
        Item item = new Item();
        item.setTitle(title);
        item.setPrice(price);
        itemRepository.save(item);
    }
}

new ItemService().saveItem(title, price);
/add 요청이 들어올 때마다 매번 new 키워드로 객체를 뽑아야 함 - 비효율적
@RequiredArgsContructor 붙이고 변수로 등록하기~!

@Controller
@RequiredArgsConstructor
public class ItemController {

    private final ItemRepository itemRepository;
    private final ItemService itemService;
    
    @PostMapping("/add")
    String addPost(String title, Integer price){
        itemService.saveItem(title, price);
        return "redirect:/list";
    }

Dependency injection

  • 스프링에게 알아서 new ItemService()를 itemService 변수에 넣어달라고 하는 것
  • ItemController도 new ItemController() 이런식으로 사용 되는데 그 때도 new ItemController(new ItemService()) 이렇게 넣어서 itemService에 넣어달라는 소리~!
  • 매번 object를 뽑아쓰지 않아도 되어서 성능상 효율적임
    • 하나만 뽑아서 계속 사용 - 싱글톤 패턴
  • 클래스 간 연결고리 줄여줌

Bean

  • Spring IoC Container : 스프링이 object를 뽑는 공간
  • Bean : 그 컨테이너 안에 들어있는 object


Query String

단점: 자료 많으면 복잡해짐, 정보가 유저에게 잘 보임

<script>
    document.querySelectorAll('.btn')[0].addEventListener('click', function(){
        fetch('/test1?name=kim&age=10')
    })
</script>
@GetMapping("/test1")
String test1(@RequestParam String name, Integer age){
    System.out.println(name);
    System.out.println(age);
    return "redirect:/list";
}

0개의 댓글