inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[인프런 워밍업 클럽 Study] 백엔드 2주차 발자국

S.M KIM
0


학습 내용 요약

 

<클린 코드>

좋지 않은 코드를 작성할 때의 문제점

 

<Layered Architecture>

 

<Controller와 Spring Container>

@RestController
public class UserController {
	private final UserService userService;
	public UserController(JdbcTemplate jdbcTemplate) {
		this.userService = new UserService(jdbcTemplate);
	}
}

 

<Spring Container를 사용하는 이유>

IoC (Inversion of Control, 제어의 역전)

 

DI (Dependency Injection : 의존성 주입)

 

<Spring Container를 다루는 방법>

<Spring Bean을 주입받는 방법>

1. 생성자를 이용한 주입

@Repository
public class UserRepository {
	private final JdbcTemplate jdbcTemplate;
	
	// 생성자에 JdbcTemplate이 있으므로 스프링 컨테이너가 넣어준다.
	public UserRepository(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	...
}

 

2. setter를 이용한 주입

@Repository
public class UserRepository {
	private JdbcTemplate jdbcTemplate;
	
	@Autowired
	public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
		this.jdbcTemplate = jdbcTemplate;
	}
	
	...
}

 

3. 필드에 직접적으로 주입

@Repository
public class UserRepository {

	@Autowired
	private JdbcTemplate jdbcTemplate;
	
	...
}

 

4. @Qualifier 어노테이션을 이용한 주입

@Service
@Qualifier("main")
public class BananaService {

	...
}
@RestController
public class UserController {

	private final UserService userService;
	private final FruitService fruitService;
	
	public UserController(UserService userService,
	@Qualifier("main") FruitService fruitService) {
		this.userService = userService;
		this.fruitService = fruitService;
	}
	
	...
}

회고

이번 주에는 지난 금요일에 들었던 깜짝 특강이 기억에 남았습니다. 테스트 코드에 대한 것은 막연하게 들어만 봤었습니다. 얼마 전에 프로젝트를 진행하면서 팀원이 사용한 것을 보긴 했지만, 당시에 저는 프론트앤드 역할이라 테스트 코드에 대해서 고찰해 볼 기회가 적었습니다. 이렇듯 테스트 코드를 실제로 적용한 적은 없었지만 지난 특강으로 클린코드에 대한 개념과 더불어 테스트 코드의 작성에 대한 개념을 익히게 되어 도움이 많이 되었습니다.


 

백엔드 워밍업

답변 0