Spring Service

김효준·2023년 11월 15일
0

수업정리

목록 보기
20/41

@Component

단 한번만 생성되고 그 이후에는 재사용되는 객체
컨트롤러가 각각 객체를 만들지 않고 한번 등록하고 등록된걸 공유해서 쓴다. = 공유 객체
공유객체가 빈 입니다.

@component 붙인 클래스의 객체 => 빈
빈은 스프링이 관리하는 객체!

@Service 
public class ArticleService {

ArticleService를 @Service어노테이션으로 정의한다.

@Controller
public class ArticleController {
    @Autowired
    private ArticleService articleService;

@Autowired // 필드 주입, final은 뺀다.
컴포넌트가 붙은 애만 @Autowired 할수 있다.
뉴를 안해도 된다!
공유 객체로 설정한 ArticleService를 오토와이어링 해서 새로운 객체를 생성하지 않고 등록된 객체를 갖고와서 쓴다.
잘된다!

아티클 레포지토리도 동일하게한다

어노테이션은
@component = @Service
@component = @Repository
가독성을 위해서...

생성자 주입


기존 필드 주입 상태에서 생성자 주입으로 바꿔보자

이런식으로 한다.


기존 필드 주입에서는 final 사용이 안됐는데 이제는 된다. final은 생성자에서 초기화되지않으면 방법이 없다


생성자가 하나인 경우 생성자에 @Autowired 생략 가능


롬복에 final 붙은 생성자만 주입해주는 어노테이션이 있다.
@RequiredArgsConstructor

필드 주입보다는 생성자 주입을 많이 쓰고 @RequiredArgsConstructor을 쓰면 final 생성자 주입시 생략가능하다.
위 사진에서는 필드 주입보다는 생성자 주입을 많이 쓰고 @RequiredArgsConstructor와 생성자 주입이 동시에 있어서 오류가 발생한 상황. AricleService 생성자를 지워주면 된다.

0개의 댓글