본문 바로가기
반응형

IT/Java394

[maven] snapshot 이란? maven 을 설정하기 위해서는 pom.xml 과 mvn repository 사이트를 자주 이용하게 되는데. 사용하면서 release 랑 snapshot 이라는 단어를 많이 접하게 된다. 이번 포스팅은 이 둘의 차이 뿐 아니라 추가적으로 버전 관리에 대해서 알아볼것이다. ​ Snapshot 아직은 안정화 되지 않은 데일리 빌드버전(최신 버전일 수도 있음) ​ GA (General Availability) 정식 릴리즈 버전 / 가장 안정적 상업성 개발을 할때는 안전하게 릴리즈 버전만을 사용하는게 유리 메이븐 리포지토리에서는 GA버전만 maven 중앙저장소에 올라가고 RC, M등은 안올라감 ​ M (Milestone) 팀이나 프로젝트마다 정해진 주기마다 배포하는 버전 M2라고 되어있으면 프로젝트 ‘마일스톤 .. 2023. 3. 2.
groovy란? JVM 에서 실행되는 스크립트 언어 문법이 Java와 비슷 Java와 호환이 되며 Java 클래스 파일을 그대로 groovy 클래스로 사용가능 이라는 특징을 가진 groovy 에 대해서 알아보도록 할것å이다. 위키백과에서 설명하는 groovy 는 다음과 같다. 그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객체 지향 프로그래밍 언어 이다. https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EA%B7%B8%EB%A3%A8%EB%B9%84 아파치 그루비 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 그루비(Groovy)는 자바에 파이썬, 루비, 스몰토크 등의 특징을 더한 동적 객체 지향 프로그래밍 .. 2023. 3. 1.
@Qualifier 어노테이션 사용법 스프링에서는 @Autowired를 사용해 의존성을 주입한다. bean을 설정할 때 를 사용함으로써 굳이 bean 태그 안에 나 태그를 추가하지 않아도 스프링의 @Autowired 어노테이션이 적용된 생성자, 필드, 메소드에 대해 의존 자동 주입을 처리한다. 하지만, 만약 동일한 타입을 가진 bean 객체가 두개가 있다면 어떻게 될까? 스프링이 어떤 빈을 주입해야 할 지 알 수 없어서 스프링 컨테이너를 초기화하는 과정에서 Exception을 발생시킨다. @Autowired의 주입 대상이 한 개여야 하는데 실제로는 두 개 이상의 빈이 존재해 주입할 때 사용할 객체를 선택할 수 없기 때문이다. 단, @Autowired가 적용된 필드나 설정 메서드의 property 이름과 같은 이름을 가진 빈 객체가 존재할 경.. 2023. 2. 27.
[Spring] NamedParameterJdbcTemplate 이번에 소개할 JdbcTemplate이란, 이전 버전에서는 우리가 데이터를 넣을 부분에 ?를 이용하여 처리를 했다. 이러한 방식은 인자 위치에 대한 순서가 강제되는데 이러한 방식은 개발자의 불편함과 가독성을 떨어뜨릴수가 있다. 예제 문법 String sql = "update member set name=?, price=?, age=? where id=?"; template.update(sql, name, price, age, itemId); 변수가 많아졌다면 하나하나 순서까지 비교해야하는 불편함이 있다. 그래서 나온것이 NamedParameterJdbcTemplate이다. NamedParameterJdbcTemplate는 ?대신 :변수명 을 이용하여 처리함으로써 순서에 강제를 받지 않는다. public .. 2023. 2. 26.
익명 클래스(anonymous class)란? 먼저 oracle 에서 소개하는 익명클래스에 대해서는 아래 링크에서 확인 가능하다. https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html Anonymous Classes (The Java™ Tutorials > Learning the Java Language > Classes and Objects) The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology n.. 2023. 2. 25.
Thread란? (process비교) 먼저 thread 에 알기 전보다 알아야할 것이 있다.그는 바로 프로세스라는것이고 프로세스와 thread 에 차이를 알아본다. 프로세스(process)란?프로세스(process)란 단순히 실행 중인 프로그램(program)이라고 할 수 있다.즉, 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다.이러한 프로세스는 프로그램에 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다.스레드(thread)란?스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다.모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행한다.또한, 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(multi-threaded proc.. 2023. 2. 21.
@Transactional 사용시 주의 사항1 (checked Exception) 개발을 하다가 Transactional annotation을 사용하거나 본적이 있을것이다. 해당 어노테이션은 해당 메서드 내에서 어떤 작업들이 이루어지다가 에러가 날 경우 수행했던 작업을 모두 이전으로 돌려주는, Rollback시켜주는 작업이다. 하지만 모든 에러와 예외사항에 대해서 rollback이 되는것은 아니다. 해당 포스팅을 읽기 전에 에러와 예외에 관해서 아래 참고 포스팅을 읽고 오는것을 추천한다. 글을 읽고 왔다면 이제 에러와 예외(체크, 언체크) 에 대해서 구분을 할수 있을것이다. 자바 프레임워크에서는 기본적으로 Transactional 이 checked Exception 에 대해서는 롤백시키지 않도록 설계가 되어있다. 이유는 스프링 프레임워크가 EJB 관습을 따르기 때문이다. 만약 코드에서.. 2023. 2. 20.
Spring 에서 async 처리 (@Async) 스프링에서 비동기 처리를 위한 async 처리에 대해서 알아보려고 한다. async 에 대한 내용은 아래 참고 포스팅을 참고 바란다. 자바에서는 기본적인 비동기 처리를 위해 runnable Interface를 구현하여 Thread 클래스를 생성하여 사용한다. new Thread(new Runnable() { @Override public void run() { // do something } }).start(); 스프링에서는 비동기 처리를 효율적으로 관리하기 위해 @Async Annotation을 사용한다. 함수나 타입에 해당 어노테이션을 사용하여 비동기 처리를 진행할수 있다. 비동기 처리를 할 경우에는 유의사항이 몇가지 있다. 스레드 풀 관리 스레드 풀과 관련 설정은 프로퍼티에서 관리를 한다. 반환값 .. 2023. 2. 19.
Error, Checked Exception, Unchecked Exception 비교 포스팅 시작 앞에 에러와 예외에 대해서 먼저 비교를 해보고 시작하려고 한다. Error란 시스템 레벨에서 발생하는 심각한 수준의 오류를 뜻하며 개발자가 미리 예측하여 처리할 수 없기에 개발 시 예외 처리에 신경 쓰지 않아도 되는 부분이다. Exception이란 로직 상에서 발생하는 오류로 개발자 구현한 코드에서 발생하여 예외를 예측할 수 있으며 상황에 맞게 처리할 수 있다. 예외 클래스들은 최상위 클래스인 Object를 상속받은 Throwable이라는 클래스를 기반으로 Error와 Exception 클래스로 나뉘며 이때 Exception 클래스는 RuntimeException 상속 여부에 따라 Checked Exception과 Unchecked Exception으로 나뉜다. 그래서 예외라고 하면 크게 E.. 2023. 2. 14.
반응형