springboot常用注解汇总

一. 控制器相关注解

@RestController:
表示该类是一个 RESTful Web 服务的控制器,将返回值转换成 JSON 格式并响应给客户端

@RequestMapping:
映射请求的 URL 地址和方法,用在类或方法上,可以设置 URL 地址、请求方法、请求参数等

@RequestParam:
获取请求参数的值。用在方法的参数上,可以设置参数名称、是否必须、默认值等

@PathVariable:
获取 URL 中的占位符参数,用在方法的参数上,可以设置参数名称、是否必须、默认值等

@RestController
@RequestMapping("/api")
public class UserController {
 
    @Autowired
    private UserService userService;
 
    @GetMapping("/users")
    public List<User> getUsers() {
        return userService.getAllUsers();
    }
 
    @GetMapping("/users/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);
    }
 
    @PostMapping("/users")
    public ResponseEntity<?> createUser(@RequestBody User user) {
        userService.saveUser(user);
        return new ResponseEntity<>(HttpStatus.CREATED);
    }
 
    @PutMapping("/users/{id}")
    public ResponseEntity<?> updateUser(@PathVariable Long id, @RequestBody User user) {
        User existingUser = userService.getUserById(id);
        if (existingUser != null) {
            userService.updateUser(user);
            return new ResponseEntity<>(HttpStatus.OK);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }
 
    @DeleteMapping("/users/{id}")
    public ResponseEntity<?> deleteUser(@PathVariable Long id) {
        User existingUser = userService.getUserById(id);
        if (existingUser != null) {
            userService.deleteUser(id);
            return new ResponseEntity<>(HttpStatus.NO_CONTENT);
        } else {
            return new ResponseEntity<>(HttpStatus.NOT_FOUND);
        }
    }
}


代码中使用@RestController注解,表明这是一个RESTful Web服务。@RequestMapping注解指定了基础URL路径,用于处理HTTP请求。使用了依赖注入(@Autowired)来获取UserService,用来处理User实体的业务逻辑。在类中,定义了一些处理HTTP请求的方法:GET、POST、PUT和DELETE。

类中使用了不同的注解来指定它们的HTTP路径和HTTP方法,@GetMapping注解指定了用于处理HTTP GET请求的路径,@PostMapping指定了用于处理HTTP POST请求的路径,还使用了一些Spring MVC特定的注释,如@PathVariable和@RequestBody,用于获取请求参数或请求体的值。它们也使用了ResponseEntity类来封装HTTP响应,以及HttpStatus枚举来表示HTTP状态码。

二. 自动装配相关注解

@Autowired:
自动装配一个 Bean 对象,用在字段、方法、构造器上,可以设置是否必须、Bean 的名称等

@Value:
获取配置文件中的属性值,用在字段、方法、构造器上,可以设置属性名称、默认值等

@Component
public class AdminComponent {
 
    @Autowired
    private AdminService adminService;
 
    @Value("${system.config}")
    private String sysConfig;
 
    public void getCongfig() {
        System.out.println("system config is " + sysConfig);
    }
}

三. 组件相关注解
@Component:
表示一个组件类,会被自动扫描并加载到 Spring 上下文中

@Service:
表示一个业务服务类,会被自动扫描并加载到 Spring 上下文中

@Repository:
表示一个数据访问类,会被自动扫描并加载到 Spring 上下文中

@Repository
public class UserRepositoryImpl implements UserRepository {
 
    @Autowired
    private SessionFactory sessionFactory;
 
    @Override
    public User findById(Long id) {
        Session session = sessionFactory.getCurrentSession();
        return session.get(User.class, id);
    }
 
    @Override
    public void save(User user) {
        Session session = sessionFactory.getCurrentSession();
        session.save(user);
    }
 
    @Override
    public void delete(User user) {
        Session session = sessionFactory.getCurrentSession();
        session.delete(user);
    }
 
    @Override
    public List<User> findAll() {
        Session session = sessionFactory.getCurrentSession();
        CriteriaQuery<User> criteriaQuery = session.getCriteriaBuilder().createQuery(User.class);
        criteriaQuery.from(User.class);
        return session.createQuery(criteriaQuery).getResultList();
    }
}

四. 配置相关注解
@Configuration:
表示一个配置类,会被自动扫描并加载到 Spring 上下文中,可以使用 @Bean 注解来定义一个 Bean 对象

@EnableAutoConfiguration:
用来开启自动配置,会自动配置 Spring 上下文中的各种 Bean 对象

@EnableAutoConfiguration
public class MyApplication {
    //...
}

@Conditional:
用来条件化地加载 Bean 对象,可以根据某些条件来决定是否加载

@Configuration
public class SysConfig {
    @Bean
    @Conditional(SysCondition.class)
    public SysBean sysBean() {
        return new SysBean();
    }
}

public class SysCondition implements Condition {
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return true; //返回 true 表示需要加载 SysBean 对象
    }
}

五. 组合注解
@SpringBootApplication:包括了 @Configuration、@EnableAutoConfiguration 和 @ComponentScan。

@Configuration:表示该类是一个配置类,可以使用 @Bean 注解来定义一个 Bean 对象

@EnableAutoConfiguration:用来开启自动配置,会自动配置 Spring 上下文中的各种 Bean 对象

@ComponentScan:用来自动扫描并加载符合条件的组件类,如果不设置扫描路径,默认扫描该注解所在类的包及其子包

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

你可能感兴趣的:(spring,boot,java,后端)