728x90

java 16

Webclient 외부 API 통신 - java [spring boot]

다른 spring boot 프로그램과 내 프로그램끼리 api를 사용하고 싶었는데webclient가 제일 편하다고 해서 사용했다. 다른 것도 많은데 이게 제일 코드가 적고 간편한 것 같다. gradleimplementation("org.springframework.boot:spring-boot-starter-webflux") webclient.post() - parameterimport jakarta.annotation.PostConstruct;import lombok.extern.log4j.Log4j2;import org.springframework.beans.factory.annotation.Value;import org.springframework.scheduling.annotation.Schedul..

MQTT - response topic 설정 후 publish까지 (reponse - request) [spring boot]

MQTT에서 새로 배운 기능 2번째 response topic이다. 내가 아는 mqtt는 request랑 response 기능이 있는 것은 아니다. 구현한다고 하면 만들 수는 있지만 그건 개발자가 알아서 구성할 일인데.. mqttv5에서만 가능한 걸로 알고 있다. Response topicmqtt에서 publish 시에 response topic을 지정해서 이 topic으로 응답을 해달라고 요청할 수 있다. 즉, 이 요청이 처리 성공 유무를 응답해줄 수 있다.publish (response topic 설정)import org.eclipse.paho.mqttv5.client.IMqttMessageListener;import org.eclipse.paho.mqttv5.client.MqttClient;impo..

MQTT - subscribe 시 retained data 받아오기 (how to set subscribe) [spring boot]

MQTTv5 에서는 내가 알던 기능보다 다양한 부분이 있었다. Retained Dataretained data는 mqtt에서 retained (유지한) 값을 그 topic에 맞게 저장하는 개념이다.즉, retained를 지정해서 publish를 해놓으면 그 후에 해당 topic에 subscribe를 하면 바로 마지막에 publish된 값을 받을 수 있다.gradle// https://mvnrepository.com/artifact/org.eclipse.paho/org.eclipse.paho.mqttv5.clientimplementation("org.eclipse.paho:org.eclipse.paho.mqttv5.client:1.2.5") publish// publish는.. 까먹음 // publish..

JRadioButton 중복 선택 방지 | Avoid selecting multiple JRadioButton [java swing]

