개발 썸네일형 리스트형 [Spring]Lombok(롬복) 롬복은 Getter, Setter생성 또는 생성자 코드를 편리하게 할 수 있도록 지원해주는 라이브러리 이다. 스프링에서는 생성자를 통한 주입을 권장하는데, 그럴 경우 @Autowired를 통하 아래와 같이 빈을 주입한다. 개발자의 덕목은 귀찮음 이므로, 이렇게 생성자 코드를 작성하는 부분을 줄이고 싶어진다. 그럴 경우 활용할 수 있는 것이 Lombok(롬복)이다. * 먼저 build.gradle에 아래와같이 추가한다. configurations { compileOnly { extendsFrom annotationProcessor } } * 그리고 dependencies 내에 아래의 dependencie를 추가해준다. compileOnly 'org.projectlombok:lombok' annotation.. 더보기 [Spring]@ComponentScan 스프링 프로젝트를 구축함에 있어, @Bean을 통해 스프링 빈을 생성할 수 있었지만, 만약 프로젝트 규모가 커진다면 매번 생성해야 할 빈을 생성하는 부분에 모두 @Bean 어노테이션을 지정해주어야 하는 번거로움이 있다. 스프링에서는 이러한 문제를 해결하기 위해 @ComponentScan 어노테이션이 존재한다. 설정클래스에 @ComponentScan 을 붙여주고 빈을 생성할 클래스에서 @Component 어노테이션을 붙여주면 된다. 그리고 클래스 생성자에 의존관계를 통해 주입을 받아야 하는 경우 @Autowired 어노테이션을 지정하면 된다. 컴포넌트 스캔의 기본 대상은 아래와 같다. @Component : 컴포넌트 @Controller : 스프링 MVC에서 컨트롤러로 사용 @Service : 서비스 계층.. 더보기 [Java]Call by value, Call by reference 자바에 대해 공부를 하다보면 기본 자료형과 참조 자료형에 따른 차이 때문에 혼동하는 상황에 직면할때가 있다. 자료형의 차이에 따른 값 호출 방식에 대한 차이때문에 발생하는 일인데 자바에서는 두 가지 방식으로 값을 호출한다. 1. Call by value(값에 의한 호출) 함수가 호출될 때 메모리 공간 안에서는 임시의 공간이 생성된다. 그리고 함수가 종료되면 해당공간은 사라진다. 함수 호출시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역적으로 사용하는 변수이다. 기본 자료형 : call by value 로 동작 (int, short, long, float, double, char, boolean) 2. Call by reference(참조에 의한 호출) 함수가 호출.. 더보기 [Git]git format-patch를 사용하는 방법 간혹 로컬 환경에서 개발한 사항을 실제 운영에 반영하고자 할때, 대상 운영서버가 폐쇄망으로 되어 있어 로컬에서 커밋내역을 바로 push 할 수 없는 경우가 있다. 그럴때 사용할 수 있는 방법이 patch 명령어이다. git format-patch -2[반영하고자 하는 커밋 수] 의 방법으로 커밋 이력을 하나의 파일로 생성할 수 있다. 해당 파일들을 반영하고자 하는 소스코드가 적용된 곳으로 옮긴 뒤, git am 0001file[파일명]을 통해 커밋 이력을 반영시킬 수 있다. 더보기 [Java]순수 자바 코드로 DIP와 OCP를 준수하는 방법 Service 인터페이스와 ServiceImpl 클래스로 서비스를 구현받는 구조를 통해 추상화 - 구체화를 구축하여도, 실제 비즈니스 로직을 수행하기 위해 new 연산자를 통해 객체를 생성할때는 실행되는 ServiceImpl 클래스를 new 로 선언하여 생성하게 된다. ex) private final Service service = new ServiceImpl(); 형식으로 객체 생성 이런식으로 구현하게 되면, 추상화가 잘 되어 있다 하더라도, 객체의 생성에 있어서 구체화 된 클래스를 호출해야 하므로 DIP(의존관계 역전원칙 : 프로그래머는 "구체화"보다 "추상화"에 의존해야 한다. 뿐만 아니라 구체화된 클래스의 변경이 발생할때 Service를 호출하는 클라이언트 단을 수정해야 하므로, OCP(개방 폐쇠.. 더보기 [CS]객체 지향 설계의 5원칙(SOLID) 지금까지 객체지향 언어를 공부하면서 막연히 가장 많이 사용되는 개발언어라는 것만 알고 있었고, 정확히 어떤점에서 강점을 가지고, 그 강점을 살리기 위해서는 어떤 방식으로 구현해야 하는지에 대해서는 깊게 생각해보지 못했다. 클린 코드의 저자인 로버트 C.마틴의 논리에 따르면 좋은 객체지향 언어란 아래의 5가지 원칙을 가진다고 한다. 이 원칙들은 사실상 자바로 단순히 분류하기 보다는 소프트웨어 공학의 분야이다. 단일 책임 원칙(Single responsibility principle) : SRP ㄴ 한 클래스는 하나의 책임만 가져야 한다. 개방 폐쇄 원칙(Open/closed principle) : OCP ㄴ 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다.(구현/분리) 리스코프 치환 원칙.. 더보기 [Java]Optional 자바개발자라면 가장 많이 겪게 되는 오류 중 하나가 NullPointerException(NPE)일 것이다. 그리고 지금까지의 고전적인 자바 개발 방식에서는 이러한 null 문제를 해결하기 위해 NPE가 발생할 수 있는 부분에 if문을 통한 검증을 늘 포함해주어야 했다. 예를들면 if(name != null){ } 과 같이 말이다. 또는 String name = ""; 과 같이 초기값을 지정해줘야 한다... null값이 도출되는 변수에 대해 자바8 이상 버전부터 지원하는 래퍼클래스가 Optional이다. Optional에서는 아래와 같이 제네릭 클래스로 모든 타입의 변수를 감싸줄 수 있다. Optional 클래스의 주요 메소드는 다음과 같다. 값이 비어있을 때 - Optional.empty() 값이 Nu.. 더보기 [Git]기본 에디터를 notepad++ 로 지정하는 방법 기본적으로 git bash를 통해 commit을 하면 커밋메세지를 입력하는 vi 에디터가 열리게 된다. 하지만 vi에디터 대신 다른 에디터를 기본으로 사용하고 싶을 경우가 있다. 내가 주로 사용하는 notepad++을 기준으로 변경하고자 한다면... 아래의 명령어를 통해 변경이 가능하다. -------------------------------------------------------------------------------------------------------------------------- git config --global core.editor "'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession.. 더보기 이전 1 ··· 4 5 6 7 8 9 다음