# Spring-legacy

22개의 포스트
post-thumbnail

[Spring Legacy] XML Config 로 AOP 적용하는 방식

참고: 제목에서 표현한 Spring Legacy 는 Spring Boot 를 사용하지 않는 환경을 의미합니다. 참고로 (당연히) Spring Legacy 도 Java Config 가 가능합니다. 다만 제가 일하는 곳에서는 일반적으로 Spring Legacy 환경 + XML 설정 을 하다보니 글을 이렇게 작성하게 되었습니다. XML AOP 설정 xml 작성법 Advice 로 사용될 Class 작성 Transaction XML AOP 설정 xml 작성법 > 참고: spring.profiles.active 파라미터는 아래처럼 VM Option 으로 넘길 수 있다. > <

2023년 4월 27일
·
0개의 댓글
·
post-thumbnail

Spring Legacy

Spring FrameWork 개요 자바 플랫폼을 위한 오픈 소스 어플리케이션 프레임워크 전자정부 표준 프레임워크(Spring MVC Project기반 프레임워크)의 기반 기술로서 쓰이고 있음 >> ### IOC(Inversion of Control) : 반전 제어 객체의 생성부터 모든 생명주기의 관리까지 프레임워크가 주도하고 호출할 수 있음. >> ### DI(Dependency Injection) : 의존성 주입 설정 파일이나 어노테이션을 통해 객체간의 의존 관계를 설정하여 개발자가 직접 의존하는 객체 생성을 할 필요가 없음 >> ### POJO 기반 프레임워크 순수 자바 객체를 의미하며 특정 클래스에 종속되지 않으므로 자바의 객체지향적 설계가 쉬워짐 >> ### Spring AOP(Aspert Oriental Programming) 관점지향 : 프로그램 트랜잭션, 로깅, 보안 등 여러 모듈, 여러 계층에서 공통으로 필요로 하는 기능의 경우 해당 기능들을 분리

2023년 4월 21일
·
0개의 댓글
·

TIL 68일차

