아래의 코드처럼 생긴 것 들은 spring bean을 주입 받아서 사용하는 코드들
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service // 얘는 주입시에는 상관 없음, 본인이 spring bean이 되는 것
@RequiredArgsConstructor // 얘가 주입시켜주는 어노테이션 (생성자주입)
public class MyService {
// MyRepository가 반드시 spring bean 등록이 되어있어야 함!!!
private final MyRepository myRepository; // final 꼭!! 있어야함!!!
}
@Service // 얘는 주입시에는 상관 없음, 본인이 spring bean이 되는 것
public class MyService {
// MyRepository가 반드시 spring bean 등록이 되어있어야 함!!!
@Autowired
private MyRepository myRepository;
}
@Configuration // Bean 정의를 위한 소스로 인식하게 하는 어노테이션
public class AppConfig {
@Bean // 꼭 올리고 싶은 java class를 리턴하는 메소드를 만들고 그 위에 달아야함
public MyBeanClass myBean() {
return new MyBeanClass();
}
}
@Component
public class MyBeanClass {
// class 안에 내용`~
}
이건 Spring 자체 기능이 아니라 먼저 dependendy 설정 필요
@SpringBootApplication
@MapperScan("com.example.mapper") // 매퍼 인터페이스가 위치한 패키지
public class MyApplication {
public static void main(String[] args) {
SpringApplication.run(MyApplication.class, args);
}
}
package com.example.mapper;
@Mapper // 사용할 인터페이스 위에 사용
public interface UserMapper {
User findById(int id);
List<User> findAll();
}
<!-- @Mapper된 경로랑 같아야 함 -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="findById" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<select id="findAll" resultType="com.example.model.User">
SELECT * FROM users
</select>
</mapper>
xml기반 빈 등록도 있는데 이번엔 안 쓰는 것 같아서 일단 제외입니당