웹 개발/개념 정리

Spring annotation 정리

cha430 2025. 5. 9. 09:24

  • 자주 사용하는 어노테이션 정리

 

 

@Component
public class MyUtil {
    public String getToday() {
        return "2025-05-07";
    }
}

 

@Componant

 : 스프링이 자동으로 Bean으로 등록해주는 기본 어노테이션


@Service
public class UserService {
    public void registerUser(String name) {
        // 회원 가입 처리
    }
}

 

@Service

 : 비즈니스 로직을 담당하는 클래스에 사용. 실질적 처리 담당


@Repository
public class UserRepository {
    public void save(User user) {
        // DB 저장 로직
    }
}

 

@Repository

 : DB와 연결되는 DAO/Repository 클래스에 사용. 예외 처리를 자동으로 감싸줌


@RestController
public class HelloController {
    @GetMapping("/hello")
    public String sayHello() {
        return "안녕하세요!";
    }
}

 

@Controller / @RestController

 : @Controller는 JSP나 Thymeleaf 같은 View 템플릿 쓸 때 사용

 : @RestController는 JSON 응답을 보낼 때 사용


@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
}

 

@Autowired

 : 의존성 주입을 자동으로 해줌 (생성자 없이도 간단하게 생성자 주입 가능)


@Configuration
public class AppConfig {
    @Bean
    public PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

 

@Configuration + @Bean

 : 수동으로 Bean 등록 시 사용


 

@Component
public class AppInfo {
    @Value("${app.name}")
    private String appName;
}

 

@Value

 : application.properties 또는 .yml의 설정 값을 주입받을 수 있음


@Slf4j
@Service
public class LogService {
    public void doSomething() {
        log.info("무언가 처리 중...");
    }
}

 

@Slf4j ( Simple Logging Facade for Java )

 : 로그 찍을 때 편하게 사용 (Lombok 기능)

 


@GetMapping("/hello")
public String hello(@RequestParam String name) {
    return "Hello, " + name;
}
// 호출 예: /hello?name=홍길동

 

@RequestParam

 : 쿼리 파라미터, form 데이터 값 받아올 때 사용


@GetMapping("/user/{id}")
public String getUser(@PathVariable Long id) {
    return "User ID: " + id;
}
// 호출 예: /user/123

 

@PathVariable

 : 리소스 경로에 식별자를 넣어 동적으로 URL에 정보를 담을 수 있다

 : URL 경로의 중괄호 { } 안쪽에 변수를 담고 그 변수를 @PathVariable(" ")로 받아서 사용할 수 있다.

 

'웹 개발 > 개념 정리' 카테고리의 다른 글

절대 경로, 상대 경로  (0) 2025.05.14
index.html 이란 무엇인가 ?  (0) 2025.05.12
생성자  (0) 2025.03.29
Node.js  (0) 2025.03.26
데이터베이스 최적화 방법  (0) 2025.03.26