전체 글
-
[Spring + Thymeleaf] messages 국제화Spring 2025. 11. 14. 21:56
메시지 리소스 번들src/main/resources 하위에 메시지 프로퍼티 파일들을 생성합니다. messages.propertieshome.welcome=안녕하세요~! messages_ko.propertieshome.welcome=안녕하세요~! messages_en.propertieshome.welcome=Hi~! 설정 클래스LocaleChangeInterceptor를 다음과 같이 설정해주면, URL 파라미터로 lang을 받아서 처리해줍니다. API를 사용할 때, lang=ko와 같은 값을 넘겨준 경험이 있으시다면 익숙할 것입니다.@Configurationpublic class WebConfig implements WebMvcConfigurer { @Bean public LocaleResol..
-
[Spring MVC] Form 검증Spring 2025. 11. 13. 22:10
Thymeleaf + Validation(jakarta) + BindingResult(spring) 조합으로 폼을 검증하고, 에러를 반환하여 사용자에게 메시지를 보여주는 간단한 작업을 정리해보겠습니다.아무것도 입력하지 않고 제출 시, 아래와 같이 안내 메시지를 출력하는 작업입니다.build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.5.7' id 'io.spring.dependency-management' version '1.1.7'}// ...dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' im..
-
Dockerfile로 이미지 빌드 및 실행Docker 2025. 7. 25. 22:59
Springboot로 만든 웹 애플리케이션으로 이미지를 빌드하고, 단일 컨테이너를 실행하는 예시입니다. Dockerfile 작성# === Build Stage ===FROM openjdk:17.0.2-jdk-slim-buster AS builderWORKDIR /appCOPY gradlew build.gradle.kts settings.gradle.kts ./COPY gradle ./gradleCOPY src ./srcRUN ./gradlew bootJar --no-daemon# === Run Stage ===FROM openjdk:17.0.2-slim-buster AS finalWORKDIR /appEXPOSE 8080COPY --from=builder /app/build/libs/myapp-0.0.1..
-
Docker를 사용하는 이유Docker 2025. 7. 24. 21:52
환경 통일애플리케이션과 종속성, 설정값을 도커 이미지로 패키징하기 때문에 '제 로컬 PC에서는 되는데 서버에서는 안돼요.'를 없애줍니다. 배포 자동화 및 간소화표준화된 환경에서 작업할 수 있도록 하여 라이프사이클을 간소화합니다. CI/CD 파이프라인에서 애플리케이션 빌드 -> 이미지 빌드 -> 푸쉬 -> 배포를 자동화할 수 있습니다. dockerdocs 시나리오1. 로컬에 코드 작성하고 도커 컨테이너로 동료들과 공유2. 테스트 환경에 앱 푸쉬하고 테스트 실행3. 버그 발견시, 개발 환경에서 수정하고 테스트 환경으로 재배포4. 테스트 완료시, 업데이트된 이미지를 프로덕션 환경에 푸쉬 일반적으로 위 시나리오를 토대로 CI/CD 스크립트를 작성 버전 관리도커 이미지는 이름과 태그로 생성되기 때문에, 버전 관리..
-
[SpringAI] Tool Calling (2) - DB 접근AI 2025. 6. 20. 21:50
SpringAI 기술과 LLM을 활용해서 데이터베이스 접근을 해봤습니다.ChatClient(Ollama) + LLM(llama 3.2) + SpringAI Tool로 구성했습니다. 사용자 더미데이터 application.propertiesspring.application.name=ai-dataaccessspring.ai.ollama.base-url=http://localhost:11434spring.ai.ollama.chat.model=llama3.2spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpyspring.datasource.url=jdbc:log4jdbc:mysql://127.0.0.1:3306/test_dbsprin..
-
[SpringAI] Tool Calling (1)AI 2025. 5. 24. 16:31
Tool이란?LLM은 학습 후 동결되어 오래된 정보를 가지고 있으며, 데이터베이스, 파일 시스템 등 외부 데이터에 접근하거나 수정할 수가 없습니다. Tool calling 메커니즘은 그런 문제점을 해결하도록 도와줍니다. 자체 서비스를 Tool로 등록하여 LLM을 외부 시스템(API, 표준 기능 등)에 연결할 수 있습니다. 메서드 Tool메서드에 어노테이션을 달아서 Tool로 바꿀 수 있습니다.class MyTools { @Tool(description = "") void test(@ToolParam(description = "") String ) { }}@Toolname: Tool 이름. 지정하지 않으면 메서드 이름이 사용됨. AI 모델은 Tool을 호출할 때 name 값..
-
[SpringAI] 간단한 Ollama 채팅 클라이언트 만들기AI 2025. 5. 22. 21:52
Ollama 및 LLM 설치https://yeolmok.tistory.com/47 참고하시면 됩니다. Springboot 프로젝트 코드build.gradleplugins { id 'java' id 'org.springframework.boot' version '3.4.5' id 'io.spring.dependency-management' version '1.1.7'}dependencies { implementation 'org.springframework.ai:spring-ai-starter-model-ollama' testImplementation 'org.springframework.boot:spring-boot-starter-test' testRuntimeOnly '..
-
Ollama 설치 및 실행AI 2025. 5. 16. 21:19
Ollama는 DeepSeek, Qwen, Llama, Gemma 등의 LLM(Large Language Model)을 로컬에서 실행할 수 있도록 해줍니다. 따라서 LLM 설치 이후에는 네트워크 연결 없이 실행할 수 있으며 개인 정보, 사내 기밀 등 민감한 정보를 로컬에서 안전하게 처리할 수 있습니다.Ollama 설치https://ollama.com/ OllamaGet up and running with large language models.ollama.com CLI에서 Ollama 버전 확인ollama -vollama version is 0.7.0 CLI에서 Ollama 모델 리스트 확인ollama listNAME ID SIZE MODIFIED..