전체 글 201

Repository와 Impl

[ @Repository와 Impl 차이 ]→ 둘은 같지 않다.@Repository : DAO임을 스프링에 알려주는 어노테이션 즉, DAO(데이터 접근 객체)에 달아주는 어노테이션이다!@Repositorypublic class MemberDAO { public MemberVO getOne(MemberVO vo) { // DB에서 SELECT 실행 }} 2. Impl : 인터페이스(Service)를 구현한 클래스 이름 뒤에 붙이는 네이밍. 주로 Service 구현체 이름에 붙는다.public class MemberServiceImpl implements MemberService { @Autowired private MemberDAO memberDAO; // DAO 사용 ..

웹 개발 2025.04.27

Eclipse와 VSCode

관리자 페이지를 구현하면서 jsp 파일과 css, js를 다뤄야 해서 이클립스를 다루고 있다. 이클립스가 자꾸 오류로 종료가 되어서 VSCode로 이중 작업을 하고 있는데, VSCode로 실행한 페이지에는 코드 수정 시 바로 변경이 적용되나, 이클립스로 실행한 페이지에는 바로 반영이 되지 않아서 찾아보았다. 찾아본 결과는 둘이 적용 시점이 다르다는 것이다. 이클립스는 기본적으로 정적 파일들을 메모리에 로딩해놨다가 서버 재시작할 때만 다시 읽어오는 반면에,VSCode + Live Server는 파일 저장할 때 바로 디스크에서 읽어와서 브라우저에 실시간으로 반영해준다.

웹 개발 2025.04.26

Map 등을 DI 할 수는 없을까?

Spring Boot에서 Map 등을 private 멤버변수를 통해 “DI”해서 사용할 수는 없는가? ⇒ 불가능하다. 일반 자바 컬렉션(List, Map) 등은 DI 대상이 아니다.Spring에서 @Autowired를 사용해서 의존성을 주입하려면 주입받을 객체는 Spring Bean으로 등록되어 있어야 하는데, Map/ List / Set / String / Integer 등은 단순한 자바 객체(POJO)이고, 직접적으로 스프링 컨테이너에 Bean으로 등록되어 있지 않기 때문에 @Autowired를 붙여 사용할 수 없다.Map을 꼭 DI해야할 일이 있다면 @Bean을 붙여 직접 등록하는 것이 낫다.하지만 보통 필요한 곳에서 직접 new HashMap()해서 사용하는 경우가 대부분이다. 특히 컨트롤러 ..

웹 개발 2025.04.25

XML 파일로 AOP 적용하기

[문제]1. around board S_ALL member S_ALL 수행시간을 비교하는 공통로그를 호출2. before, after 회원가입 전후로 로그 출력 before >> 메서드명을 출력 after >> 인자를 출력(누가 가입했는지 출력) 3. returning, throwing 로그인한 회원이 관리자라면, 관리자가 로그인했습니다. 라고 출력 만약 일반회원이 로그인했다면 예외 발생 그리고 그 예외가 발생했음을 알리는 공통로그를 출력 공통적인 기능 즉, 횡단 관심이므로 따로 Advice로 분리하는데 모든 문제가 다 로그를 출력하는 공통적인 역할을 하기 때문에 하나의 클래스로 작성했다.→ 코드의 응집도 향상. 1. LogAdvicepackage c..

웹 개발 2025.04.24

AOP

AOP(Aspect Oriented Programming)란? [AOP : 관점 지향 프로그래밍 (Aspect Oriented Programming)] AOP : 관심사를 분리하여 코드 중복 없이 처리하는 프로그래밍 기법.각 핵심 기능 메서드마다 중복되는 공통 작업들이 있다. 예를 들면 로깅, 보안, 권한 확인, 트랜잭션, 예외 처리 등. 이러한 공통 기능을 여러 클래스에 매번 넣으면중복 코드 증가 / 2. 유지보수 어려움 / 3. 핵심 로직이 흐려지기 때문에AOP는 이러한 공통 관심사들을 별도로 분리해서 한 곳에서 관리하도록 하는 것을 말한다. ※ AOP 미적용 시 : 코드 사이에 로그가 섞여있어서 핵심 로직을 흐리고 가독성이 좋지 않음public void 회원가입() { System.out...

웹 개발 2025.04.23

이메일 API 코드를 Spring Boot로 변환할 때 경고 처리

다음과 같은 코드가 있었는데 원래 60라인에 노란색 줄이 떴었다. 확인해보니 데이터가 확실히 Map 형식인지 확인할 수 없다는 경고. 그래서 @SuppressWarnings("unchecked")를 추가해줬는데 이때 response와 callback 2가지가 뜨길래 궁금해서 찾아봤다. [ @SuppressWarnings("unchecked") ]※ suppressWarnings : 경고가 제거되지만 검사 없이 강제 캐스팅 하는 방식이다. 응답 구조가 항상 같다면 사용해도 된다. => 해당 코드에서 profileMap.get(”response”)는 항상 Map 형태이므로 사용해도 된다. [ @SuppressWarnings("unchecked")에서 response와 callback 차이 ] callback..

웹 개발 2025.04.22

JSP/Servlet → Spring Boot 이관 중 배운 점

Spring Boot로 코드를 이관하면서 궁금하거나 헷갈리는 점들을 여럿 찾아봤는데 그걸 정리해서 올려보려고 한다. 1. Maven 프로젝트는 무엇이고, pom.xml은 뭐고, pom.xml에 json-simple 의존성은 왜 추가해야 하는가? Maven 프로젝트 : 자바에서 외부 라이브러리를 자동으로 관리해주는 도구. 예전 중간 프로젝트 때는 수동으로 .jar 파일을 다운로드 해서 /lib 폴더에 넣었는데 Maven은 이걸 자동으로 해준다. 즉, pom.xml에 com.googlecode.json-simple json-simple 1.1.1처럼 작성하면, Maven이 알아서 인터넷에서 json-sample을 받아서 프로젝트에 설치해준다. json-simple 의존성을 추가해야 하는 이유는JSON..

웹 개발 2025.04.21

web.xml, applicationContext.xml

1. XML이란?: 데이터 구조를 전달할 때 사용. 데이터를 담거나 프로그램 설정을 담고 있다. 2. 스프링에서 XML을 사용하는 이유스프링은 객체(Bean)을 관리하는데, 어떤 객체를 만들고 어떤 객체에 어떤 걸 주입할지(의존성) 등을 XML 파일로 설정할 수 있다.예시2. applicationContext.xml : 스프링이 사용할 객체 설정스프링 설정 파일(Bean, DI, 컴포넌트 스캔 등) (=Bean 객체)보통 src/main/resources 또는 WEB-INF 아래 위DispatcherServlet이 사용하는 스프링 전용 설정 파일. Bean 등록, 어노테이션 붙은 클래스 찾기Bean 등록하는 역할예시3. web.xml : 웹 전체의 시작점 설정 (예: DispatcherServlet)웹..

웹 개발 2025.04.20

DB 이관

중간 프로젝트 때는 MYSQL을 이용했지만 이번에는 ORACLE을 이용하려고 한다.그러기 위해서는 DBMS 이관이 필요하다. MYSQL → ORACLE 테이블 생성문을 수정하면서 가장 크게 고려한 점은 DBMS 간 호환성 및 이식성 !!DBMS를 저렴한 쪽으로 이관하는 경우가 많기 때문에 최대한 변경사항 없이 옮길 수 있도록 작성하는 것이 좋다. 그래서 최대한 SQL 표준 함수를 사용하고 ORACLE이나 MYSQL에서만 사용하는 AUTO_INCREMENT, NOW 등은 사용하지 않으려고 했다.1. VARHCAR2 대신 VARCHAR 사용 (이식성호환성 고려) 오라클에서는 VARCHAR2를 사용하도록 권장하고 있는 것 같지만 다른 DBMS에는 없어서 호환성이 좋지 않음.그래서 VARCHAR 사용 2. 관리..

웹 개발 2025.04.19