본문 바로가기
반응형

IT/Java394

Constructor Injection 방식을 권장하는 이유 이전 포스팅에서 autowired 방식과 requiredArgConstructor를 사용하여 final로 변수 선언하여 의존성 주입하는 방법에 대해서 다룬 글이 있다. 자세한 내용은 아래 참고 포스팅을 확인하길 바란다. 이 포스팅에서는 좀더 심화되게 Constructor Injection 방식을 권장하는 이유에 대해서 다뤄보려고 한다. 일단 스프링부트에서는 Constructor Injection 방식이 단일 생성자이면서 , 그 생성자의 파라미터가 빈 일경우 스프링이 자동으로 주입을 해준다고 하고, 그럼으로써 @Autowired를 사용하지 않아도 되게 된다. 일단 의존성 주입의 방법은 3가지가 있다. 생성자 주입(Constructor Injection) 필드 주입(Field Injection) 세터 주입(.. 2023. 1. 3.
spring boot에서 actuator 사용하기 Spring actuator 란? 일단 공식 문서에서는 아래와 같이 정의 되어있다. Spring Boot includes a number of additional features to help you monitor and manage your application when you push it to production. You can choose to manage and monitor your application by using HTTP endpoints or with JMX. Auditing, health, and metrics gathering can also be automatically applied to your application. 번역을 하면 이렇다. Spring Boot에는 애플리케이션.. 2023. 1. 1.
String 내에서 특정 단어 위치 모두 찾기 String 에서 키워드를 찾을땐 indexOf를 사용하면 되지만 제일 처음 나오는 위치 값을 반환한다. 이럴 경우에 모든 위치를 찾고 싶을땐 어떻게 해야할까? 반복문을 돌면서 위치를 업데이트 해주면 된다. 샘플 코드는 아래와 같다. String text = "test tt test tt tt"; String word = "test"; List indexList = new ArrayList (); int index = text.indexOf(word); while(index != -1) { indexList.add(index); index = text.indexOf(word, index+word.length()); 2022. 12. 28.
java.sql.SQLException: ORA-01000: 최대 열기 커서 수를 초과했습니다 java 에서 oracle 로의 연결을 하면서 데이터를 뽑던 중 반복문이 멈추면서 다음 에러가 나왔다. java.sql.SQLException: ORA-01000: 최대 열기 커서 수를 초과했습니다 말 그대로 연결에 대한 최대 커서가 초과했기 때문이다. 데이터베이스 설정부분에서 변경할수도 있지만. 이 에러가 발생한 원인은 너무 많은 connection 을 날렸기때문이다. 그럼 방법은 제때 connection 과 pstmt 를 닫아주는것이다. pstmt.close(); conn.close(); 로 에러를 해결할 수 있다. 2022. 12. 25.
java jdbc oracle 사용법 자바에서 jdbc 를 사용하여 오라클에 접근하는 방법이다. 방법은 간단하다. 1. JDBC 드라이버를 로딩 Class.forName(“orale.jdbc.driver.OracleDriver”) 2. Connection 객체를 생성 conn = DriverManager.getConnection(url, id, pw) 3. PreparedStatement 객체 생성, 객체 생성시 SQL 저장 PreparedStaement - SQL문을 데이터베이스에 보내기위한 객체 pstmt = conn.preparedStatement(sql) 4. SQL 문장을 실행 후 결과를 리턴 SQL 문장 실행 후, 변경된 row 수를 int type 으로 리턴 pstmt.executeQuery() 5. close ResultSet.. 2022. 12. 24.
[Oracle] java.sql.SQLException: ORA-00911: 문자가 부적합합니다. 자바에서 oracle sql 을 날렸는데 [Oracle] java.sql.SQLException: ORA-00911: 문자가 부적합합니다. 이런 에러가 떴다. 물론 말 그대로 문자가 부적합 할수도 있지만 세미콜론을 붙이게 되면 다음 에러가 뜬다. 쿼리 내용을 넣는 xml문서에는 마지막에 세미콜론을 붙이지 않는다. 2022. 12. 23.
자바 레코드(Record) 레코드(record)란 "데이터 클래스"이며 순수하게 데이터를 보유하기 위한 특수한 종류의 클래스이다. 코틀린의 데이터 클래스와 비슷한 느낌이라고 보면 된다. record 클래스를 정의할때, 그 모양은 정말 데이터의 유형만 딱 나타내는 듯한 느낌이다. 훨씬더 간결하고 가볍기 때문에 Entity 혹은 DTO 클래스를 생성할때 사용되면 굉장히 좋을 듯 하다. 예제 코드는 다음과 같다. 두개의 샘플 코드는 같은 동작을 하는 클래스와 레코드이다. Class public class TestClass{ private final String id; private final String name; public TestClass(String id, String name){ this.id = id; this.name = .. 2022. 12. 22.
식별자 명명 규칙 자바 프로그램을 작성하다보면 클래스, 메서드, 변수 등 다양한 대상에 대해 이름을 붙여야 할일이 빈번히 있다. 이런 이름을 통틀어서 식별자(identifier)라고 하는데, 식별자를 만들 때는 다음과 같은 규칙을 반드시 지켜야 한다. 하나 이상의 글자로 이루어져야 한다. 첫 번째 글자는 문자이거나 '$', '_'여야한다. 두 번째 이후의 글자는 숫자, 문자, '$', '_'여야한다. '$', '_' 외의 특수 문자는 사용할 수 없다. 길이의 제한은 없다. 키워드는 식별자로 사용할 수 없다. 상수 값을 표현하는 단어 true, false, null은 식별자로 사용할 수 없다. 여기서 달러 표시($)와 밑줄(_)은 다른 프로그래밍 언어와의 호환성을 위해서 포함된 것이고 그런 경우가 아니라면 달러 표시는 사용.. 2022. 12. 19.
SimpleDateFormat 에 대해 이전 포스팅에서 SimpleDateFormat 과 localDate를 비교하는 포스팅을 작성한적이 있다. 해당 포스팅은 아래 참고포스팅을 참고 하고 해당 포스팅에서는 약간이나마 localdate에 편파적인 포스팅을 적었다. 이번 포스팅에서는 SimpleDateFormat에 대해서 좀더 다뤄보려고 한다. 아무리 LocalDate가 나왔다고 하지만 그렇다고 SimpleDateFormat를 안쓸수는 없다. 그리고 상황에 따라서는 SimpleDateFormat 가 더 좋게 사용될수도 있어서 뭐가 더 좋다고 할수는 없다. 기본 사용문법에 대해 정리를 해보면 다음과 같다. SimpleDateFormat timeFormat = new SimpleDateFormat("HH : mm"); String timeString.. 2022. 12. 16.
반응형