의존 주입이라는 용어는 스프링(Spring)에서만 쓰이는 개념은 아니지만, 오늘날 스프링이 이렇게까지 자바(Java) 진영에서 성공할 수 있는 이유 중 하나인 의존 주입에 대해서 알아보도록 하겠습니다. 단어만 볼 때 너무 어려운거 아니야? 라고 생각할 수 있지만 스프링의 기초적인 부분이고 전혀 어려운 것이 아니니 꼭 이해하셨으면 좋겠습니다. 객체에 의존한다 의존 주입을 이해하기에 앞서, 객체에 의존한다라는 개념을 먼저 이해를 해야 됩니다. TestA.java package com.tistory.needneo; public class TestA { public void print() { System.out.println("test a"); } } TestB.java package com.tistory.ne..
자바를 배우는 초창기에는 문자열의 비교시 ==를 사용하여 예상치 못한 에러가 발생하는 경우가 종종 발생한다. 대개 true로 문제가 없는 경우도 많지만, 간혹 false가 떨어지곤 하는데 이 이유에 대해서 설명해보고자 한다. 자바 예시 String str1 = "삼성전자"; String str2 = "삼성전자"; String str3 = new String("삼성전자"); System.out.println(str1 == str2); System.out.println(str1 == str3); System.out.println(str1.equals(str3)); 위 예시를 해보면, 결과가 아래와 같이 떨어진다. true false true 결과에 대한 원인 str1과 str2는 새로운 객체가 아니기 때문에..
자바(Java)에서 문자열을 자르는 방법으로 substring을 제공하고 있다. substring은 2가지 방식의 인자값을 받고 있으며 방식은 아래와 같다. substring 사용법 String substring(int startIndex); String substring(int startIndex, int endIndex); startIndex는 시작지점의 인덱스 값이고, endIndex는 종료 지점의 인덱스 값이다. 두 방식 모두 return 값으로 문자열(String)이 리턴된다. 사용 예제 public class Main { public static void main(String args[]) { String example = "동해물과 백두산이 마르고 닳도록"; System.out.println..
자바로 파일을 생성하는 방법은 다양하게 많지만 그 중 가장 범용적이고, 성능도 뛰어난 방법을 소개해보고자 한다. 테스트를 위한 String 생성 public static void main(String args[]) throws Exception { List sampleList = new ArrayList(); for(int i = 0; i < 10; i++) { sampleList.add("test-" + i); } } 테스트를 위해서 10번의 루트를 실행하며, test-0 ~ test-9까지 문자열을 생성하고 sampleList 스트링 리스트 변수에 문자열 값들을 저장한다. 파일 생성 메소드 public static boolean createTextFile(String filePath, List sam..
자바를 하는 사람들에게는 메소드(Method)라는 것이 매우 익숙할지 모르겠으나, 코틀린은 메소드라는 표현보다는 펑션(Function)이란 말을 사용한다. 펑션은 사실 메소드보다 더 상위 개념이고, 메소드는 한 클래스내에서 호출이 가능한 펑션이라는 의미를 담고 있다. 코틀린의 경우 클래스를 생성하지 않아도 펑션을 만들 수 있기 때문에 펑션이란 말을 표현하는 것 같은데 펑션과 메소드라는 것부터 코틀린이 자바에서 분기된 사상이 무엇인지 알 수 있을 것이다. Kotlin의 함수 선언법 fun 함수명(인자값) 리턴값 { // 코드내용 } 코틀린의 경우 자바와 큰 차이는 우선 리턴값이 시작부터 선언하는 자바와 다르게 함수선언 이후에 선언을 한다는 점이다. 그리고 변수처럼 인자값에 들어가는 것도 자바의 int a처..
코틀린(kotlin)에서는 변수를 선언할 때 val과 var 중 한가지의 타입을 지정을 한 후 변수를 입력해야 한다. 코틀린 변수 선언 var(or val) 변수명 datatype(option) 확실히 변수 선언만큼은 자바보다 복잡해보일 수 있는데 알고보면 별거 없고, data type부분도 option이기 때문에 굳이 지정하지 않아도 코드가 작동하는데 전혀 문제가 없다. val (Read-only) val의 역할은 변수가 read-only가 되게 만든다. fun main() { // read-only val helloWorld : String = "Hello, World!" println("$helloWorld?") } 실행 결과 Hello, World!? 위와같이 정상적으로 헬로월드가 출력되는 코드에..
가상환경 리스트 확인 conda info --envs 가상환경 삭제 명령 conda remove --name [가상환경명] --all 삭제 후 결과 (base) C:\Users>conda remove --name scientis --all (base) C:\Users>conda info --envs # conda environments: # base * e:\Anaconda3 scientist e:\Anaconda3\envs\scientist --envs로 확인을 하면 삭제가 된 것을 확인할 수 있다. 참고로 이렇게 안 지워질때가 종종 있는데 레지스트리에 등록되는 것이 아니니 직접 폴더를 지우는 방법도 있다. 아나콘다 설치 폴더의 envs 폴더로 가면 가상환경으로 만들어진 폴더들이 보일텐데 원하는 폴더를..
인텔리J(IntelliJ)는 Java 진영의 상징적인 IDE 툴인 이클립스(Eclipse)과 붙으면서 유료툴에도 불구하고 강력한 기능들로 인해 점점 점유율을 강탈해오고 있다. 인텔리J의 단점이라고 말하면, 나처럼 컴퓨터가 많은 사람이라면(데탑 2대, 노트북 3대...) 라이센스 비용 때문에 모두 설치하기 힘들다는 정도이며, 회사라면 문제가 없는 것이 대부분 회사에서 라이센스를 제공해주기 때문에 큰 문제가 없다. 인텔리J를 써야 하는 몇가지 이유가 있을텐데 속도가 빠르다는 것도 있지만 다른 하나로 코틀린(Kotlin)을 쓰기가 편리하다는 것도 있다. 코틀린은 JetBrains에서 만든 언어이고, JetBrains는 IntelliJ를 만들었다. JetBrains는 상업용 소프트웨어가 얼마나 안정적인지 보여주..
Java로 리스트를 섞는 가장 쉬운 방법은 내장 객체인 Collections 객체의 셔플(Shuffle)을 사용하는 것이다. Shuffle 사용 Collections(리스트) 로또번호를 셔플(Shuffle)로 이용해서 만들면 매우 간단하고, 견고하게 만들 수 있다. 로또번호(Lotto Number) 생성 1-45번호 세팅 List numList = new ArrayList(); for (int i = 1; i [29, 5, 18, 12, 20, 6, 30, 10, 41, 15, 25, 45, 23, 3, 44, 42, 31, 9, 1, 14, 24, 2, 17, 8, 21, 40, 33, 7, 39, 13, 34, 4, 32, 37, 38, 26, 36, 11, 19, 43, 16, 27, 28, 22,..
개발을 할 때 Base URL을 매번 Controller에서 설정하는 것은 여간 귀찮은 것이 아니다. 그리고 Base URL이 바뀔 경우 모든 클래스를 다 수정하는 것도 문제가 될 수 있다. Spring boot에서는 매우 간단하게 Base URL을 설정하는 방법을 제공한다. 예제 import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class RestController { @RequestMapping("/rest/v..
List안에 들어간 값들을 기준으로 오름차순(Ascending)과 내림차순(Descending) 즉, 정렬을 하는 방법을 알아보도록 하겠습니다. 테스트를 위해서 다음과 같은 주식 종목값들을 넣어봤습니다. 리스트 예제 public static void main(String[] args) { List list = new ArrayList (); list.add("삼성전자"); list.add("테슬라"); list.add("애플"); list.add("엔비디아"); } 이 값들이 오름차순이 된다면, 삼성전자 -> 애플 -> 엔비디아 -> 테슬라 순으로 나와야 될 것입니다. 자바는 Collections이라는 내장 객체를 사용해서 쉽게 정렬을 할 수 있습니다. 오름차순 // 오름차순 Collections.sor..
자바로 파일 및 폴더를 핸들링하기 매우 쉬운데 폴더의 유무를 확인하고, 없을 경우 생성하며 특정 폴더를 삭제하는 것을 알아보도록 한다. C 드라이브에 Project/test 폴더를 생성하고 그 안에 test2라는 폴더를 추가로 생성하였다. 우리는 앞으로 이 폴더안에 test1을 추가로 생성하고, test2는 삭제하는 것을 알아보도록 한다. 폴더 여부 체크하기 (exists) public static void main(String[] args) throws Exception { File folder = new File("c:/project/test/test"); if(!folder.exists()) { // 폴더가 없을 경우 로직 } } Java에서 폴더를 체크하는 것은 파일이 있는지 체크하는 것과 동일하..