반응형

Back-end 75

[Spring] 시큐리티 Security Form Login 인증 기본 설정 (스프링 3.0 버전 이상, 시큐리티 6.0 버전 이상, WebSecurityConfigurerAdapter 대체)

websecurityconfigureradapter 대체되는 방식으로 form login을 사용하는 기본 예제를 알려드립니다. 스프링 3.0 이상 버전은 스프링 시큐리티 6.0 버전 이상만 사용가능하게 되면서, 기존의 방식으로는 사용불가능합니다. 스프링 3.0 버전 이상부터는 websecurityconfigureradapter deprecated 됨에 따라서, @Bean을 사용하고 SecurityFilterChain를 리턴하는 함수로 사용해야합니다. 해당 함수는 아래 예제들에서 자세히 설명드리겠습니다. 1. Form Login 인증 아래 예제를 통해서 어떻게 동작하는지 살펴보도록 하겠습니다. 1-1. formLogin 기본적인 내용 입력하기 @Bean public SecurityFilterChain fi..

Back-end/Spring 2024.01.10

[Spring] 시큐리티 Security 의존성 추가 방법

1. 의존성 추가 1-1. build.gradle에 의존성 추가 dependencies{ implementation 'org.springframework.boot:spring-boot-starter-security' } 가장 먼저 해야할 것은 의존성을 추가하는 것입니다. 의존성을 추가하고, 스프링을 실행하게 되면 아래와 같이 패스워드를 제공해주는 로그를 확인 할 수 있습니다. 1-2. 정상적으로 의존 됐는지 확인하는 방법 그리고 크롬으로 localhost:8080/ 을 접속해보면 아래와 같이 로그인 창으로 바로 접속되는 것을 확인 할 수 있습니다. id는 user, password는 위에서 공유된 내용을 입력하면 본인이 만든 api를 사용할 수 있습니다. 2. 사용자 정의 보안 기능 구현 2-1. app..

Back-end/Spring 2024.01.10

[Spring] mybatis에서 카멜케이스로 자동 변환 옵션(application.yml)

1 사용해야하는 이유 보통 디비에서는 스네이크 표기법 credit_limit 자바에서는 카멜케이스 표기법 creditLimit 이런식으로 자주 사용하게 되는데 Mybatis에서 아무런 설정을 하지 않으면, 아래 처럼 select 문에 alias를 사용해서 직접 매핑해줘야한다. select credit_limit as 'creaditLimit' from customer 하지만, 몇개 변수라면 상관없지만 무수히 많은 변수가 존재한다면 정말 귀찮은 일이다. 2 . 설정 방법 application.yml에서 옵션으로 쉽게 변경가능하다. mybatis: configuration: map-underscore-to-camel-case: true #db는 스네이트 표기법, dto는 카멜케이스 사용 시 다른 블로그에서는..

Back-end/Spring 2024.01.08

[Error] No serializer found for class 해결방법

0. 현상 cohttp://m.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class 아래 캡쳐로 내가 responsebody로 리턴할 클래스가 없다는 표현이 나오는 에러가 발생했다. 1. 원인 - Controller에서 @ResponseBody를 사용해서 json으로 리턴하는 방식으로 구현했는데, @ResponseBody에서 객체를 json으로 변환하려면 객체의 클래스에 Getter가 존재해야한다. - Setter만 필요해 보였던 클래스라서 Getter를 따로 입력하지 않았는데, 그게 문제가 된 것 같다. 2. 해결방법 2-1. @Getter 추가 - 일반적인 방법은 Getter를 추가하면 됩니다. ..

Back-end/Spring 2024.01.05

[IntelliJ] Database에서 DTO/VO 자동 생성 방법

여러가지 플러그인이 있겠지만, 알고보니 인테리제이에서 기본으로 제공해주는 generater가 있었다. 0. 나의 피시 환경 상태 - Mysql 설치완료 - 인텔리제이에서 db 연결 완료된 상태 먼저 인텔리제이에서 Database가 연결이 되어있는 상태여야한다. 혹시 DB를 연결하지 않았더라면, 인텔리제이 화면 우측 상단에서 데이터 베이스를 연결하면된다. 아래 캡쳐 사진에서 + 버튼을 눌러서 연결하도록 하자 (기본적으로 본인이 사용하는 sql은 설치가 되어있어야 한다.) 1. DB -> DTO 파일 뽑아내기 1-1. 원하는 테이블의 우측을 클릭해서, Tools -> Scripted Extesions -> Generate POJOs.groovy 클릭 - 저장할 위치를 지정하라는 창이 뜨면, 자신이 원하는 위..

