본문 바로가기

전체 글

(146)
Spring- 자바 코드로 직접 스프링 빈 등록 package hello.hellospring; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import hello.hellospring.service.MemberService; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { @Bean //자바코드로 스프링 빈 설정 public MemberService memberSer..
Spring- 컴포넌트 스캔과 자동 의존관계 설정 스프링 빈 스프링 빈은 스프링 컨테이너에 의해서 관리되는 자바 객체를 의미. 스프링 빈 등록 방식 component scan 자바 클래스 위에 @Component 어노테이션을 붙이면 해당 클래스는 스프링이 자동으로 스프링 빈으로 등록해준다. @Component를 상속받는 어노테이션의 종류 -@Controller 스프링 MVC 컨트롤러로 인식된다. (스프링에 다양한 정보를 던줌) -@Repository 스프링 데이터 접근 계층으로 인식된다. (다양한 기능적인 로직 구현) -@Service 스프링 비즈니스 계층으로 인식된다. (서비스 계층에서 레포지토리에서 만들어진 기능을 활용해 비즈니스적으로 구현) -@Configuration 스프링 설정 정보로 인식된다. Defendency injection (의존 관계..
Java- BigInteger, BigDecimal 클래스 매우 큰 정수를 표현하는 BigInteger 클래스 기존 정수를 표현함에 있어서 int와 long의 경우 그 크기에 한계가 있어 제약이 존재했다. 이를 해결하기 위한 클래스가 BigInteger 클래스이다. 얘는 따로 사이즈의 제약이 없다. 기본적으로 int, long과 같은 기본 자료형으로 표현되는 것이 아닌 문자열로 표현되기에 이러한 제약에서 벗어날 수 있다. 생성 BigInteger big = new BigInteger("1000000000000000000000000000000000000000000000000000000000"); 위와 같이 일반적인 클래스 인스턴스 생성하듯이 생성한다. 특이한 점이라면 내부 값이 문자열의 형태로 되어있고 그 수의 사이즈가 일반적인 자료형으로는 표현할 수 없을 정도로..
Java- 래퍼 클래스 기본 자료형의 값을 감싸는 래퍼 클래스 래퍼 클래스의 기능 래퍼 클래스는 기본 자료형의 값을 감싸는 클래스이다. 종종 기본 자료형 인스턴스가 필요한 일이 있다. int 형 인스턴스, double 인스턴스 등등... 그러나 기본 자료형 같은 경우 인스턴스를 생성하지 않는다. 그래서 그럴 때는 래퍼 클래스를 이용하여 기본 자료형의 값을 감싼다. 래퍼 클래스의 종류 Boolean Character Byte Short Integer Long Float Double 박싱 / 언박싱 박싱은 값을 인스턴스에 감싸는 것을 말하고, 언박싱은 저장된 값을 꺼내는 것을 말한다. 박싱은 인스턴스를 생성하는 과정에서 진행되고, 언박싱은 메소드를 호출하여 진행한다. 참고로 래퍼 인스턴스들은 담고 있는 값의 수정이 불가하다 (마치..
Java- Object 클래스 Object 클래스 최상위 클래스로서 모든 클래스들은 Object 클래스의 상속한다. equals 메소드 참조값의 비교를 할 때에는 "==" 비교 연산자를 사용하고, 값의 비교를 할 때에는 equals() 메소드를 사용한다. class INum{ int num; INum(int num){ this.num = num; } @Override //Object 클래스 오버라이딩 public boolean equals(Object obj){ //매개변수의 타입이 Object이므로 어떠한 인스턴스든 참조가 가능하다. //equals 메소드는 단순히 값만 같은지 비교함 return this.num == ((INum) obj).num; } void isEquals(Object obj){ if(this.equals(ob..
Java- 예외처리 예외처리 try ~ catch 일반적인 예외처리처럼 try catch구문을 통해서 예외처리를 진행한다. import java.util.Scanner; public class DivideByZero { public static void main(String[] args) { Scanner sc = new Scanner(System.in); try{ int a = sc.nextInt(); int b = sc.nextInt(); //b = 0; System.out.printf("%d / %d = %d",a,b,a/b); } catch (ArithmeticException e){ e.printStackTrace(); } } } a>>>1 b>>>0 java.lang.ArithmeticException: / by..
Java- 인터페이스와 추상클래스 비교 추상클래스 추상클래스는 한개 이상의 추상 메소드를 가지고 있는 클래스로 추상 메소드를 가지고 있어 인스턴스를 생성할 수 없다는 것을 제외하면 일반적인 클래스와 다르지 않다. 추상클래스의 구현 추상 클래스는 아래의 예와 같이 구현이 가능하다. 추상 클래스와 추상 메소드 앞에 abstract 키워드를 붙여준다. abstract class AbsClass{ int i; double d; //일반적인 메소드를 가질 수 있다 AbsClass(int i, double d){ this.i = i; this.d = d; } int sum(int a, int b){ return a+b; } void print(String str){ System.out.println(">>>"+str); } //여러개의 추상 메소드를 가..
Java- interface 인터페이스 인터페이스는 추상메소드를 담고 있는 완전추상클래스 비슷한 놈으로 이해하자. 참고로 이놈은 추상메소드만 가지기 때문에 메소드의 몸체는 구현하지 않는다. 또한 몇가지 특징이 있는데... 인터페이스의 메소드는 자동으로 public 선언된다. 인터페이스의 변수는 public static final 선언된다.(인스턴스 없이도 호출가능한 상수취급임) 인터페이스 참조변수의 선언 인터페이스 형 참조변수의 구현도 가능하다. 또한 인터페이스 참조 변수는 자신을 구현한 클래스 인스턴스의 참조도 가능하다. 즉슨, 인터페이스 메소드의 오버라이딩도 가능하다. implements 키워드 인터페이스를 구현한 클래스는 인터페이스 내부의 모든 메소드를 구현해야한다. 또한 인터페이스를 클래스에 구현할 때에는 implements..