전체 글

초보 개발자의 지식 공유의 장
자바의 static 메소드는 인스턴스생성 없이 사용할 수 있습니다. java.lang.Math 클래스의 abs() 메소드 사용시 int i = Math.abs(-5); JDK 1.5 부터는 이러한 static 메소드를 더욱 쉽게 사용할 수 있게 static import를 지원합니다. import static java.lang.Math.abs; int i abs(-5); 정적 메소드를 import static 하여 import를 하게되면 클래스명 없이 바로 static 메소드를 사용할 수 있습니다. 만약 동일한 이름의 메소드가 클래스내에 존재한다면 자신의 클래스 메소드가 우선시 됩니다. import static 에 * 사용한 권자외지 않으며, 정적 멤버 변수도 static import의 대상이 됩니다. i..
[람다식] 타겟 타입과 함수적 인터페이스 람다식의 형태는 매개변수를 가진 코드블록이어서 메소드를 선언하는 것처럼 보이지만 실제로는 이 메소드를 가지고 있는 객체를 생성해 낸다. (자바는 메소드를 단독으로 선언할 수 없기 때문) 인터페이스 변수 = 람다식;람다식은 인터페이스의 익명 구현 객체를 생성한다고 보면 된다. (클래스를 생성하고 객체화 함) 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟 타입(target type)이라고 한다. 함수적 인터페이스(@FunctionallInterface) 람다식이 하나의 메소드를 정의하기 때문에 두 개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해 객체를 생성할 수 없다. 하나의 추상 메소드가 선언된 인터페이..
pom.xml 설정 org.slf4j slf4j-api ${version.slf4j} ch.qos.logback logback-classic 1.1.7 로그 레벨 ERROR, WARN , INFO, DEBUG, TRACE logback 설정파일 일반적으로 logback.xml으로 만들며 src/main/resources/ 아래에 위치시킨다. 기본 구조 Appender 설정 Logger 설정 logback.xml %d{HH:mm:ss.SSS} [%thread] %-5level %logger{32} - %msg%n LogTest.java public class LogTest { private static final Logger LOG = LoggerFactory.getLogger(LogTest.class);..
logback Log4j는 java 에서 가장 많이 사용하는 logger 라고 할 수 있다. Log4j를 만든 사람이 좀더 개선한 것이 바로 "SLF4J" 와 "LOGBack" 프로젝트이다. "SLF4J"는 로깅 구현체라기보다 Loggin Facade 이다. (Facade 패턴 참고) Log4j는 java 에서 가장 많이 사용하는 logger 라고 할 수 있다. Log4j를 만든 사람이 좀더 개선한 것이 바로 "SLF4J" 와 "LOGBack" 프로젝트이다. "SLF4J"는 로깅 구현체라기보다 Loggin Facade 이다. (Facade 패턴 참고) 특징 및 장점 LogBack은 3가지 컴포넌트로 구성되어 있음 logback-core : 핵심 코어 컴포넌트 logback-classic : "slf4j"..
속성 메이븐은 설정 파일에서 발생하는 중복 설정을 제거하기 위하여 속성 ( 엘리먼트)을 정의하고 설정 파일 전체에서 사용할 수 있다. 예를 들어 스트럿츠2, 스프링 프레임워크의 의존 관계 중복을 제거하려면 다음과 같이 설정할 수 있다. 2.1.8 3.0.1.RELEASE org.springframework spring-core ${spring.version} org.apache.struts struts2-core ${struts2.version} 엘리먼트에서 value 같은 형태로 정의 한후 ${property.name} 으로 접근이 가능하다. (개발자 정의 속성) 이 외에도 메이븐은 미리 예약되어 있는 속성이 있는데, pom/project 속성, settings 속성, 환경 변수 속성, 자바 시스템 속..
의존성 전이 메이븐에서 디펜던시가 걸려있는 라이브러리들은 그 라이브러리와 의존관계가 있는 라이브러리를 모두 다운받는다. 예를 들어 pom.xml에 junit라이브러리를 명시하였을 때, junit 프로젝트의 pom.xml dependency에 기술된 모든 라이브러리를 같이 다운받게된다. (junit에 필요한 라이브러리들을 같이 받아온다.) 메이븐은 의존성 전이에 대한 설정 변경을 지원한다. 의존성 중개(dependency mediation) 버전이 다른 두 개의 라이브러리가 의존 관계에 있다면 메이븐은 더 가까운 의존 관계에 있는 pom 설정 버전과 의존 관계를 가진다. A->B->C->D 2.0 버전, A->E->D 1.0 버전의 의존관계가 있을 경우, A프로젝트는 D 1.0 버전과 의존 관계를 가진다...
의존 라이브러리의 적용 스코프 메이븐은 사용하는 라이브러리 성격에 따라 스코프를 지정할 수 있다. Junit 은 테스트시에만 필요하고 실제 배포할 때는 필요없는 라이브러리이다. 각 라이브러리에 대한 스코프는 아래에 엘리먼트로 설정할 수 있다. Junit 라이브러리를 테스트 스코프에서만 의존 관계를 갖도록 설정할 수 있다. junit junit 4.7 test 6가지 스코프 설명 compile : 기본 스코프, 컴파일 및 배포할 때 같이 제공해야 하는 라이브러리 provided : 예를 들어 servlet.jar는 서블릿 컨테이너에서 제공하므로 컴파일 시점에는 필요하지만, 애플리케이션을 배포할 때 포함할 필요는 없다. (컴파일시점에사용하고 배포시점에는 포함 x,..
메이븐 의존 라이브러리 관리 메이븐 의존관리는 태그로 관리되며, 아래에는 여러개의 가 존재한다. 아래는 Junit 3.8.1 버전과 의존관계가 있다고 pom.xml에 설정한 것이다. junit junit 3.8.1 test 이 dependency를 설정한 후의 과정은 아래와 같다. 메이븐 중앙 저장소에 JUnit 3.8.1 버전이 있는지 확인 하고 버전이 있다면 groupId/artifactId/version에 있는 ${artifactId}-${​version}.jar 파일을 다운로드 한다. https://repo.maven.apache.org/maven2/junit/junit/3.8.1/junit-3.8.1.jar USER_HOME/.m2/repo..
메이븐 저장소 메이븐 저장소는 세 가지로 나눌 수 있다. 중앙 저장소 원격 저장소 로컬 저장소 중앙 저장소 : 오픈 소스 라이브러리, 메이븐 플러그인, 메이븐 아키타입을 관리하는 저장소. 메이븐 2.0의 중앙 저장소의 URL은 http://repo1.maven.org/maven2/ 이다. 중앙 저장소는 개발자가 임의로 라이브러리를 배포할 수 없다. 원격 저장소 : 중앙 저장소에 없는 라이브러리를 한 곳에 모아두기 위하여 별도의 메이븐 저장소를 설치해 관리하는 것이 가능한데 이것이 원격 저장소이다. 원격 저장소는 회사내에서만 사용하기 위한 용도로 많이 사용된다. 로컬 저장소 : 로컬 저장소는 메이븐을 빌드할 때 다운로드하는 라이브러리, 플러그인을 관리하는 개발자 PC의 저장소이다. (USER_HOME/.m..
테스트하기 mvn test test페이즈는 target/test-classes에 컴파일한 단위 테스트 클래스를 실행하고 그에 따른 결과물을 target/surefire-reports 디렉토리에 생성한다. (test-compile 페이즈에 의존 관계를 가진다.) 만약 테스트 스위트(TestSuite)별로 나누어서 테스트할 필요가 있다면 test 옵션을 사용한다. 다음과 같이 원하는 테스트 클래스를 지정할 수 있다. mvn -Dtest=원하는클래스 test mvn -Dtest=원하는클래스1,원하는클래스2 test 단위 테스트가 실패하여 빌드가 실패할 경우 (테스트케이스 관리가 안될 경우) 테스트를 스킵할 수 있다. mvn -Dmaven.test.skip=true test 매번 인자로 전달하기 싫다면 pom...
깡냉쓰
평범한 개발자 노트