◆ 스프링 프레임워크(Spring Framework) 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 합니다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있습니다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있습니다. 스프링은 Plain Old Java Object 방식의 프레임워크입니다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍습니다. 스프링은 제어 반전(IoC : Inversion of Control)을 지원합니다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출합니다. 스프링은 의존성 주입(DI : Depende

2023년 4월 10일
·
0개의 댓글
·
post-thumbnail

[프로젝트]React + Spring 소셜로그인 구현하기

개요 ⚡️ 개발환경 Front - React.js Back - SpringFramework(legacy) 4.3.30 DB - MySql5.7 Server - Tomcat 9 Tool - 전자정부프레임워크 3.0(수업목적), VScode Build - maven ⚡️ 시나리오 React(FE)를 통한 API 호출(redirect) kakao & naver 로그인 버튼 클릭 시 콜백함수 호출 콜백함수 호출과 동시에 axios를 통하여 spring 서버로 비동기 요청 spring에서 넘겨받은 인증코드를 통해 각 소셜로그인 토큰 발급 발급된 소셜 로그인 토큰에서 유저 정보 획득 획득된 유저정보를 분석하여 새로운 유저는 DB 저장 후 jwt발급, 기존 유저는 jwt 발급 spring에서 발급된 jwt를 React(FE)에서 localsotorage에 저장 위와 같은 시나리오를 가지고 시작하기 위해 그림을 먼

2023년 3월 20일
·
0개의 댓글
·
post-thumbnail

Spring Legacy Security 설정법-3

Security Config Security Config란? 사실상 Security Config에서 Spring Security에 대한 설정은 거의 다 한다고 봐도 무방합니다. WebSecurityConfigurerAdapter를 상속받아 사용하는 클래스 입니다. 여기서 Security FilterChain이 등록되기도 합니다. 보안 정책, 로그인, 권한 등등 많은 일을 Security에서 합니다.(보안 정책에 관한건 더 자세히 다루겠음) 여기선 로그인, 권한 설정 등만 다룰 것 입니다. (참고로 본인의 미니 프로젝트를 진행 하면서 소스코드를 기록하는거라 코드가 매우 본인 주관적임) @Configuration : 스프링 설정 클래스임을 나타내는 어노테이션 @EnableWebSecurity(debug = true) : WebSecurityConfigurerAdapter를 상속받아 웹 보안을 활성화 하겠다는 어노테이션 HttpSecurity h

2023년 3월 16일
·
0개의 댓글
·
post-thumbnail

Spring Legacy Security 설정법-2

Spring Security 설정방법 pom.xml 설정 Spring Security는 자바 버전에 맞추어 설정하는 것이 좋습니다. 본인은 자바 1.8 / tomcat 8.5 / security 4.2.3 사용하였습니다. web.xml 설정 Spring Security를 이용을 위해 SecurityFilterChain을 등록해야 합니다. root-context.xml 설정 이 부분에서 가장 많이 고생했습니다. Java Config를 사용할 예정이었기 때문에 Spring FilterChain에 대한 것은 자동으로 Java Config에서 등록될 줄 알았는데, 계속해서 오류가 발생하여 고생하게 되었습니다. 그러나, root-context에 해당 부분을 추가하면 문제를 해결할 수 있습니다. servlet-context.xml 설정 이 부분에도 component-scan을 추가하였습니다.(혹시몰라) 또한 anno

2023년 3월 14일
·
0개의 댓글
·
post-thumbnail

Spring Legacy Security 설정법-1

Spring Security란? Spring Security는 Spring 기반의 웹 어플리케이션 보안 프레임워크입니다. Spring Security는 인증, 권한 부여 및 기타 보안기능을 제공하는 프레임워크입니다. Spring Security의 주요 기능 - 인증(Authentication) : 사용자가 누구인지 확인하는 과정입니다. Spring Security는 다양한 인증 방식을 지원합니다. 예를 들어, 폼 로그인, 기본 인증, OAuth2, LDAP 등이 있습니다. - 권한 부여(Authorization) : 인증된 사용자가 특정 자원에 접근할 수 있는지 확인하는 과정입니다. Spring Security는 다양한 권한 부여 방식을 지원합니다. 예를 들어, URL 기반 권한 부여, 메소드 기반 권한 부여 등이 있습니다. - 보안 헤더(Security Header) : Spring Security는 보안 헤더를 자동으로 추가하여

2023년 3월 14일
·
0개의 댓글
·
post-thumbnail

[Kakao Cloud School] 10번째 회고록

Intro 레거시(Legacy)를 무시하지 말자. 요즘엔 Spring Framework의 확장 버전인 Spring Boot가 대중적으로 많이 쓰인다. 나 또한 이전까지 보다 빠르게 애플리케이션을 개발할 수 있고, 각종 설정들을 자동화할 수 있는 Spring Boot를 사용하고 있었고, Spring Boot로만 개발해야 한다는 생각이 있었다. 그런데 이는 크나큰 오산이었다. 교육과정을 통해 Spring Framework의 전반적인 생태계를 배우고 알게되면서 Spring Legacy에 대해선 기피하고 무시하며, Spring Boot만을 고집했던 내가 부끄러워졌다. Spring Boot의 설정 자동화라는 이점이 설정을 고쳐 사용해야 하는 시스템의 경우라면 오히려 독이 될수도 있다. Spring Legacy를 통해 원하는 설정들을 커스텀하여 사용하는게 더 나을 수도 있다. Legacy와 Boot 중에서 무엇이 좋고 무엇을 사용해야 좋다 라는 기준을 통해

2023년 1월 11일
·
0개의 댓글
·

스프링 프레임워크는 내 손에 [스프1탄]

스프1탄_개발환경구축 03. 개발환경 구축 JDK 8 Eclipse IDE MySQL 8(기타 가능) Tomcat 8 > =>한번에 가능한 것 : 전자정부 프레임워크 04. 개발환경 구축_설치 및 실행(Eclipse) eGovFrame-4.0.0-win-64bit.exe 압축 풀기 경로 C:\ 05. 개발환경 구축_Hello world 실행하기 File-New-Project-Spring Legacy Project-Spring MVC Project kr.spring.controller : controller -> context path(우리가 만든 프로젝트를 톰캣 서버가 접속하기 위한, 나중에 수정 가능) Servers-Tomcat 더블 클릭-HTTP/1.1 포트를 8081로 변경 후 저장(오라클이 8080이라서 충돌방지) 프로젝트를 Tomcat에 드래그로 등록 Modules를 확인해보면 Path가 /controller로 되어있음 /control

2022년 12월 21일
·
0개의 댓글
·

TIL 221219 (Spring MVC에서 파일 업로드)

TIL 221219 Spring MVC에서 파일 업로드 진행하기 dependency 추가 bean등록 진행 파일 업로드 테스트를 위해 upload.jsp 작성 요청에 대해 응답하기 위한 UploadController.java 작성 > 첫번째 케이스이다. 흐름을 한번 확인해보자. 사용자가 파일을 선택하고, 해당 파일을 submit하여 컨트롤러로 보내게 된다. 컨트롤러에서는 MultipartFile 자료형으로 file이라는 객체를 받게된다. 이후, File 객체와 UUID 객체를 이용해 로컬 저장소에 저장을 하게된다. >> 새로보는 객체 UUID UUID(universally unique identifier)란, 범용 고유 식별자로 네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법입니다. 쉽게 말해서, 파일 업로드

2022년 12월 19일
·
0개의 댓글
·
post-thumbnail

[Spring Legacy] 전자정부 HtmlTagFilter 와 JSP 를 같이 쓸 때 Html Entity 표기 문제

제목 및 내용에서 나오는 Spring Legacy 라는 표현은 Spring Boot 를 활용하지 않는 환경을 의미합니다. >현재 프로젝트는 Spring MVC 4 버전과 JSP 를 활용한 SSR 을 하고 있습니다. >그리고 부가적으로 전자정부프레임워크에서 제공하는 공통 유틸 코드를 사용 중입니다. >이번 글의 핵심인 HtmlTagFilter.java 도 그중 하나입니다. 💀 테스트 중 문제 발생 이번에 다른 팀의 서비스를 테스트할 기회가 생겨서 이것저것 만져봤다. 간단한 게시판이였다. (물론 내부적으로는 뭔가 복잡하게 돌아가는 거 같았다). 그런데 보다보니, 문제가 있었다. 테스트를 아래와 같은 절차로 해봤다. 테스트 절차 목록 화면으로 이동 목록 중 하나를 클릭하여 상세 조회 화면으로 이동 상세 조회 화면에 있는 특정 부분을 수정하고 싶어서 \[조회\] 버튼을 클릭 수정 화면으로 나오면

2022년 12월 14일
·
0개의 댓글
·

스프링 핵심 원리 - 객체 지향 설계와 스프링 #01

좋은 객체 지향 프로그래밍 다형성 역할, 구현으로 세상을 구분 ex01) 운전자,자동차(k3,아반떼,테슬라) 새로운 차가 출시해도 그차에대해서 클라이언트가 따로 공부할 필요는없다. ex02) 로미오(장동건,원빈) ,줄리엣(김태희,송혜교) 역할이 있고 배우는 변경(대체)가 가능하다. 이러한것이 변경에 용이하다는 의미이다. 자바 언어의 다형성을 활용 역할 = 인터페이스 구현 = 인터페이스를 구현한 클래스, 구현 객체 객체를 설계할 때 역할과 구현을 명확히 분리한다. 인터페이스를 안정적으로 잘 설계하는 것이 중요하다! SOLID SRP : 단일 책임 원칙 OCP : 개방 - 폐쇄 원칙 LSP : 리스코프 치환 원칙 ISP : 인터페이스 분리 원칙 DIP : 의존관계 역전 원칙 SRP 단일 책임 원칙 한 클래스는 하나의 책임만 가져야 한다 중요한 기준은 변경, 변경이 있을 때 파급 효과가 적으