Back-end/Spring 2024.01.04

[Error] Could not find mysql:mysql-connector-java:.

Could not find mysql:mysql-connector-java:. 에러 발생 시, 해결방법을 공유드립니다. 0. 현상 아래와 같이 에러가 발생합니다. gradle에서 dependencies를 잘못 입력했다는 것을 직감할 수 있습니다. 1. 해결방법 mysql 버전에 따라서 implementation을 다르게 입력해야합니다. MySQL 8.0.31 이전 버전 implementation 'mysql:mysql-connector-java' MySQL 8.0.31 이후 버전 implementation 'com.mysql:mysql-connector-j' 자신의 버전에 맞게 mysql connector를 입력하시면 됩니다.

Back-end/Spring 2024.01.04

[Error] Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

0. 문제 현상 위처럼 에러가 발생한 경우, 해결하는 과정을 작성해봤습니다. 아마 이 문제에 직면한 분들은 모두 새롭게 스프링을 설정하는 상황이라서 발생할 겁니다. application.yml 에 datasource 정보를 입력하지 않아서 발생하는 문제입니다. 1. 해결 방법 application.yml 파일로 들어갑니다. (위치는 resource에 존재합니다.) 아래와 같이 datasource를 입력합니다. (본인의 db정보에 맡게 입력하세요) application.yml spring: datasource: url: jdbc:mysql://localhost:3306 username: root password: 어라? 그렇게 해도 에러가 발생하네요? (아래 에러가 발생하지 않으면, 다음 단계를 진행하실 ..

Back-end/Spring 2024.01.04

[Spring] 멀티 MQ 리스너 개발 내용

멀티 MQ 리스너 개발 내용 MQ 서버 추가 및 큐 이름 추가 되는 경우 아래 개발 내용 참조해서 추가하면 됩니다. 단일 MQ 서버 연결에서 다중 MQ 서버로 변경하는 내용을 정리했습니다. 1. MQ application.yml profile에 맞는 설정을 해야 합니다. 설명을 위해 default profile로 설명 드립니다. (dev, prd는 서버 주소에 맞게 모두 설정해야합니다.) 1-1. MQ 서버 주소를 yml 설정 ibm: mq: serverA: hostName: mqa.server.com port: 1961 queueManager: ABT.PSS channel: CLIENT.TO.QNAME userName: mpns password: appName: QNAME retryMaxInterval..

Back-end/Spring 2023.12.20

[Spring] 페이지 처리 Request, Response Dto 변수 항목

Controller 소스코드로 설명을 진행하려고 합니다. 아래 소스코드를 참조해주세요. 소스 코드 @GetMapping("/announcement/page") public Map getAnnouncePage(@RequestParam String reqPageNo, @RequestParam String reqPageRowCnt){ List announcementDtos = announcementMapper.getAnnouncementListWithSkill(); Map responseMap = new HashMap(); int pageNo = Integer.parseInt(reqPageNo); int pageRowCnt = Integer.parseInt(reqPageRowCnt); int totalCnt ..

Back-end/Spring 2023.07.16

[Mybatis] resultMap을 이용해서 쿼리 서브 정보 받아오기 (left join 정보 받아오기)

jpa를 사용하는 환경이면 @OneToMany를 사용해서 Dto안의 List를 반환하는 것을 쉽게 구현할 수 있다. 하지만, mybatis에서는 resultMap을 이용해서 서브정보를 쿼리로 반환해야 한다. (xml에 resultMap을 사용하는 예시를 바로 보려면 2-2. 쿼리작성 부터 보시면 됩니다.) 1. 요구사항 프론트에서 아래와 같은 json 포맷으로 요구했다. 메인 정보 안에 서브정보를 리스트로 반환해야 한다. 요구사항 JSON [ { "id": "an001", "title": "데브옵스개발팀에 초대합니다.", "content": "오세요", "skills": [ { "skillId": "sk001", "skNm": "java" }, { "skillId": "sk002", "skNm": "py..

Back-end/Spring 2023.07.15
반응형