[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?
프로그래밍/Java2024. 5. 31. 17:46[Java, 자바] 추상 클래스(Abstract Class)와 인터페이스(Interface)는 언제 사용해야 될까?

추상 클래스와 인터페이스의 특징추상 클래스(Abstract Class)추상 클래스(Abstract Class)는 인터페이스와 유사합니다. 인터페이스와 마찬가지로 인스턴스화 할 수 없으며, 구현을 포함하거나 포함하지 않은 메서드 모두를 가질 수 있다.하지만 인터페이스와 비교하여 추상클래스가 가질 수 있는 중요한 특징 중 하나는 필드를 가질 수 있따는 점이다. 그리고 해당 필드는 static 또는 final이 아닐 수 있으며, public이나 prorected 또는 private으로 선언할 수도 있습니다. 인터페이스를 사용하면 모든 필드가 public, static, final로 처리되면 모든 메서드는 public입니다. 또한 단일 클래스만 extends 할 수 있는 반면, 인터페이스는 여러개를 구현할 수 ..

[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)
프로그래밍/Java2024. 5. 27. 21:49[Spring, SpringBoot] Controller에서 데이터 받는 방법 (@RequestBody, @RequestParam, @ParthVariable)

어느날 문득 정리하고 데이터 받는 방법에 대해 정리하고 싶어졌다 !서버에서는 요청한 데이터를 전달 받는 방법은 다양하다 ! MVC 패턴에서 주로 사용하는 어노테이션을 위주로 정리해 보려합니다 ! @RequestBody@RequestBody는 클라이언트가 보내는 HTTP 요청 본문(JSON, XML 등)을 HttpMessageConverter를 통해 타입에 맞는 자바 객체로 변환해줍니다 !@PostMapping("/test")@ResponseBody // return datapublic String test(@ReqeustBody data) { ...} @RequestParam@RequestParam은 클라이언트가 요청할 때 쿼리스트링을 통해 넘어오는 매개변수를 추출할 수 있습니다 !required가 t..

[Java, Linux] Linux에 Java 17 설치하기
개발공부/Linux2024. 5. 1. 21:36[Java, Linux] Linux에 Java 17 설치하기

설치환경- Linux : Ubuntu 22.04- JDK : openjdk-amd64 v17 설치하기① Ubuntu로 접속한 뒤 sudo 권한으로 apt를 업데이트한 이후 openjdk를 설치합니다.$ sudo apt update$ sudo apt install openjdk-17-jdk② 설치한 자바 버전을 확인합니다.$ java -version ③ 설치된 java 경로를 확인합니다.- default : /usr/lib/jvm/java-[버전]-openjdk-amd64/bin/java ④ environment 파일에서 JAVA_HOME 환경변수를 설정합니다.$ sudo vi /etc/entironment ⑤ source 명령어를 실행하고, 변경 값이 적용되었는지 확인합니다.$ source /etc/en..

[Java, 자바] no main manifest attribute in 에러
Error2024. 5. 1. 14:33[Java, 자바] no main manifest attribute in 에러

에러Linux에서 jar파일 실행 시 no main mainfest attribute in 에러가 발생하였다 !찾아보니 JVM이 main메서드를 찾지 못해 발생하는 에러였다. 해결방법Spring Boot 2.5.0 이상 버전과 gradle을 사용 시 빌드할 경우 아래와 같이 jar파일이 2개 생성된다고합니다. 1. 앱이름.jar -> bootJar Task로 생성된 것2. 앱이름-plain.jar -> build Task로 생성된 것 첫 번째 jar파일은 해당 프로젝트에 필요한 모든 의존성이 같이 추가된 것으로 모두 정상적인 형태로 나오는 반면 plain.jar파일은 의존성을 제외하고 딱 프로젝트에 있는 자원들만 jar파일로 만든 것으로 spring 관련 의존성이 빠저 main메서드의 위치가 나오지 않습..

[Java, 자바] static의 의미와 사용법
프로그래밍/Java2024. 4. 16. 19:00[Java, 자바] static의 의미와 사용법

Static이란 ?static은 정적이라는 뜻으로 '고정된'이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Stitic메서드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.정적필드와 정적 메서드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메서드 메모리 영역에 적재할 때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나 즉시 바로 사용할 수 있습니다. 정적(Static) 멤버 생성Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든..

[Java, 자바] instanceof란 ?
프로그래밍/Java2024. 4. 13. 10:00[Java, 자바] instanceof란 ?

instanceof란 ?instanceof는 객체 타입을 확인하는 연산자입니다 ! 형변환 가능 여부를 확인하여 true/false로 결과를 반환해줍니다. 주로 상속 관계에서 부모 객체인지 자식 객체인지 확인하는 데 사용됩니다 ! instanceof 사용방법instanceof의 기본 사용방법은 아래의 예시와 같이 "객체 instanceof 클래스"를 선언함으로써 사용할 수 있습니다.class Parent{}class Child extends Parent{}public class InstanceofTest { public static void main(String[] args){ Parent parent = new Parent(); Child child = new Child()..

[Spring, Spring Boot] @Transactional의 중첩에 대하여
프로그래밍/Java2024. 4. 12. 19:00[Spring, Spring Boot] @Transactional의 중첩에 대하여

트랜잭션의 개념은 여기를 클릭하여 확인해보세요 ! @Transactional이  중첩이 되었을 때업무 중 @Transactional이 중첩이 되었을 때(아래와 같은 상황) 어떻게 진행될지 궁금해졌다 !@Transactionalpublic Info buy(String item){ payment newPayment = new payment(item); return payment(newPayment)}@Transactionalpublic Info payment(Info info){ buyRepository.save(info); return info;}buy 메서드에서 payment 메서드를 호출하고 있는데, 두 메서드 모두 @Transactional 어노테이션이 적용되어 있는 상태입니다. 트랙잭션의..

[Spring, Spring Boot] @Configuration이란 ?
프로그래밍/Java2024. 4. 12. 18:30[Spring, Spring Boot] @Configuration이란 ?

@Configuration이란 ?Spring, Spring Boot에서 Bean을 수동으로 등록하기 위해서는, class 상단에 @Configuration 어노테이션을 적용해주고, @Bean을 사용해 수동으로 빈을 등록할 수 있습니다 !빈을 생성할 때 메서드의 이름으로 빈의 이름이 결정됩니다. 그러므로 중복된 빈의 이름이 존재하지 않도록 주의해줘야합니다 !@Configurationpublic class DatabaseConfig { @Bean public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); ..

image