일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 말 더듬
- DBMS
- 악보
- 오라클
- 신입
- 6학년 8반 1분단
- IT
- DBMS 구성요소
- Inside Of Me
- 인덱스
- nginx
- 니가 참 좋아
- 데이터베이스
- 핑거스타일
- 기타
- 오라클 아키텍처
- 레이디스코드
- 천공의 시간
- 스위트라떼
- SQL 처리
- 개발자
- 러블리즈
- I'm fine thank you
- oracle
- db
- 봄 사랑 벚꽃 말고
- 장범준
- 아이유
- index
- 슬픔의 후에
취미로 음악을 하는 개발자
[Spring] 어노테이션을 이용한 스프링 설정 본문
- 자바 파일을 이용한 Spring 파일 설정
기존에 Spring Container를 만들기위해 xml 파일로 설정했었는데 여기서는 자바 파일의 annotation을 통해 설정해 볼 것이다.
-> 클래스를 새로 만들어주고 그 클래스의 annotation으로 @Configuration를 사용한다.
// xml 설정 -> java 코드
<bean id="studentDao" class="ems.member.dao.StudentDao" />
-> bean 태그의 id값과 class값과 같은 이름의 메소드 생성, annotation으로 Bean이라고 추가해준다.
@Bean
public StudentDao studentDao() {
return new StudentDao();
}
<bean id="registerService" class="ems.member.service.StudentRegisterService">
<constructor-arg ref="studentDao" ></constructor-arg>
</bean>
-> 위의 방식처럼 id, class값을 같게 넣어주고 참조하는 객체를 넣어주는데 이 때는 new 객체를 생성해주는 메소드를 활용하면 된다.
@Bean
public StudentRegisterService registerService() {
return new StudentRegisterService(studentDao());
}
<bean id="dataBaseConnectionInfoDev" class="ems.member.DataBaseConnectionInfo">
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="userId" value="scott" />
<property name="userPw" value="tiger" />
</bean>
-> property 태그가 있는 것은 객체를 하나 생성하고 진행한다. 나머지는 위의 방식대로 하면 된다.
@Bean
public DataBaseConnectionInfo dataBaseConnectionInfoDev() {
DataBaseConnectionInfo infoDev = new DataBaseConnectionInfo();
infoDev.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe");
infoDev.setUserId("scott");
infoDev.setUserPw("tiger");
return infoDev;
}
// property 설정
<bean id="informationService" class="ems.member.service.EMSInformationService">
<property name="info">
<value>Education Management System program was developed in 2015.</value>
</property>
....
<property name="developers">
<list>
<value>Cheney.</value>
<value>Eloy.</value>
....
</list>
</property>
<property name="administrators">
<map>
<entry>
<key>
<value>Cheney</value>
</key>
<value>cheney@springPjt.org</value>
</entry>
...
</map>
</property>
....
</bean>
-> list의 경우는 Arraylist를 만들어서 데이터를 넣어주고, map의 경우는 HashMap을 만들어서 넣어주면 된다.
@Bean
public EMSInformationService informationService() {
EMSInformationService info = new EMSInformationService();
info.setInfo("Education Management System program was developed in 2015.");
....
ArrayList<String> developers = new ArrayList<String>();
developers.add("Cheney.");
developers.add("Eloy.");
....
info.setDevelopers(developers);
....
Map<String, String> administrators = new HashMap<String, String>();
administrators.put("Cheney", "cheney@springPjt.org");
administrators.put("Jasper", "jasper@springPjt.org");
info.setAdministrators(administrators);
....
return info;
}
(지친다.)
위에서 작성한 자바 파일로 설정해야하는데 기존에 있던 GenericXmlApplicationContext를 안쓰고 어떤 것을 써야할까?
-> AnnotationConfigApplicationContext 클래스를 이용
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
-> AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(MemberConfig.class);
하나의 자바 파일에 스프링 컨테이너를 만들면 소스가 길어지고 유지보수 면에서 좋지 않으므로 여러 개의 파일로 나누어서 작업하는 것이 좋다.
ex) DB만 관리하는 파일, 유틸기능만 있는 파일, ...
MemberConfig1 : 서비스
MemberConfig2 : DB
MemberConfig3 : DB연결
'MemberConfig3'의 윗 부분처럼 참조가 필요한 경우에는 필드(property)를 만들고 그 객체에 Autowired를 설정해준다.
예시의 경우에서는 MemberConfig2에서 만들어진 것들이 주입된다.
나누었던 파일들을 하나의 컨테이너로 설정할 때에는 각 클래스를 ,로 연결해서 다 넣어주면 된다.
- Annotation @import
-> 예시에서는 config1에서 2, 3을 import하고 컨테이너 설정하는 부분에는 config1만 넣어주면 된다.
아래는 'MemberConfig1'과 같은 코드이다. 따라서 Config2와 3의 내용을 다 담고있기 때문에 컨테이너에는 'MemberConfigImport'만 넣어주면 된다.
* import가 많이 쓰이는 것은 아니지만 그렇다고 안쓰는 것은 아니라고 한다.
'공대인 > Spring[Boot]' 카테고리의 다른 글
[Spring] 스프링 MVC 웹 서비스 (0) | 2019.05.25 |
---|---|
[Spring] 웹 프로그래밍 설계 모델 (0) | 2019.05.25 |
[Spring] 생명주기 (Life Cycle) (0) | 2019.05.23 |
[Spring] 의존 객체 자동 주입 (0) | 2019.05.22 |
[Spring] Spring 설정 파일 분리 (0) | 2019.05.21 |