본문 바로가기

반응형

Developer

Java Nested class Nested classes(중첩 클래스) 패키지가 되는 클래스가 아닌 나머지 클래스 하나의 패키지에 대해 여러 클래스를 사용할 수 있고, 서로간 결합만이 존재하는 클래스의 경우 가독성이 좋고 관리에 용이 중첩 클래스들은 패키지 클래스 내부에 숨겨져있으므로 캡슐화 non-static nested class Inner class라고 하며 외부 인스턴스에 대한 참조가 유지 외부 인스턴스는 내부 클래스를 new를 통한 인스턴스 할당으로 멤버변수처럼 사용 외부에 대한 참조가 유지되므로 내부 클래스도 외부 클래스의 자원을 사용 static nested class static이 붙는 중첩 클래스 동일한 static 멤버들을 사용 가능 static의 특징에 따라 외부 인스턴스 멤버의 직접참조가 불가능 출처: docs... 더보기
[MyBatis] #, $ 차이 #(PreparedStatement 생성) * 쿼리 주입을 예방할 수 있어 보안 측면에서 용이, 사용자의 입력을 받는 경우에도 사용 가능 * 변수를 바인드하여 사용하기 때문에 값이 변경되어도 같은 쿼리로 인식(캐싱) mapper 쿼리 전달 실제 수행 쿼리 SELECT * FROM TEST WHERE ID = #{id} AND NAME = #{name} SELECT * FROM TEST WHERE ID = ? AND NAME = ? SELECT * FROM TEST WHERE ID = 11 AND NAME = 'halfStorage' $(Statement 생성) * 파라미터가 바로 출력 * 입력된 값이 문자열이라도 쿼리문에서 ' '로 감싸지 않음 * 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용 *.. 더보기
[Spring] 기본개념 및 어노테이션 - 스프링은 자바 플랫폼을 위한 오픈소스 애플리케이션 * 크기와 부하 측면에서 경량화 * IoC 컨테이너로 애플리케이션의 느슨한 결합 * 의존성 주입을 통해 각 계층이나 서비스들간의 의존성 동기화 * 자바의 리플렉션을 이용해서 객체의 생명주기를 관리 - MVC * Model: 핵심적인 비즈니스 로직으로 DB를 관리 * View: 사용자에게 보여주는 화면 * Controller: 모델과 뷰 사이에서 정보교환을 할 수 있도록 연결시키는 역할 - 스프링에서 AOP * 관점 지향 프로그래밍의 약자로 비즈니스 로직의 앞 뒤에서 원하는 지점에 공통 관심사가 수행할 수 있게 하면서 중복 코드를 줄이는 방식(모듈화) * Bean에만 등록 - 스프링 DI (Dependency Injection) * 데이터 주입만 담당하.. 더보기
JAVA 변수, static, final 이론 Field Field: 클래스에 포함된 변수 멤버 변수: 클래스 변수 + 인스턴스 변수 기본형 변수: 기본 자료형으로 선언 참조 변수: 참조 자료형으로 선언 final → final 키워드는 엔티티를 한 번만 할당 → 상속 받는 클래스에서 못쓰게 하고 싶을 때 final 변수 → 해당 변수가 생성자나 대입연산자를 통해 한 번만 초기화 가능함을 의미 → 상수를 만들 때 응용 final 메소드 → 해당 메소드를 오버라이드 할 수 없음 → 상속 클래스에서 볼 수 없음 final 클래스 → 해당 클래스는 상속할 수 없음 static → static 키워드는 해당 데이터의 메모리 할당을 컴파일 시간에 할 것을 의미 → 전역, 전적의 의미로 사용 → 생성이 없고, 주소값이 없음(객체와 무관한 키워드) static .. 더보기
Non-thread-safe fields should not be static 제가 만든 유틸을 위와 같이 사용할 때 아래와 같은 에러가 발생했습니다. Non-static method '' cannot be referenced from a static context 우선 원인은 static method는 그 class를 객체화하지 않아도 사용 가능해야하는데 해당 method에는 class를 객체화(인스턴스)해야 쓸 수 있는 method가 들어가면 안되기 때문입니다. 1차원 적으로 스태틱이 아니면 안된다니까 해당 메서드를 스태틱으로 변경했었습니다. 변경 후 이슈없이 잘 동작했습니다. 하지만... 소나큐브(클린코드 툴)에서 아래와 같이 스레드로부터 안전하지 않은 필드는 static으로 생성하지 않기를 권장했습니다. 우선 static 예약어를 제외하여 선언했습니다. @Component로.. 더보기
[JUnit 5] Assertion 1. assertEquals 같은 값인 경우인지(유효한지) 확인할 때 사용합니다. public static void assertEquals(Object expected, Object actual, String message) { AssertEquals.assertEquals(expected, actual, message); } 메시지만 출력할 경우 아래와 같이 String만 입력해도 무관합니다. 2. assertNotEquals public static void assertNotEquals(Object unexpected, Object actual, Supplier messageSupplier) { AssertNotEquals.assertNotEquals(unexpected, actual, message.. 더보기
[JUnit 5] 기본 JUnit 5 - java 8 이상. - spring-boot 2.2 이상에서 기본으로 JUnit5 제공 - 기본 어노테이션 @Test @BeforeAll / @AfterAll @BeforeEach / @AfterEach @Disabled 해당 어노테이션의 실행 순서는 아래와 같습니다. @DisplayName - 어떤 테스트인지 테스트 이름을 보다 쉽게 표현할 수 있는 방법을 제공하는 어노테이션. * intelliJ에서 결과 탭에 DisplayName으로 메소드명이 나오지 않는다면 이전에 포스팅한 글과 마찬가지로 설정을 변경해주세요! https://halfstorage.tistory.com/33 No tests found for given includes 테스트 코드 작성 후 실행을 시키려고 하니 아래와.. 더보기
[Git] Git branching model 기능 추가나 이슈 해결 시 branch를 생성하여 작업하게 될 텐데 주로 Feature branch와 Hotfix branch를 이용했습니다. 기능 추가 시 Feature branch를 이슈 해결 시 Hotfix branch를 사용했는데 이런 브랜치들이 종류별로 어떤 상황에 사용되는지 갑자기 의문점이 생겨 찾아봤습니다! A successful Git branching model이라는 운용모델을 찾을 수 있었습니다. nvie.com/posts/a-successful-git-branching-model/ A successful Git branching model In this post I present a Git branching strategy for developing and releasing softw.. 더보기

반응형