Springboot - java -version, port 구성 ,Spring Boot Devtools ,디렉터리, 어노테이션
본문 바로가기

컴퓨터공부/Springboot

Springboot - java -version, port 구성 ,Spring Boot Devtools ,디렉터리, 어노테이션

by Life & study 2023. 10. 24.
반응형

Springboot - java -version, port 구성 ,Spring Boot Devtools ,디렉터리, 어노테이션

 

Springboot -

 

 

쉽게 말해 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고 생각하면 된다.

 

-보안에대한 측면

 

프링부트는 튼튼한 웹 프레임워크다. 예를 들어 SQL 인젝션, XSS(cross-site scripting), CSRF(cross-site request forgery), 클릭재킹(clickjacking)과 같은 보안 공격을 기본으로 막아 준다. 즉, 스프링부트를 사용하면 이런 보안 공격에 대한 코드를 여러분이 짤 필요가 없다.

 

보안정리,

- SQL 인젝션은 악의적인 SQL을 주입하여 공격하는 방법이다.
- XSS는 자바스크립트를 삽입해 공격하는 방법이다.
- CSRF는 위조된 요청을 보내는 공격 방법이다.
- 클릭재킹은 사용자의 의도하지 않은 클릭을 유도하는 공격 방법이다.

 

 

java -version

 

-java 11버전에 대한 생각

 

Java 11에서는 람다 표현식과 스트림 API를 모두 지원합니다.

람다 표현식과 스트림 API는 Java 8에서 처음 도입되었으며, 이후 버전들에서도 계속해서 사용할 수 있습니다. 따라서 Java 11 환경에서는 람다와 스트림을 포함한 모든 Java 8의 기능들을 사용하실 수 있습니다.

또한, Java 11은 LTS(Long Term Support) 버전이므로 안정적인 지원이 보장됩니다. 이러한 LTS 버전은 주요 업데이트 사이의 '안정화' 단계로 간주되며, 일반적으로 더 오래 지원되고 넓게 사용됩니다.

따라서 현재 시스템에 설치된 Java의 버전이 "11.0.17"인 경우, 람다 표현식과 스트림 API를 비롯하여 그 이후에 추가된 여러 기능들을 자유롭게 사용할 수 있습니다.

 

 

port는 어떻게 구성되어있나?

 

TCP/IP에서는 0에서 65535까지의 포트 번호를 사용할 수 있습니다. 그러나 0번 포트는 특별한 의미를 가지고 있으며, 일반적으로 애플리케이션에서 직접 사용하지 않습니다. 또한, 1~1023번까지의 포트는 잘 알려진 포트(Well-Known Ports)로서 특정 서비스가 할당되어 있는 경우가 많습니다.

따라서 server.port=0001과 같이 설정하는 것은 권장되지 않습니다. 이런 설정을 하면, 해당 서버가 실행되는 시스템에서 이미 1번 포트를 사용하고 있는 서비스와 충돌할 수 있습니다. 뿐만 아니라 일반적으로 관리자 권한이 필요한 경우도 많기 때문에 문제가 될 수 있습니다.

일반적으로 개발 환경에서 웹 애플리케이션을 실행할 때에는 1024 이상의 번호 중 충돌 가능성이 적은 번호를 선택하는 것이 좋습니다. 예를 들어, Spring Boot의 기본값인 8080포트나 그 외 다른 비슷한 값들을 선택하는 것이 좋겠습니다.

 

결론,

1024 이상의 번호 중 충돌 가능성이 적은 번호를 선택하기

 

    /build.gradle]
dependencies {}  으로 Spring Boot Devtools 설치

 

 //데브 툴킷으로써 자동으로
    //Spring Boot Devtools를 설치하면 서버 재시작 없이도 클래스 변경시 서버가 자동
    developmentOnly 'org.springframework.boot:spring-boot-devtools'

 

 

 

디렉터리의 이해도

 

-resources 디렉터리

자바 파일을 제외한 HTML, CSS, Javascript, 환경파일 등을 작성하는 공간

-templates 디렉터리

HTML 파일 형태로 자바 객체와 연동되는 파일이다. templates 디렉터리에는 SBB의 질문 목록, 질문 상세 등의 HTML 파일

-static 디렉터리
static 디렉터리는 SBB 프로젝트의 스타일시트(.css), 자바스크립트(.js) 그리고 이미지 파일(.jpg, .png) 등을 저장하는 공간이다.


-application.properties 파일
application.properties 파일은 SBB 프로젝트의 환경을 설정한다. SBB 프로젝트의 환경, 데이터베이스 등의 설정을 이 파일에 저장한다.

-src/test/java 디렉터리
src/test/java 디렉터리는 SBB 프로젝트에서 작성한 파일을 테스트하기 위한 테스트 코드를 작성하는 공간이다. JUnit과 스프링부트의 테스팅 도구를 사용하여 서버를 실행하지 않은 상태에서 src/main/java 디렉터리에 작성한 코드를 테스트할 수 있다.

-build.gradle 파일
그레이들(Gradle)이 사용하는 환경 파일이다. 그레이들은 그루비(Groovy)를 기반으로 한 빌드 도구로 Ant, Maven과 같은 이전 세대 빌드 도구의 단점을 보완하고 장점을 취합하여 만든 빌드 도구이다. build.gradle 파일에는 프로젝트를 위해 필요한 플러그인과 라이브러리 등을 기술

 

 

 

 

@어노테이션

 


@Controller: 이 어노테이션은 해당 클래스가 Spring MVC 컨트롤러임을 나타냅니다. 일반적으로 데이터를 Model에 바인딩하고 View 이름을 문자열로 반환하여, View가 렌더링하는 데 사용됩니다.

java
@Controller
public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello World");
        return "hello";
    }
}

 

 

@RestController: 

이 어노테이션은 Spring 4.0부터 도입된 것으로, 해당 클래스가 RESTful 웹 서비스 컨트롤러임을 나타냅니다. 기본적으로 모든 메서드에 @ResponseBody가 적용된 것과 같아, HTTP 응답 본문에 직접 데이터를 작성합니다.

java
@RestController
public class MyRestController {
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World";
    }
}

 

RESTful 이란?

 

RESTful 웹 서비스

에서는 "리소스"라는 개념이 중요한데, 이 리소스는 네트워크를 통해 접근할 수 있는 모든 것(예: 이미지, 동영상, 문서 등)을 의미하며 URI(Uniform Resource Identifier)로 식별됩니다.

 

 

 

 

 

반응형

댓글