유디의 공간정보·개발일기
2-1. 0902_ Maven과 어노테이션 설정(Annotation) 본문
- Subversion, Git
- 단지 참고용,, ANT(Another Neat Tool) xml example
https://ant.apache.org/manual/using.html
Writing a Simple Buildfile
Using Apache Ant Writing a Simple Buildfile Apache Ant's buildfiles are written in XML. Each buildfile contains one project and at least one (default) target. Targets contain task elements. Each task element of the buildfile can have an id attribute and ca
ant.apache.org
- 운영체제 : 윈도우, 맥, 리눅스, 모바일운영체제(안드로이드, ios) 등
- 운영체제에서 실행되는 프로그램들(서로 다르다) --> Ant를 사용하면 운영체제에 상관없이 모두 사용할 수 있다.
Maven
- pom.xml은 maven을 생성하면 생기는 파일
- 어노테이션 방식으로 진행할 것임
어노테이션 와이어링
- <context-spring-annotation.xml> 생성(기존파일 복붙하고 이전 방식 주석처리)
- Namespaces에서 context 체크
- xml에 <context:annotation-config></context:annotation-config> 코드 추가
→ 이제 xml파일이 아니라 어노테이션 방식으로 할거야
- EmpDAO.java 와 EmpServiceImpl.java 에 @Component 입력 후 import
- xml에 <context:component-scan base-package="myspring"></context:component-scan> 코드 추가
→ myspring이라는 패키지 내부에서 어노테이션으로 표기된 클래스를 스프링 빈으로 생성해서 갖고있게 된다.
→ 스프링 빈으로 몇 개가 생성되는가? 2개
→ 왜 2개? @Component가 써진 클래스가 두 곳(EmpDAO와 EmpServiceImpl)이기 때문
- EmpMainSpring3.java 생성
- @Autowired를 끄면 NullPointerException 오류가 난다.
힙 영역에 생성된 객체를 참조하는 게 없다는 의미의 오류이다.
c.f. NullPointerTest.java
package myspring;
public class NullPointerTest {
public static void main(String[] args) {
Sample2 sample = new Sample2();
sample.name = "haha"; //이 줄이 없으면 main이 null이기 때문에 NullPointerException 오류가 남
sample.name.length();
// String name = null;
// name.length(); //이 두 줄도 실행하면 같은 오류가 남
}
}
class Sample2 {
String name; //String 타입의 객체변수임
// 객체가 생성된 후 일단 null인 채로 있다.
}
- @Component를 끄면 NoSuchBeanDefinitionException 오류가 난다.
스프링 빈이 생성되지 않는다.
I : Interface
C : Class
A : Abstract(추상클래스) --> 하위클래스를 찾아서 연결
상위/부모 : ApplicationContext
하위/자식 : ClassPathXmlApplicationContext
Q. 스프링 빈(Bean)이란?
- 객체이다.
- 메모리에 할당받아서 생성된 것
- 컴포넌트이다.
* 컴포넌트 : 부품처럼 사용된다.
c.f. 자바에서 Bean이라는 단어는 일반적으로 객체나 컴포넌트를 의미한다.
- 구글창에 spring xml oracle datasource example 검색
https://stackoverflow.com/questions/13388045/oracle-data-source-configuration-for-spring
Oracle data-source configuration for Spring
In the Spring framework, how is an Oracle data-source configured?
stackoverflow.com
<property name="dataSourceName" value="ds"/>
→ property의 name을 보면 저 이름으로 된 setter가 있음을 예측 가능(실제로 존재하고)
- 코드안의 url을 따라가면 스키마 구조를 알 수 있는 스키마 파일을 볼 수 있다.
스키마 파일
- 실습하기(과제) : 스프링으로 다음 애플리케이션을 생성합니다.
1. 프로젝트를 생성한다. exam-spring
- Maven으로 지정한다. (project configure - convert to Maven)
- Spring-context의 dependency를 지정한다. (Maven에 필요한 jar파일 자동 삽입)
2. 클래스를 생성한다.
- JobMain
- JobService(인터페이스임)
- JobServiceImpl
- JobDAO (sql문 오라클 db 테이블 참조해서 작성, List<EmpVO> getEmpListByDeptName(String deptName)코드 )
- EmpVO (객체와 타입, 출력하게 할 데이터 코드 추가)
- context-spring-annotaion.xml (패키지 명 맞춰서 입력 : myspring)
3. 사용자가 입력한 직무(예: IT_PROG 등)로 근무하는 사원들의 목록을 출력할 것
4. 직무명을 입력하지 않으면 프로그램을 종료하고
5. 계속해서 다른 직무명을 입력받도록 루프를 돌릴 것
'Spring, Mybatis' 카테고리의 다른 글
3-2. 0903_ Mybatis개요(계속), SQL RDBMS, DBeaver (1) | 2021.09.03 |
---|---|
3-1. 0903_ MyBatis 더 알아보기 (0) | 2021.09.03 |
2-3. DBCP를 HikariCP로 변경하기 (0) | 2021.09.02 |
2-2. 0902_ MyBatis (0) | 2021.09.02 |
1. 0901_Maven과 근본적인 이해를 위한 노가다 코딩 (0) | 2021.09.01 |