2022년 8월 9일
·
0개의 댓글
·
post-thumbnail

[Spring-legacy] DispatcherServlet Url Pattern = / 로 하기 위한 작업 정리

https://lng1982.tistory.com/97?category=806339 를 참고해서 좀 더 요약해본 글입니다. Spring legacy 프로젝트를 하다보면 피할 수 없는게, tomcat web.xml 설정과 spring xml 설정입니다. 오늘은 이 중에서도 DispatcherServlet 의 url 패턴을 / 로 쓰기 위해서 저 두 xml 파일을 어떻게 설정해야 되는지 알아보겠습니다. >이걸 왜 해야 될까요? 결론부터 말하자면 *.do url 매핑을 하지 않기 위해서입니다. 많은 공공기관, 정부 관련 사이트에서는 아직도 .do 같은 url 경로를 사용합니다. > > > > 문제는 오늘날 REST API 를 통한 URL 설계가 보편화되었는데 REST

2022년 6월 27일
·
0개의 댓글
·
post-thumbnail

프로젝트 D-5

프로젝트 마무리단계; 비동기방식으로 게시판을 생성했다. ajax와 getJson 비동기 방식으로 불러온 List에서 지역, 분위기, 제한에 맞는 값을 DB에서 추출하는 작업. 간단하게 반복문으로 값을 받고자 for문을 사용하면 계속 도는 오류가 생겼다. js 를 각각 나눠서 짜놓았다. 받은 값에 따라 mapper에서 sql문을 입력하는 방식이 다르기에 동적 sql문을 사용했다. SQL developer에서 실행했을 때 정상적으로 값을 가져왔다. 임의의 값으로 넣어서. getJson의 url : 컨트롤러 조건을 입력했을때 페이지가 str = '' 리셋되지 않고 누적해서 쌓였기 때문에 오류수정 필요.

