Spring Boot的常用注解

在Spring Boot中,注解(Annotation)是核心特性之一,广泛用于配置和简化开发。以下是Spring Boot中一些常用的注解及其示例:

1. @SpringBootApplication

@SpringBootApplication是一个组合注解,包括了@Configuration@EnableAutoConfiguration@ComponentScan。它通常用在主类上,标识一个Spring Boot应用的入口。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

2. @RestController

@RestController结合了@Controller@ResponseBody,用于创建RESTful Web服务。

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @GetMapping("/hello")
    public String hello() {
        return "Hello, World!";
    }
}

3. @RequestMapping

@RequestMapping用于将HTTP请求映射到处理器方法上。可以用于类或方法级别。

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api")
public class ApiController {
    @RequestMapping(value = "/users", method = RequestMethod.GET)
    public List<String> getUsers() {
        return Arrays.asList("User1", "User2", "User3");
    }
}

4. @Autowired

@Autowired用于自动注入依赖关系。它可以应用于构造函数、方法或字段上。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class MyService {
    private final MyRepository myRepository;

    @Autowired
    public MyService(MyRepository myRepository) {
        this.myRepository = myRepository;
    }

    // 其他业务逻辑
}

5. @Service

@Service用于标识服务层的组件,Spring会自动将其注册为Bean。

import org.springframework.stereotype.Service;

@Service
public class UserService {
    public String getUserById(Long id) {
        // 业务逻辑
        return "User" + id;
    }
}

6. @Repository

@Repository用于标识数据访问层的组件,通常与数据库交互。

import org.springframework.data.jpa.repository.JpaRepository;

public interface UserRepository extends JpaRepository<User, Long> {
    // 自定义查询方法
}

7. @Configuration

@Configuration用于定义配置类,该类可以包含@Bean注解的方法,这些方法会返回Spring管理的Bean。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

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

8. @EnableAutoConfiguration

@EnableAutoConfiguration告诉Spring Boot基于类路径中的Jar依赖自动配置Spring应用上下文。通常不直接使用,而是通过@SpringBootApplication间接使用。

import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

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

9. @Component

@Component泛指Spring管理的组件。可以标记为Bean的类,Spring会自动扫描并注册这些类。

import org.springframework.stereotype.Component;

@Component
public class MyComponent {
    public void doSomething() {
        // 组件逻辑
    }
}

10. @Value

@Value用于注入外部化配置的属性值。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

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

    public void printAppName() {
        System.out.println(appName);
    }
}

这些注解极大地简化了Spring Boot应用的配置和开发工作,使得开发者可以专注于业务逻辑。

posted @ 2024-05-17 14:03  xingduo  阅读(8)  评论(0编辑  收藏  举报