[ 원하는 기능 ]성별을 묻는 상황에서 라디오버튼을 클릭 시 한 성별을 선택한다.다른 성별을 선택 시, 기존 선택된 성별을 제외되고 선택한 성별만 선택된다.input 입력 버튼을 눌렀을 때 성별 radio button의 값을 가져와 db에 저장 후 JTable에 출력한다. [ 문제 상황 ]다른 성별을 선택 시, 양쪽 다 선택된다.그래서 첫번째 값인 female만 저장되는 상황 발생public class ClientGui extends JFrame { private JRadioButton femaleRadioButton; private JRadioButton maleRadioButton; // (생략) public ClientGui(){ inputButton.addActionListener(new ..

PSQLException 예외처리 - getCause()와 getSQLState() 활용해 DB 연결, data insert 예외처리 | PSQLException exception handling - DB connection and data insertion using getCause() and getSQLState() [spring boot]

검색해도 Postgresql의 exception인 PSQLException 예외처리는 잘 안 나왔다. 그래서 PSQLException 예외 처리를 위해 getCause()랑 getSQLState()를 해봤다.  [ 전제 상황 ]jpa 말고 preparedStatement (pstmt) 사용datasource.getConnection()으로 연결 시도DB 연결을 시도 했을 때 exception 처리 부분PSQLException에서 추적한 exception은 ConnectionException 밖에 없었다.ConnectionException은 DB 서버가 꺼졌을 때 발생한다.db 사용자명, 비밀번호, 권한이 다를 때는 getCause()나 getSQLState()에서 반응하지 않아 PSQLException까..

Jpa 삭제된 데이터의 개수 확인하기 + log로 표시 | Jpa Check the number of deleted data + display as log [spring boot]

[전제 상황]jpa 사용 - 스프링 부트, 자바특정 기간보다 오래된 데이터 삭제 (각자 상황에 따라 맞춰서 변경)JpaRepository의 삭제 함수 return 타입을 int로 정의한다.void deleteByDateLessThan(삭제기간); → int deleteByDateLessThan(삭제기간);이러면 삭제한 데이터의 값이 반환된다.즉, 삭제한 데이터가 없으면 0, 있으면 1이상의 숫자가 return@Repositorypublic interface SampleRepository extends JpaRepository, JpaSpecificationExecutor { @Modifying int deleteByDateLessThan(삭제기간);} 2. if문으로 삭제된 데이터 유무 파악하..

DB 연결 확인하지 않고 실행 시작 처리 & DB server가 끊기면 에러 로그 발생하고 시스템 중단되지 않도록 유지하기 / During initialization, Do not check DB connection with disconnected DB server and error log occurs, keeps the system from interrupting [spring boot]

spring boot 버전 3정도를 사용하고 있는데datasource를 굳이 hikariDatasource로 지정하지 않아도 spring boot에서 자동으로 hikariDatasource로 해준다. 그래서 HikariPool에서 DB 연결을 확인하고 연결이 잘되면 예외나 에러가 발생하지 않는다.다만, 연결하지 못하면 아예 종료가 된다는 아이러니한 상황... [ 겪었던 문제 ]DataSource로 지정 → hikaripool로 잡혀버려서 자동으로 hikaripool에서 연결 시도→ exception 발생하나 hikaripool에서 발생한 exception을 제어하는 방법이 나오지 않았다. (아마 없을 듯.)   DB 연결 확인까지 하고 시작해도 된다~ 는 사람은 필요하지 않겠지만,내 상황은 다음과 같다...

PreparedStatement에서 setInt()는 Null이 입력이 안된다. 해결 방법은? In PreparedStatement, setInt() can not insert null. Any solution?[spring boot]

어쩔 수 없이 JPA 말고 PreparedStatement를 활용해서 데이터를 입력해야 했다.data 중에는 null값이 있는데, insert를 실행하려고 했다. 문제 발생!null은 안된다고 하는 거다. 가만 보니..setString() 같은 거는 null 입력이 가능하지만,setInt()에서는 null이 불가능해서 따로 setNull()로 해야 한다. 그래서 if문을 이용해서 구분을 해야하는 번거로움이 있다.PreparedStatement pstmt = null;pstmt = conn.prepareStatement("insert into TableName (column1, column2) values(?,?)");Integer value1 = null;if(value1 != null){ pstmt.s..

eclipse 이클립스 삭제하기

버전을 바꿔야 하는 일이 있어서 제어판에서 삭제하려고 했으나 이클립스가 없었다 원래 제어판에서 삭제를 못하는거 1. C드라이브 (로컬디스크) 클릭 2. 사용자 (user) 클릭 3. 본인이 사용하는 이름 폴더 클릭 4. '.eclipse' , '.p2' , 'eclipse' 3개의 폴더를 삭제 이러면 삭제 완료 이렇게 안하면 새로 깔아서 프로젝트 만들때 겹쳐서 문제가 생기는 듯 다시 설치하면 됩니다!

[생활코딩] JAVA 기초 8일차

[상속] - 한 객체의 필드(변수)와 메소드를 다른 객체가 물려받을 수 있는 기능 - 코드 중복를 제거 - 유지 보수에 좋음 class SubstractionableCalculator extends Calculator{ public void substract() { System.out.println(this.left-this.right); } } - extands 객체 이름 : 객체의 기능을 확장 - SubstractionableCalculator가 Calculator의 기능을 부모로 해서 상속 - this.left, this.right는 Calculator 객체에서 정의된 것이다. 객체에 메소드를 추가하는 게 어려움 1. 객체를 자신이 만들지 않아서 소스를 변경할 수 없음. (변경할 수 있..

728x90
반응형