전체 글 55

[Spring]Model 객체와 @ModelAttribute

Spring Model 객체 Spring MVC(Model-View-Controller) 아키텍처의 일부로, Controller에서 View로 데이터를 전달하는 데 사용됩니다. Controller에서 처리한 데이터나 비즈니스 로직의 결과를 Model 객체에 추가하면, Spring MVC는 이 Model 객체를 사용하여 View를 렌더링할 때 필요한 데이터를 제공합니다. 예시) html 작성 controller @PostMapping("/board/write") public String boardWrite(String title, String content, Model model) { model.addAttribute("title", title); model.addAttribute("content", co..

Java/Spring 2024.04.02

[Spring]AOP

Spring AOP(Aspect Oriented Programming)는 크로스 커팅 관심사를 분리하여 모듈성을 높이는 프로그래밍 패러다임입니다. 이는 코드를 수정하지 않고 기존 코드에 추가적인 동작을 추가함으로써 이루어집니다. 이는 특히 로깅, 트랜잭션 관리, 보안 등과 같은 기능에서 유용합니다. 크로스 커팅 관심사(Crosscutting Concerns) 분리 여러 클래스나 메소드에 걸쳐 반복적으로 나타나는 코드를 별도의 모듈로 분리하자는 개념을 의미합니다. 예를 들어, 로깅, 보안, 트랜잭션 관리 등의 기능은 여러 클래스와 메소드에서 공통적으로 필요로 하는 기능입니다. 이런 기능들을 각각의 클래스나 메소드에서 구현하게 되면, 코드의 중복이 발생하고 유지보수가 어려워집니다. 이런 문제를 해결하기 위해..

Java/Spring 2024.03.28

[Spring]JdbcTemplate

JdbcTemplate JdbcTemplate은 Spring Framework의 일부로, JDBC 작업을 단순화하고 일반적인 오류를 방지하는 데 도움이 되는 중앙 클래스 JDBC API를 사용하지만 JDBC API의 많은 문제를 제거하는 강력한 메커니즘이며, 트랜잭션 관리 및 리소스 관리 등을 자동으로 해주어 JDBC를 매우 편리하게 사용할 수 있게 도와줌 하지만 동적 쿼리문을 해결하기 어렵다. 사용예시 DB는 h2 사용 application.properties spring.datasource.url = jdbc:h2:tcp://localhost/~/test spring.datasource.driver-class-name=org.h2.Driver spring.datasource.username=sa Sp..

Java/Spring 2024.03.28

[Spring] 스프링 빈 등록하는 방법

컴포넌트 스캔 @Component 이있으면 스프링 컨테이너에 자동 등록 @Controller, @Service, @Repository 는 @Component가 포함되어 있어 스프링 컨테이너에 자동으로 등록됨. @Autowired 를 사용하여 스프링과 연관된 객체를 컨테이너에서 찾아서 주입해줌(Dependency Injection : 의존성 주입). 자바 코드로 등록 @Configuration public class SpringConfig { @Bean public TestService testService() { return new TestService(testRepository()); } @Bean public TestRepository testRepository() { return new TestRe..

Java/Spring 2024.03.27

[Intellij]단축키

클래스 테스트 코드 생성 ctrl + shift + T 패키지도 만들어줌 특정부분 추출후 메서드 만들기 (refactor 기능) ctrl + alt + shift + T 메서드 만들려는 부분을 드래그 하고 후 Extract Method하면 메서드 만들어줌 ex) public Long join(Member member) { memberRepository.findByName(member.getName()) .ifPresent(m -> { throw new IllegalStateException("이미 존재하는 회원"); }); memberRepository.save(member); return member.getId(); } public Long join(Member member) { validateDupl..

IDE/Intellij 2024.03.27

[Nodejs] PM2 사용법

pm2는 서버가 꺼지거나 프로세스가 종료되거나 코드가 수정되었을 때 자동으로 재시작 해줌 1. pm2 설치 npm i pm2 -g 2. 실행 pm2 start main.js pm2 start main.js --watch --ignore-watch="data/*" --no-daemon --watch ; 수정할 때 마다 자동으로 재시작 --ignore-watch : 파일 수정, 추가 시 안껏다 켜짐 --no-daemon : 로그 확인 pm2 start main.js --watch --ignore-watch="data/* lib/*" --no-daemon -ignore-watch 디렉토리를 여러개 하고 싶으면 디렉토리를 여러개 하고 싶으면 "data/* lib/*" 이런식으로 하면 됨. 3. 종료 종료하고 싶..

Javascript/nodejs 2024.03.19

[Typescript] 타입스크립트로 작성되지 않은 패키지 import할때 해결방법

패키지를 import했는데 Cannot find module ' ' or its corresponding type declarations. 해결방법 GitHub - DefinitelyTyped/DefinitelyTyped: The repository for high quality TypeScript type definitions. GitHub - DefinitelyTyped/DefinitelyTyped: The repository for high quality TypeScript type definitions. The repository for high quality TypeScript type definitions. - DefinitelyTyped/DefinitelyTyped github.com 사이트..

[Typescript] js 소스코드를 typescript처럼 사용하기 (JSDOC)

js 소스코드에 주석으로 @ts-check 를 넣으면 typescript 처럼 소스코드를 체크해줌 // @ts-check vscode에서 /** 하고 엔터를 하면 자동완성이 되는데 파라미터와 return 타입을 정할 수 있다. /** * Initializes the project * @param {object} config * @param {boolean} config.debug * @param {string} config.url * @returns boolean */ export function init(config) { return true; } init 함수를 사용할 때 설명을 볼 수 있다.