You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
위의 Config를 스프링 빈을 통해서 직접 등록하며, 빈 등록 과정에서 실제 호출되는 것을 알아보기 위해 로그를 남긴다.
mock repository
@RepositorypublicclassMemberRepository {
publicfinalJdbcTemplatetemplate;
publicMemberRepository(JdbcTemplatetemplate) {
this.template = template;
}
publicvoidinitTable() {
template.execute("create table member(member_id varchar primary key, name varchar)");
}
publicvoidsave(Membermember) {
template.update("insert into member(member_id, name) values(?,?)",
member.getMemberId(),
member.getName());
}
publicMemberfind(StringmemberId) {
returntemplate.queryForObject("select member_id, name from member where member_id=?",
BeanPropertyRowMapper.newInstance(Member.class),
memberId);
}
publicList<Member> findAll() {
returntemplate.query("select member_id, name from member",
BeanPropertyRowMapper.newInstance(Member.class));
}
}
예제 Repository를 만들어서 데이터를 DB에 보관하고 관리하기 위해 앞서 등록한 빈(JdbcTemplate, DataSource, TransactionManager)이 사용된다. DB에 데이터를 보관하고 관리하기 위해 이러한 객체들을 항상 스프링 빈으로 등록해야 하는 번거로움이 존재한다. 만약 DB를 사용하는 다른 프로젝트를 진행하다면 이러한 객체들을 또 스프링 빈으로 등록해줘야만 하는 것이다.
DBConfig에서 @configuration을 제거하고, 빈 등록이 이루어지지 않더라도 위의 AutoConfig 테스트케이스는 통과한다.
즉, 테스트케이스를 확인해보면 Bean등록이 일어나지 않더라도, JdbcTemplate, DataSource, TransactionManager 빈이 등록되어있음을 알 수 있다.
위의 3가지 빈들은 스프링 부트가 자동으로 등록해준다.
스프링 부트의 자동 구성
스프링 부트는 자동 구성(Auto Configuration)기능을 제공하며, 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해준다. JdbcTemplate, DataSource, TransactionManager 모두 스프링 부트가 자동 구성을 제공해서 자동으로 스프링 빈으로 등록된 것이다.
이러한 자동구성덕분에 개발자는 복잡한 빈 등록과 설정을 최소화하고 어플리케이션 개발을 할 수 있다.
spring-boot-autoconfigure
스프링 부트의 spring-boot-starter 하위에 spring-boot-autoconfigure 프로젝트가 존재한다.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
자동 구성 (Auto Configuration)
수동 빈 등록 예제
아래의 Configuration을 통해서 JdbcTemplate을 사용해서 데이터를 DB에 보관하고 관리하는 기능
DB Config
위의 Config를 스프링 빈을 통해서 직접 등록하며, 빈 등록 과정에서 실제 호출되는 것을 알아보기 위해 로그를 남긴다.
mock repository
예제 Repository를 만들어서 데이터를 DB에 보관하고 관리하기 위해 앞서 등록한 빈(JdbcTemplate, DataSource, TransactionManager)이 사용된다. DB에 데이터를 보관하고 관리하기 위해 이러한 객체들을 항상 스프링 빈으로 등록해야 하는 번거로움이 존재한다. 만약 DB를 사용하는 다른 프로젝트를 진행하다면 이러한 객체들을 또 스프링 빈으로 등록해줘야만 하는 것이다.
@configuration을 삭제하면? 자동 구성 확인
해당 어노테이션을 삭제하면, bean scan 대상이 아니기때문에 bean으로 등록되지 않게 된다.
그러면 당연히 DB를 사용하기위해 필요한 객체들(JdbcTemplate, DataSource, TransactionManager)가 스프링 컨테이너에 등록되지 않기때문에 사용할 수 없게 된다.
AutoConfig Test케이스
DBConfig에서 @configuration을 제거하고, 빈 등록이 이루어지지 않더라도 위의 AutoConfig 테스트케이스는 통과한다.
즉, 테스트케이스를 확인해보면 Bean등록이 일어나지 않더라도, JdbcTemplate, DataSource, TransactionManager 빈이 등록되어있음을 알 수 있다.
위의 3가지 빈들은 스프링 부트가 자동으로 등록해준다.
스프링 부트의 자동 구성
스프링 부트는 자동 구성(Auto Configuration)기능을 제공하며, 일반적으로 자주 사용하는 수 많은 빈들을 자동으로 등록해준다. JdbcTemplate, DataSource, TransactionManager 모두 스프링 부트가 자동 구성을 제공해서 자동으로 스프링 빈으로 등록된 것이다.
이러한 자동구성덕분에 개발자는 복잡한 빈 등록과 설정을 최소화하고 어플리케이션 개발을 할 수 있다.
spring-boot-autoconfigure
스프링 부트의
spring-boot-starter하위에spring-boot-autoconfigure프로젝트가 존재한다.@AutoConfiguration: 자동 구성을 사용하기 위해 등록되는 어노테이션내부에 @configuration 어노테이션이 있어 빈을 등록하는 설정파일로 사용
after=DataSourceAutoConfiguration.class자동 구성이 실행되는 순서를 지정할 수 있음. JdbcTemplate가 DataSource를 필요로 하기에, DataSource를 자동등록하는 DataSourceAutoConfiguration 실행 후 설정되도록 함
@ConditionalOnClass({DataSource.class, JdbcTemplate.class})IF문처럼 특정 클래스가 있는 경우에만 설정이 동작함.
JdbcTemplate은 DataSource, JdbcTemplate 클래스가 있어야 동작가능
@Import스프링에서 자바 설정을 추가할 때 사용@Configuration: 자바 설정파일@ConditionalOnMissingBean(JdbcOperations.class)JdbcOperations 빈이 없을때 동작함
JdbcTemplate의 부모 인터페이스가 JdbcOperations임
이런 기능이 없다면 개발자가 등록한 JdbcTemplate과 자동구성이 등록하는 JdbcTemplate이 출독이 일어남 → 개발자가 등록한 빈이 있다면 자동구성이 일어나지않음
스프링 부트가 제공하는 자동 구성
스프링 부트는 수 많은 자동 구성을 제공하며, spring-boot-autoconfigure에 자동구성을 모아둔다.
Auto Configuration - 자동설정? 자동구성?
자동설정
Configuration이라는 단어가 컴퓨터 용어에서는 환경 설정, 설정이라는 뜻으로 사용됨. Auto Configuration은 크게 빈들을 자동으로 등록해서 스프링이 동작하는 환경을 자동으로 설정해주기때문에 자동 설정이라는 용어도 맞음
자동 구성
Configuration이라는 단어는 구성, 배치라는 뜻도 있음
컴퓨터는 CPU, 메모리 드응ㄹ 배치해야 동작함. 이렇게 배치하는 것을 구성이라고 함.
스프링도 실행에 필요한 빈들을 적절하게 배치해야하며, 자동 구성은 이러한 필요 빈들을 자동으로 배치해줌
자동 구성 예제
예제 코드
Beta Was this translation helpful? Give feedback.
All reactions