ㅁ 패키지 생성
- com.br.boot안에 현재 donfig, controller 패키지가 있다.
- com.br.boot.dao
- com.br.boot.dto
- com.br.boot.handler
- com.br.boot.interceptor
- com.br.boot.scheduler
- com.br.boot.service
- com.br.boot.util
- 마음대로 하지 복사하지말고 순서대로 복사한다. import~
- package com.br.spring.dto;를 package com.br.boot.dto;로 바꾼다.
ㅁ 롭복
- 생성자가 안보인다. 롬복은 추가만 하면되는게 아니고 설치까지 해줘야한다.
- maven dependencies를 열어본다.
저 경로로 간다.
다른 버전도 있을 것이다.
- C:\Users\GD\.m2\repository여기에 다운된다고 했었다.
- 나머지 체크한 상태로 설치하면 덮어씌워져서 기존에 되던게 안될수도 있다.
sts4만 체크해서 인스톨한다.
- 설치했다고 바로 되는게 아니고 sts를 끅 ㅗ재실행 해야한다.
=================================================================
ㅁ
- util 패키지 안의 클래스를 util에 복붙한다.
그리고 패키지 선언부를 com.br.spring.util;에서 com.br.boot.util;로 바꾼다.
- 근데 PagingUtil은 빨간줄 뜬다.
이거 import할 때 com.br.spring.dto.PageInfoDto;를 했었다.
다시 ctrl shift o로 import하면 boot로 바뀐다.
- 근데도 builder에 빨간줄이 뜨느 ㄴ경우.
반영이 안된거일수있으니 프로젝트 클린한다. 아니면 시간지나면 사라질 때도 있다.
ㅁ
-dao
- 이것도 imp;ort한게 많다.
- package선언부 수정하고 다시 import한다.
- 참고로 아직 마이바티스 연동을 안해서 sqlSession과 RowBounds쪽은 빨간줄이 뜬다. 당연히 지금은 import가 안되는게 맞다.
- 그래서 dao의 클래스들은 빨간 x가 뜨는게 맞다.
ㅁ
- 서비스도 - package선언부 수정하고 다시 import한다.
- 얘는 ㅉ빨간거 안뜨느게 맞다.
ㅁ 컨트롤러
- mvc 빼고 가져온다.
- package선언부 수정하고 다시 import한다.
- 파일 유틸은 logback꺼가 아니라 내가 만든 클래스다. 이 패키지에의.
- 참고로 멤버컨트롤러에만 빨간줄.
비크립트 때문에 스프링 시큐리티에서 제공하는 클래스. 아직 스프링 시큐리티 설정을 안해서 빈등록을 안했다. 그래서 빨간줄이 뜬다.
비크립트 패스워드 인코더 설정진행할 것이다.
멤버컨트롤러는 오류가 있는게 맞다.
- 핸들러 인터셉터 스케줄러는 나중에 설정할때 하나씩 복사.
일단 mvc관련한 것만 했따.
=========================================================================================
ㅁ 멤버ㅌ컨틀롤러 비크립트샢스워드
- 멤버컨트롤러
- spring-securitet.xml
<?xml version="1.0" encoding="UTF-8"?>
<bean class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" id="bcryptPwdEncoder"></bean>
</beans>
ㅁ pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.2.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.br</groupId>
<artifactId>boot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>boot</name>
<description>Demo project for Spring Boot</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- jsp 사용을 위한 jasper 라이브러리 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<!--<version>11.0.0</version>-->
</dependency>
<!-- jstl 사용을 위한 라이브러리들 -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<!--<version>6.1.0</version>-->
<!--<scope>provided</scope>-->
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<!--<version>3.0.2</version>-->
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<!--<version>3.0.1</version>-->
</dependency>
<!-- BCryptPasswordEncoder 사용을 위한 라이브러리 -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<!--<version>5.7.5</version>-->
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
- 기본적으로 ~시큐리티는 기본적으로 ㅇ추가가 안된다.
하단에 BCryptPasswordEncoder 사용을 위한 라이브러리 구문을 작성한다.
- "securi"를 입력하면 자동완성이 된다. spring-security-core를 선택한다.
근데 자동완성이 이상하게 뜨면 경우가 있다. 네트워크문제라고 추정됨. 그럴땐 일일이 작성한다.
- 버전에 노란줄이 뜬다. 지운다.
- 이 구문은 Maven Repository에서도 추가할수 있다. dependency 태그를 복붙하고 그냥 버전만 빼면 된다.
- ~~ 빈으로 등록해줘야 한다.
스프링에서는 xml파일에 등록을 했지만
부트에서는 xml파일을 안써서 자바방식으로 등록을 해줘야 한다.
ㅁ com.br.boot.config 패키지에 SecurityConfig 일반 클래스를 만든다.
package com.br.boot.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
@Configuration
public class SecurityConfig {
/*
* spring-security.xml에서 BCryptPasswordEncoder 빈등록 구문 대체
* <bean class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" id="bcryptPwdEncoder" />
*/
@Bean
BCryptPasswordEncoder bcryptPwdEncoder() {
return new BCryptPasswordEncoder();
}
}
- @Configuration
- @Bean 메소드 하나당 빈 등록 하나다.
public은 생략한다. 부트에서는 빈등록하는 메소드는 public을 생략한다.
- 반환형은 내가 등록하고자하는 빈의 타입.
BCryptPasswordEncoder가 내가 등록하고자하는 빈의 타입이다.
- 빈의 이름은 메소드명이다.
- return으로 우리가 직접 생성해서 반환하듯이 해준다.
- 근데 여기서 import하는데 엄청 오래걸리는 문제 발생.
무언가 꼬인건데 강종하면 더 꼬여서 기다려본다. 그래도 너무 안되면 강종한다.