Life Developer
인생 개발자
Developer (136)
Bean 등록 어노테이션

@Component - 일반적인 스테레오 타입
@Repository - db를 가지는 클래스
@Service - 비즈니스 로직을 가지는 클래스
@Controller - 웹 앱에서 웹요청과 응답을 처리하는 클래스에서 사용한다.

@Autowired 정밀한 의존관계주입이 필요한 경우
@Resource 기능면에서 Autowired와 동일. 선언위치가 제한적임. setter 메서드에서만 적용가능.
차이점-Autowired는 타입으로, Resource는 이름으로 연결한다.

@Value 단순한 값을 주입 , (ex>     @Value("gibeom") String name;      )
@Qualifier @Autowired와 같이 사용됨. Autowired는 타입으로 찾아 주입하므로, 동일한 타입 bean객체가 여러개 있을경우 어떤 bean을 찾는지 따로 설정해야함.

객체가 여러개 있으면 컨테이너가 누군지 찾을수가 없다.

 

프로퍼티 형식으로 Bean을 등록할때 @Autowired(required=false) 를 주면 없으면 그냥 패스하라는 표시이다.

예를들어

@Autowired(required=false)

@Qualifier("printer1")

private Printer printer;

 

printer1이라는 bean을 찾을수가 없으면 그냥 에러없이 넘어가고 생성자를 호출한다.

(자바에서는 프로퍼티 초기화 먼저하고 생성자 호출한다.)

'Developer' 카테고리의 다른 글

ORM이란?  (0) 2020.07.29
Spring 모듈(Core, Aop)  (0) 2020.07.29
JUnit 이란?  (0) 2020.07.29
application context(어플리케이션 콘텍스트)?  (0) 2020.07.29
Bean 이란? 빈 팩토리란?  (0) 2020.07.29
  Comments,     Trackbacks
JUnit 이란?

JUnit이란 Java의 단위테스팅 도구이다.

 

단 하나의 jar 파일로 되어있다.

 

Testing 결과를 단순히 문서로 남기는게 아니라 Test Class를 그대로 남겨 추후에 개발자에게 테스트 방법 및

 

클래스의 History를 넘겨줄수 있다.

 

-단위 테스트 Framwork 중 하나

 

-단정문(Assert)으로 테스트 케이스의 수행결과를 판별

 

-Annotation(@)으로 간결하게 사용 가능

 

 

 

@Test 테스트 수행하는 메소드.
@Ignore 선언된 메서드는 실행을 하지 않게 한다.
@Before @Test 메소드가 실행되기 전에 반드시 실행한다.
@After @Test메소드가 실행된 후 실행된다.
@BeforeClass @Test 메소드보다 먼저 한번만 수행되어야 할 경우 사용.
@AfterClass @Test 메소드보다 나중에 한번만 수행되어야 할 경우 사용.

 

 

 

assert메서드 (단정메서드, 쉽게 말해서 판정메서드 라고 함)
assertEquals(a,b) 객체 일치함 확인(값)
assertArrayEquals(a,b) 배열 일치함 확인
assertSame(a,b) 객체 A와 B가 같은 객체임을 확인한다(주소값)
assertTrue(a) 조건 a가 참인가를 확인한다.
assertNotNull(a) 객체 A가 null이 아님을 확인한다.

 

 


Sprint-Test
@RunWith JUnit 테스트 확장버전. (ApplicationContext를 만든다).싱글톤으로 생성(1개만)
@ContextConfiguration 스프링 빈의 설정파일 위치를 지정할때 사용됨
@AutoWired 스프링 DI에서 사용됨. 해당변수를 자동으로 bean을 매핑

'Developer' 카테고리의 다른 글

Spring 모듈(Core, Aop)  (0) 2020.07.29
Bean 등록 어노테이션  (0) 2020.07.29
application context(어플리케이션 콘텍스트)?  (0) 2020.07.29
Bean 이란? 빈 팩토리란?  (0) 2020.07.29
Spring DI 방법  (0) 2020.07.29
  Comments,     Trackbacks
application context(어플리케이션 콘텍스트)?


