[Spring] eGovFramework 환경에서 구글 SMTP 연동 및 첨부파일 메일 보내기
안녕하세요! 이번 포스팅에서는 전자정부프레임워크(eGovFramework) 및 일반 스프링(Spring MVC/Boot) 환경에서 Apache Commons Email 라이브러리를 활용해 이메일을 발송하는 방법을 알아보겠습니다. 1. 개발 환경 및 사전 준비Language: Java 11 이상Framework: Spring Framework / eGovFramework (Jakarta 패키지 기반)Library: Apache Commons Email 2.x (org.apache.commons.mail2.jakarta)SMTP Server: Gmail SMTP (smtp.gmail.com) # Maven 의존성 추가 (pom.xml)Jakarta 톰캣 환경에 맞는 Commons Email 라이브러리를 의..
Backend/Spring
[Spring Boot] Slack API 연동하여 모니터링 에러 알림 테스트
안녕하세요! 개발을 하다 보면 서버에서 발생하는 에러나 중요한 경고 시스템 로그를 실시간으로 모니터링해야 하는 순간이 찾아옵니다. 오늘은 저번 AWS API에 이어,AWS SNS 연동 및 Webhook.site 활용 실전 메시지 발송 테스트 [Spring Boot] AWS SNS 연동 및 Webhook.site 활용 메시지 발송 테스트안녕하세요. 지난 포스팅에서 AWS 콘솔을 통해 SNS 주제를 만들고 IAM 자격 증명을 발급받았는데요.[AWS] Amazon SNS 주제 생성 및 IAM 사용자 액세스 키 발급 가이드 [AWS] Amazon SNS 주제 생성 및 IAM 사용자0206cho.tistory.com 협업 툴로 가장 많이 사용되는 Slack(슬랙) API를 활용하여, 스프링 부트 애플리케이션에서..
Backend/Spring
[Spring Boot] AWS SNS 연동 및 Webhook.site 활용 메시지 발송 테스트
안녕하세요. 지난 포스팅에서 AWS 콘솔을 통해 SNS 주제를 만들고 IAM 자격 증명을 발급받았는데요.[AWS] Amazon SNS 주제 생성 및 IAM 사용자 액세스 키 발급 가이드 [AWS] Amazon SNS 주제 생성 및 IAM 사용자 액세스 키 발급 가이드안녕하세요. 마이크로서비스나 서버리스 애플리케이션에서 메시지 게시/구독을 담당하는 Amazon SNS(Simple Notification Service) 주제(Topic)를 생성하고, 이를 외부 애플리케이션(ex. Spring Boot, Node.js 등)에0206cho.tistory.com 이번에는 Spring Boot 애플리케이션에 AWS SDK V2를 연동하여 토픽 생성, 구독 등록, 메시지 발행(Publish) API를 구현해 보겠습니..
Backend/Spring
[Spring AI] 로컬 LLM과 Redis를 활용한 나만의 RAG 시스템 구축 가이드
안녕하세요! 오늘은 전자정부 표준프레임워크(eGovFrame) 환경에서 Spring AI와 Redis Stack을 결합하여, 나만의 문서를 학습한 로컬 AI 시스템을 구축하는 과정을 상세히 정리해 보겠습니다. 단순히 실행하는 것을 넘어, 올린 PDF나 Markdown 파일이 어떤 단계를 통해 지식화되어 저장이 되는지 그 내부 파이프라인까지 같이 이해해보겠습니다. 1. 프로젝트 준비이번 실습의 핵심은 "모든 것을 로컬에서 제어한다"는 점입니다.1) 개발환경JDK(Java Development Kit) 17 이상Apache Maven 3.8.4 이상Docker : 최신 버전 권장Docker compose : 최신 버전 권장AI 엔진: Ollama (qwen3.5:2b, bge-m3:567m)환경 관리: u..
Backend/Spring
[Spring] 전자정부프레임워크 crpto DB정보 globals.properties 암호화
프로젝트 소스에 DB정보 같은 노출에 위험이 있는 정보는 암호화를 하여 관리한다. 표준프레임워크 3.8 부터 ARIA 블록암호 알고리즘 기반 암/복호화 설정을 간소화 할 수 있는 방법을 제공한다.globals.properties 설정 파일의 중요 정보 Url, UserName, Password 항목을 암/복호화 처리 할 수 있도록 제공한다. 나는 프로젝트에는 암호화된 값만 넣기 때문에 프로젝트를 따로 만들었다.처음부터 시작하시는 분들은 참고하시면 좋을 거 같다. 프로젝트 구조는 다음과 같다. 우선 crypto를 사용하기 위해 pom.xml에 추가 해준다. org.egovframe.rte org.egovframe.rte.fdl.crypto ${org.egovframe.rte.version..
Backend/Spring
[Spring] WebFlux 초기 설정
1. Webflux 프로젝트 생성 * 프로젝트 구조 2. application.properties 설정# Spring 애플리케이션 이름 설정spring.application.name=webFlux# MySQL 데이터베이스 연결 설정 (R2DBC 사용)spring.r2dbc.url=r2dbc:mysql://localhost:/capston2024spring.r2dbc.username=spring.r2dbc.password=# R2DBC 리포지토리 활성화 (리액티브 리포지토리 사용)spring.data.r2dbc.repositories.enabled=true# R2DBC MySQL 연결 풀 설정## 커넥션 풀 사용 여부spring.r2dbc.pool.enabled=true## 초기 커넥션 풀 크기spring..
Backend/Spring
[Spring] Spring Boot를 통해 간단한 REST API와 Redis를 이용한 캐시 기능을 구현
Java의 Redis Clinet는 Jedis, Lettuce가 있음기존엔 Jedis를 많이 썼지만 멀티 스레드의 불안정, Pool 한계 등의 단점과 Lettuce의 Netty 기반이라 비동기 지원이 가능하다는 장점 때문에 Lettuce로 추세가 넘어가고 있음 그러다 결국 Spring Boot 2.0 부터 Jedis 가 기본 클라이언트에서 deprecated 되고 Lettuce 가 탑재됨 Spring Boot 에서 Redis 를 사용하는 방법은 RedisRepository 와 RedisTemplate 두 가지가 있음. 1. spring mvc 프로젝트 생성 * 프로젝트 구조 2. application.properties 설정spring.application.name=springMVC_24_capston#..
Backend/Spring
[Spring] MyBatis 댓글 목록 들여쓰기 구현
댓글일 경우 들여쓰기를 하기 위해서 bGroup, bStep, bIndent 필드 생성BoardDto.java private int bId; // 글 번호 private String bName; // 작성자 이름 private String bPw; // 작성자 비밀번호 private String bTitle; // 글 제목 private String bContent; // 글 내용 private String bFILE; // 파일 private Date bDate; // 작성 날짜 private int bHit; // 조회수 private int bGroup; // 그룹 번호 private int bStep; // 답글 순서 private int bIndent;// 들여쓰기 게시글일 경우 들여쓰기..
Backend/Spring
[Spring] JdbcTemplate
반복적인 작업 간단히 처리 이렇게 긴 코드를 다음처럼 2라인으로 줄일 수 있음! 복잡한 쿼리는 직접 쓰는 경우가 많음 (템플릿에 의존 X) 1. pom.xml → jdbcTemplate 설정 - pom.xml org.springframework spring-jdbc 4.1.4.RELEASE 2. servlet-context.xml → 빈설정 - servlet-context.xml 3. BController → jdbcTemplate @Autowired 설정 - BController.java // 컨트롤러부터 요청들어오므로 여기서 선언! private JdbcTemplate template; //템플릿 받을 수 있는 필드 선언 @Autowired public void setTemplate(JdbcTempl..
Backend/Spring
[Spring] MVC 게시판(5) 글 삭제
[Spring] MVC 게시판(1) DB 생성 및 연결 [Spring] MVC 게시판(1) DB 생성 및 연결DB 생성 -- 테이블 개설 create table mvc_board( bId number(4) primary key, bName varchar(20), bTitle varchar2(100), bContent varchar2(300), bDate DATE DEFAULT SYSDATE, bHit NUMBER(4) DEFAULT 0, bGroup NUMBER(4), bStep NUMBER(4), bIndent NUMBER(4) );0206cho.tistory.com[Spring] MVC 게시판(2) 게시판 세팅, 리스트 [Spring] MVC 게시판(2) 게시판 세팅, 리스트- MVC 게시판(1) D..
Backend/Spring
[Spring] MVC 게시판(4) 상세페이지
2023.02.17 - [Web/Spring] - [Spring] MVC 게시판(1) DB 생성 및 연결 [Spring] MVC 게시판(1) DB 생성 및 연결DB 생성 -- 테이블 개설 create table mvc_board( bId number(4) primary key, bName varchar(20), bTitle varchar2(100), bContent varchar2(300), bDate DATE DEFAULT SYSDATE, bHit NUMBER(4) DEFAULT 0, bGroup NUMBER(4), bStep NUMBER(4), bIndent NUMBER(4) );0206cho.tistory.com2023.02.17 - [Web/Spring] - [Spring] MVC 게시판(2) 게..
Backend/Spring
[Spring] MVC 게시판(3) 글 작성
2023.02.17 - [Web/Spring] - [Spring] MVC 게시판(1) DB 생성 및 연결 [Spring] MVC 게시판(1) DB 생성 및 연결 DB 생성 -- 테이블 개설 create table mvc_board( bId number(4) primary key, bName varchar(20), bTitle varchar2(100), bContent varchar2(300), bDate DATE DEFAULT SYSDATE, bHit NUMBER(4) DEFAULT 0, bGroup NUMBER(4), bStep NUMBER(4), bIndent NUMBER(4) ); 0206cho.tistory.com 2023.02.17 - [Web/Spring] - [Spring] MVC 게시판(2..
Backend/Spring
[Spring] MVC 게시판(2) 게시판 세팅, 리스트
- MVC 게시판(1) DB 생성 및 조회 2023.02.17 - [Web/Spring] - [Spring] MVC 게시판(1) DB 생성 및 연결 [Spring] MVC 게시판(1) DB 생성 및 연결 DB 생성 -- 테이블 개설 create table mvc_board( bId number(4) primary key, bName varchar(20), bTitle varchar2(100), bContent varchar2(300), bDate DATE DEFAULT SYSDATE, bHit NUMBER(4) DEFAULT 0, bGroup NUMBER(4), bStep NUMBER(4), bIndent NUMBER(4) ); 0206cho.tistory.com 게시판 세팅 BDto.java packa..
Backend/Spring
[Spring] MVC 게시판(1) DB 생성 및 연결
DB 생성 -- 테이블 개설 create table mvc_board( bId number(4) primary key, bName varchar(20), bTitle varchar2(100), bContent varchar2(300), bDate DATE DEFAULT SYSDATE, bHit NUMBER(4) DEFAULT 0, bGroup NUMBER(4), bStep NUMBER(4), bIndent NUMBER(4) ); --자동증가 create sequence mvc_board_seq; -- 예시 값 추가 insert into mvc_board (bId, bname, btitle, bcontent, bhit, bgroup, bstep, bindent) values(mvc_board_seq.nex..
Backend/Spring
[Spring] 서버측에서 유효성 검사
js → client에서 처리 방식ajax - 비동기 통신 - 새로고침을 하지 않아도 데이터 검사 가능 → 속도 빠름server단에서 처리 → validator 이용컨트롤러에서 validator 두고 처리검사할 객체 → 커맨드 객체그 객체를 넘겨줘서 컨트롤러에서 검사.[ 기본 예제 ] createPage.jsp - 입력페이지createPage.jsp 이름 : 아이디 : createDonePage.jsp - 유효성 검사 정상적으로 끝나고 출력createDonePage.jsp이름 : ${student.name }아이디 : ${student.id }Student.java - 커맨드 객체package com.all.test;public class Student { private String name; p..
Backend/Spring
[Spring] 컨트롤러에 데이터를 보내서 처리하는 방법
HttpServletRequest사용@RequestParam커맨드객체를 이용해서 많은 데이터를 처리@PathVariable 사용HttpServletRequest사용- url : http://localhost/test01/board/confirmId?id=abcd&pw=1234- get으로 보낸 값을 request를 이용하여 받아서 model로 뷰에 보내줌 - confirmId.jspID : ${id} PW : ${pw}- HomeController.java 추가@RequestMapping("/board/confirmId") // 요청경로 public String confirmId(HttpServletRequest httpServletRequest ,Model model) { // httpServletR..
Backend/Spring
[Spring] 다운로드부터 프로젝트 생성까지 (이클립스 2021-09, jdk11)
jdk11버전!이클립스 2021-09 - web Developers windows 다운로드2021-09 R | Eclipse Packages 2021-09 R | Eclipse Packages517 MB 356,124 DOWNLOADS Tools for developers working with Java and Web applications, including a Java IDE, tools for JavaScript, TypeScript, JavaServer Pages and Faces, Yaml, Markdown, Web Services, JPA and Data Tools, Maven and Gradle, Git, and more. Cliwww.eclipse.org 설치 확인STS 설치 서버 연결80..
Backend/Spring
[스프링] 필요한 Project Dependencies 추가
Spring4부터는 버전이 달라 기존 단축키가 안먹힘 src → pom.xml에서 MR → spring → Add Starters 필요한거 체크 후 next → pom선택 후 finish Oracle Driver : 오라클 사용 MyBatis Framework : MyBatis 사용 Spring Data JPA : JPA 사용 finish누른 후 pom 확인하면 추가된 것을 볼 수 있음 추가 후 업데이트시켜줘야 함 → 그래야 이클립스가 아! 얘가 추가됬구나하고 이해 메이븐 업데이트 : 프로젝트 MR → Maven → Update Project...
Backend/Spring
[Spring] Web server failed to start. Port 8080 was already in use
이미 8080포트를 사용중이라 서버를 동작시키지 못한다는 뜻 -> 포트번호 변경 src/main/resources → application.properties 아래 코드 추가만약 application.properties클릭시 응답없음이 지속적으로 뜬다면 editor를 text Editor로 변경
Backend/Spring