2022년 3월 26일
·
0개의 댓글
·
post-thumbnail

스프링 생명주기와 빈의 범위 #3

스프링 빈 생명 주기 인터페이스 InitializingBean 의 afterPropertiesSet() 메서드 빈 초기화 과정에서 호출된다 인터페이스 DisposableBean의 destroy() 메서드 빈 소멸 과정에서 호출 student.java MainClass.java 스프링 빈 범위 **

2021년 12월 22일
·
0개의 댓글
·
post-thumbnail

스프링 DI 와 IOC 개념 #2

DI와 IOC 개념 DI(dependency injection) : 의존 관계가 있을 외부에 객체(B,C) 를 생성해서 A로 외부에서 의존성을 주입해준다 내부에서 의존 관계가 아닌 의존을 주입해주는 형식 IOC(inverse of control) : 외부에서 생성한 객체를 IOC 컨테이너에서 관리해준다 제어의 흐름이 역전됨 Ex) bean(property,contstructor-arg)을 이용해서 외부객체를 만든다 Property 설정하기 -Myinfo.java -BmiCalculator.j

2021년 12월 22일
·
0개의 댓글
·
post-thumbnail

스프링의 기초개념, 개발 환경설정 #1

프레임 워크란? 특정 목적에 맞게 프로그랭밍을 쉽게 하기 위한 약속이다 어플리케이션을 제작할 때 공통적인 부분을 제공해줍니다 스프링 프레임워크란? Java 언어를 사용한다 국내에서 자바개발자들의 표준 프레임워크 다양한 어플리케이션을 쉽고 빨리 개발가능 스프링 레거시 환경구성. JDK 설치 환경 변수 설정 (내컴퓨터-> 속성 -> 설정 변경-> 고급-> 환경변수 ->시스템변수 새로만들기) 환경변수란? 운영 체제가 사용하는 변수이다 이클립스 다운로드,JAVA EE 버전으로 톰캣 설치 이클립스 마켓플레이스 에서 스프링 플러그인 설치(STS)/톱니바퀴모양은 부트이다

2021년 10월 26일
·
0개의 댓글
·
post-thumbnail

쿼리스트링이 아닌 URL을 변수로 받는 방법 in Spring Legacy Project

소개 Spring Legacy Project에서 쿼리스트링이 아닌 URL을 변수로 받는 방법에 대해 알아보겠습니다. Dynamic Web Project에서의 방법은 다음 링크를 참고해 주세요. 클라이언트가 URL에 mytime/임의값 을 입력할 시 임의값을 서버에서 변수로 받아 보여주도록 만들어 보겠습니다. @PathVariable을 이용해 보겠습니다. HomeController /src/main/java/com.mycompany.myapp/HomeController.java home.jsp 결과 ![](https://images.velog.io/images/ino5/post/

2021년 5월 1일
·
0개의 댓글
·
post-thumbnail

spring legacy - intellij 셋팅(Java 설정)

일단 기존 프로젝트를 좀 삭제하고 셋팅하겠다. IntelliJ에서 프로젝트를 삭제하기 위해 다음과 같이 한다. File -> Close Project -> 디렉토리에서 직접 삭제 다시 intellij를 열 때, Recent Projects에서 삭제할 프로젝트를 선택하고 delete 키를 누른다. 1. 프로젝트 생성 2. 자바 버전 수정 ![](https://images.velog.io/images/stella6767/post/301c1854-029c-43ac-b047-ceff24924db9/

2021년 4월 30일
·
0개의 댓글
·
post-thumbnail

[Spring Lagacy] war파일 톰캣에 배포하기

💖 준비 1. JDK 설치 [link] 환경변수 설정: 내PC > 시스템 속성 > 고급 시스템 설정 > 환경변수 > JAVAHOME에 설치한 jdk경로를 지정하고, path변수에 JAVAHOME시스템 변수를 추가! 2. 이클립스 설치 [link] 3. sts플러그인 다운 > 스프링 통합 개발 환경을 제공 설정파일 생성 및 스프링 컨테이너 x

2021년 4월 5일
·
0개의 댓글
·