어플리케이션 콘텍스트- 빈팩토리를 바로사용하지 않고 이것을 사용함. 여러종류가있다.

 

 

 

Application Context

  • Web Application 최상단에 위치하고 있는 Context
  • Spring에서 ApplicationContext란 BeanFactory를 상속받고 있는 Context
  • Spring에서 root-context.xml, applicationContext.xml 파일은 ApplicationContext 생성 시 필요한 설정정보를 담은 파일 (Bean 선언 등..)
  • Spring에서 생성되는 Bean에 대한 IoC (제어의 역전)Container (또는 Bean Container)
  • 특정 Servlet설정과 관계 없는 설정을 한다 (@Service, @Repository, @Configuration, @Component)
  • 서로 다른 여러 Servlet에서 공통적으로 공유해서 사용할 수 있는 Bean을 선언한다.
  • Application Context에 정의된 Bean은 Servlet Context에 정의 된 Bean을 사용할 수 없다.

Servlet-Context (servlet-context.xml)

  • Servlet 단위로 생성되는 context
  • Spring에서 servlet-context.xml 파일은 DispatcherServlet 생성 시에 필요한 설정 정보를 담은 파일 (Interceptor, Bean생성, ViewResolver등..)
  • URL설정이 있는 Bean을 생성 (@Controller, Interceptor)
  • Application Context를 자신의 부모 Context로 사용한다.
  • Application Context와 Servlet Context에 같은 id로 된 Bean이 등록 되는 경우, Servlet Context에 선언된 Bean을 사용한다.
  • Bean 찾는 순서
    • Servlet Context에서 먼저 찾는다.
    • 만약 Servlet Context에서 bean을 못찾는 경우 Application Context에 정의된 bean을 찾는다.
  • Servlet Context에 정의된 Bean은 Application Context의 Bean을 사용할 수 있다.

'Developer' 카테고리의 다른 글

Bean 등록 어노테이션  (0) 2020.07.29
JUnit 이란?  (0) 2020.07.29
Bean 이란? 빈 팩토리란?  (0) 2020.07.29
Spring DI 방법  (0) 2020.07.29
DL/DI ?  (0) 2020.07.29
  Comments,     Trackbacks
Bean 이란? 빈 팩토리란?

Spring DI 컨테이너가 관리하는 객체를 빈이라고 한다.
관리한다는 의미로 컨테이너를 빈 팩토리라고 부른다.

 

 

빈팩토리

bean을 등록 생성 조회 반환 관리함.

getBean()메서드가 정의되어있다. bean xml에 작성 후 getBean(bean이름,클래스명.class)으로 접근가능.

 

'Developer' 카테고리의 다른 글

JUnit 이란?  (0) 2020.07.29
application context(어플리케이션 콘텍스트)?  (0) 2020.07.29
Spring DI 방법  (0) 2020.07.29
DL/DI ?  (0) 2020.07.29
Maven 이란  (0) 2020.07.29
  Comments,     Trackbacks
Spring DI 방법

setter injection-setter메서드를 이용한 의존성 삽입 - <property>


constructor injection-생성자를 이용한 의존성 삽입-setter와의 차이는 생성자 주입은 생성자의 파라미터를 사용하기 때문에 여러개의 객체주입가능 - <constructor-arg>사용


method injection-일반 메서드를 이용한 의존성 삽입

'Developer' 카테고리의 다른 글

application context(어플리케이션 콘텍스트)?  (0) 2020.07.29
Bean 이란? 빈 팩토리란?  (0) 2020.07.29
DL/DI ?  (0) 2020.07.29
Maven 이란  (0) 2020.07.29
STS(SpringSource Tool Suite) 란  (0) 2020.07.29
  Comments,     Trackbacks
DL/DI ?

DL-dependency Lookup 컨테이너에 저장된 bean에 접근하기 위해 컨테이너가 제공하는 API를 이용해 bean을 Lookup함
DI-Dependency Injection 각 클래스간의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는것.

'Developer' 카테고리의 다른 글

