본문 바로가기
java

자바 스프링을 시작하자 (java spring)

by Nick Black 2025. 4. 7.
반응형

안녕하세요 블로그를 꾸준하게 써야 하는데 그동안 시간이 없어 쓰질 못했네요

사실 저는 자바를 사용해본적은 없습니다 근데 한국에서 프로그래머로써 활동하기 위해서는 자바는 거의 필수인것 같더라구요

그러다보니 먹고 살기 위해서는 배워놔야 할것 같습니다

일단 잠깐 해봤는데 왜 사람들이 많이 쓰는지 알것 같더라구요

사용자가 신경을 거의 안써도 될정도로 편하게 되어 있더라구요

지금 쓰게될 내용들은 대부분 제가 배운것과 느낀것에 대한 내용일겁니다 또한 여러분들이 알고 있으면 좋은 내용들이구요

https://spring.io/quickstart

 

Spring | Home

Cloud Your code, any cloud—we’ve got you covered. Connect and scale your services, whatever your platform.

spring.io

package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class DemoApplication {
    public static void main(String[] args) {
      SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/hello")
    public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {
      return String.format("Hello %s!", name);
    }
}

 


 

✅ 애노테이션이란?

**애노테이션(Annotation)**은 자바에서 클래스, 메서드, 변수 등에 추가 정보를 제공하는 메타데이터입니다.
즉, 자바 코드에 "이건 이런 용도로 사용할 거야!" 하고 알려주는 일종의 설명서 or 명령어 같은 역할을 해요.


📌 주석과 애노테이션의 차이점

구분생김새역할
주석 (Comment) //, /* */ 사람이 읽는 설명용
애노테이션 (Annotation) @Something 컴파일러, 프레임워크에게 정보를 제공

🔸 주석은 "개발자에게 설명"
🔸 애노테이션은 "JVM 또는 프레임워크에게 명령"


🧪 자주 쓰는 애노테이션 예시

애노테이션설명
@Override 부모 클래스의 메서드를 재정의
@Deprecated 더 이상 사용되지 않는 메서드/클래스 표시
@SuppressWarnings 컴파일러 경고 억제
@Autowired 스프링에서 객체를 자동으로 주입
@SpringBootApplication 스프링 부트 애플리케이션 시작점

🛠 직접 애노테이션 만들기

애노테이션은 우리가 직접 정의해서 커스텀하게 사용할 수도 있어요!

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
    String value(); // 속성 정의
}
  • @Retention: 언제까지 유지할지 (컴파일, 런타임 등)
  • @Target: 어디에 붙일 수 있는지 (클래스, 메서드 등)

사용 예:

@MyAnnotation("example")
public void testMethod() {
    // ...
}

💡 애노테이션은 왜 중요할까?

  • 코드를 간결하고 명확하게 만들 수 있음
  • 자동화와 설정을 쉽게 처리할 수 있음
  • Spring, JPA, Lombok 등 주요 프레임워크에서 필수적으로 사용됨
  • 반복되는 코드를 줄이고 유지보수를 쉽게 해줌

✅ @SpringBootApplication이란?

@SpringBootApplication은 Spring Boot 프로젝트의 메인 클래스에 붙이는 핵심 애노테이션입니다.
사실 이 애노테이션은 3가지 애노테이션을 합친 복합 애노테이션이에요:

@SpringBootApplication
=
@Configuration
+ @EnableAutoConfiguration
+ @ComponentScan

1. @Configuration

이 클래스가 스프링의 설정 클래스임을 나타냅니다.
여기서 @Bean 등을 통해 수동으로 객체를 등록할 수 있어요.

@Configuration
public class AppConfig {
    @Bean
    public MyService myService() {
        return new MyService();
    }
}

2. @EnableAutoConfiguration

Spring Boot의 자동 설정 기능을 활성화합니다.
의존성에 따라 필요한 설정을 자동으로 등록해줘요.

예를 들어, spring-boot-starter-web이 있으면:

  • Tomcat
  • DispatcherServlet
  • WebMvcConfigurer
    등이 자동으로 설정됩니다.

3. @ComponentScan

현재 클래스가 위치한 패키지와 그 하위 패키지를 스캔하여
@Component, @Service, @Repository, @Controller 등의 클래스를 자동으로 Bean으로 등록합니다.

💡 주의!
@SpringBootApplication은 최상위 패키지에 위치시켜야 컴포넌트가 빠짐없이 등록됩니다.


🎯 실전 예시

@SpringBootApplication
public class MyApp {
    public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }
}

이 코드 한 줄로 다음이 한 번에 해결됩니다:

  • 웹 서버 자동 실행
  • 설정 클래스 등록
  • 컴포넌트 스캔 및 Bean 등록



🫘 Bean이란?

**Bean(빈)**은 Spring 컨테이너가 관리하는 객체를 말해요.

쉽게 말해,

"Spring이 대신 만들어주고, 대신 관리해주는 자바 객체"
Bean이라고 해요.

🔍 왜 Bean이 필요할까?

Spring은 객체를 직접 만들지 않고,
필요한 객체들을 Spring이 대신 생성하고 조립해줘요.
이렇게 함으로써 개발자는 **의존성 주입(DI)**을 쉽게 사용할 수 있어요.

📦 Bean 등록 방식

1. @Component를 이용한 자동 등록

@Component
public class MyService {
    public void hello() {
        System.out.println("Hello from MyService");
    }
}

이 클래스를 스프링이 자동으로 스캔해서 Bean으로 등록해줘요.
(전제: @ComponentScan 또는 @SpringBootApplication이 있어야 함)


🧠 정리하면

구성 요소설명
@Configuration Spring 설정 클래스
@EnableAutoConfiguration 자동 설정 활성화
@ComponentScan 컴포넌트 자동 스캔 및 등록

@SpringBootApplication은 이 세 가지를 한 줄로 묶어서 Spring Boot 애플리케이션을 간편하게 시작할 수 있도록 도와줍니다.




반응형

'java' 카테고리의 다른 글

🌐 RESTful API란? 쉽게 정리한 개념과 예시  (0) 2025.04.07