본문 바로가기
Spring

[스프링부트] 3. 패키지 안 클래스들 migration

by moca7 2024. 11. 6.

 

 

 

 

 

ㅁ 패키지 생성

 

 

- 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하는데 엄청 오래걸리는 문제 발생.

무언가 꼬인건데 강종하면 더 꼬여서 기다려본다. 그래도 너무 안되면 강종한다.