@RestController📌 설명
@Controller와 @ResponseBody를 결합한 어노테이션입니다. ResponseBody에 매핑되어 JSON 형식으로 변환됩니다.📌 예제 코드
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/user")
public User getUser() {
return new User(1L, "John Doe", "john@example.com");
}
}
📌 결과
{
"id": 1,
"name": "John Doe",
"email": "john@example.com"
}
@Controller📌 설명
📌 예제 코드
@Controller
public class HomeController {
@GetMapping("/")
public String home() {
return "home"; // home.html 또는 home.jsp를 반환
}
}
@RequestMapping📌 설명
📌 예제 코드
@RestController
@RequestMapping("/api")
public class ApiController {
@RequestMapping("/hello")
public String hello() {
return "Hello, World!";
}
}
@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping📌 설명
📌 예제 코드
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return new User(id, "John Doe", "john@example.com");
}
@PostMapping
public User createUser(@RequestBody User user) {
return user; // 생성된 사용자 반환
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
user.setId(id);
return user;
}
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable Long id) {
return "User " + id + " deleted";
}
}
@RequestBody📌 설명
📌 예제 코드
@RestController
@RequestMapping("/users")
public class UserController {
@PostMapping
public User createUser(@RequestBody User user) {
return user;
}
}
📌 요청 예시 (JSON 데이터)
{
"name": "John Doe",
"email": "john@example.com"
}
@RequestParam📌 설명
📌 예제 코드
@RestController
@RequestMapping("/search")
public class SearchController {
@GetMapping
public String search(@RequestParam String keyword) {
return "Searching for: " + keyword;
}
}
📌 요청 예시
GET /search?keyword=Spring
@PathVariable📌 설명
📌 예제 코드
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
}
📌 요청 예시
GET /users/10
@Component📌 설명
@Service, @Repository, @Controller 등은 @Component를 확장한 것입니다. 📌 예제 코드
@Component
public class MyComponent {
public String sayHello() {
return "Hello from MyComponent!";
}
}
@Service📌 설명
@Component와 동일하게 빈으로 등록됩니다. 📌 예제 코드
@Service
public class UserService {
public String getUserName() {
return "John Doe";
}
}
@Repository📌 설명
@Component와 동일하지만, 예외 변환 기능을 제공합니다. 📌 예제 코드
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
}
@Autowired📌 설명
📌 예제 코드 (생성자 주입 권장)
@Service
public class UserService {
private final UserRepository userRepository;
@Autowired
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
}
@Transactional📌 설명
📌 예제 코드
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
@Transactional
public void updateUser(Long id, String name) {
User user = userRepository.findById(id).orElseThrow();
user.setName(name);
userRepository.save(user);
}
}
@Configuration📌 설명
📌 예제 코드
@Configuration
public class AppConfig {
@Bean
public MyComponent myComponent() {
return new MyComponent();
}
}
이와 같이 Spring에서 자주 사용되는 어노테이션을 설명과 함께 예제 코드로 정리했습니다.
추가로 궁금한 어노테이션이 있으면 질문해 주세요! 🚀