Bean 이란? 빈 팩토리란?  (0) 2020.07.29
Spring DI 방법  (0) 2020.07.29
Maven 이란  (0) 2020.07.29
STS(SpringSource Tool Suite) 란  (0) 2020.07.29
제네릭 타입의 상속  (0) 2020.07.26
  Comments,     Trackbacks
Maven 이란

Maven은 자바용 프로젝트 관리도구로 Apache Ant의 대안으로 만들어졌다.

Maven은 Ant와 마찬가지로 프로젝트의 전체적인 라이프 사이클을 관리하는 도구 이며, 많은 편리함과 이점이 있어 널리 사용되고 있다.
Maven은 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 내가 사용할 라이브러리 뿐만 아니라 해당 라이브러리가 작동하는데에 필요한 다른 라이브러리들까지 관리하여 네트워크를 통해서 자동으로 다운받아 준다.

Maven은 중앙 저장소를 통한 자동 의존성 관리를 중앙 저장소(아파치재단에서 운영 관리)는 라이브러리를 공유하는 파일 서버라고 볼 수 있고, 메이븐은 자기 회사만의 중앙 저장소를 구축할수도 있다.

간단한 설정을 통한 배포 관리가 가능 하다.

 

 Ant vs Maven

1. Ant는 비교적 자유도가 높은 편
    (Ant : 전처리 / 컴파일 / 패키징 / 테스팅 / 배포 가능)

2. Maven은 정해진 라이프사이클에 의하여 작업 수행하며, 전반적인 프로젝트 관리 기능까지 포함.
    (Build Tool + Project Management)

출처: https://goddaehee.tistory.com/199 [갓대희의 작은공간]

'Developer' 카테고리의 다른 글

Spring DI 방법  (0) 2020.07.29
DL/DI ?  (0) 2020.07.29
STS(SpringSource Tool Suite) 란  (0) 2020.07.29
제네릭 타입의 상속  (0) 2020.07.26
제네릭 와일드카드 타입  (0) 2020.07.26
  Comments,     Trackbacks
STS(SpringSource Tool Suite) 란

Spring 개발업체인 SpringSource가 직접 만들어 제공하는 이클립스의 확장판.
Spring 개발에 최적화 되도록 만든 Integrated Development Environment, IDE 이다.

 

Maven 라이브러리 관리 + 빌드(자바 코드를 컴파일하고 jar로 묶어주고,배포하고) 툴
편리한 Dependency Library관리, 여러프로젝트에서 프로젝트 정보나 jar파일들을 공유하기 쉽다.
빌드 프로세스를 일관되게 가져갈수 있다.

 

 

빌드란?

 - 소스코드 파일을 컴퓨터에서 실행할 수 있는 독립 소프트웨어 가공물로 변환하는 과정 또는 그에 대한 결과물 이다.
 - 이를 좀더 쉽게 풀어 말하자면 우리가 작성한 소스코드(java), 프로젝트에서 쓰인 각각의 파일 및 자원 등(.xml, .jpg, .jar, .properties)을 JVM이나 톰캣같은 WAS가 인식할 수 있는 구조로 패키징 하는 과정 및 결과물이라고 할 수 있다.



빌드 도구(Build tool)

 - 빌드 도구란 프로젝트 생성, 테스트 빌드, 배포 등의 작업을 위한 전용 프로그램.
 - 빠른기간동안 계속해서 늘어나는 라이브러리 추가, 프로젝트를 진행하며 라이브러리의 버전 동기화의 어려움을 해소하고자 등장.
 - 초기의 java 빌드도구로 Ant를 많이 사용하였으나 최근 많은 빌드도구들이 생겨나 Maven이 많이 쓰였고, 현재는 Gradle이 많이 쓰인다.
(Ant는 스크립트 작성도 많고, 라이브러리 의존관리가 되지 않아 불편함)



출처: https://goddaehee.tistory.com/199 [갓대희의 작은공간]

'Developer' 카테고리의 다른 글

DL/DI ?  (0) 2020.07.29
Maven 이란  (0) 2020.07.29
제네릭 타입의 상속  (0) 2020.07.26
제네릭 와일드카드 타입  (0) 2020.07.26
제네릭 제한된 타입 파라미터  (0) 2020.07.26
  Comments,     Trackbacks