Spring Boot注解

以前面试被问了不少注解问题。。因此如今来个积累。。html

Spring Boot注解

@RestController:@ResponseBody+@Controller,把函数的返回值直接填入http响应体中,是REST风格的控制器。面试

@ResponseBody:表示该方法的返回结果直接写入http response body中,用于构建RESTful的api。通常配合@RequestMapping一块儿使用。spring

@RequestMapping:用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的全部响应请求的方法都是以该地址做为父路径。数据库

@RequestMapping("/test")
@ResponseBody
public String test() {
    return "ok";
}复制代码

@Controller:在Spring中由控制器负责将用户发来的url请求转发到对应的服务接口(Service),注解通常在类上,配合@RequestMapping使用。api

@Controller
public class LoginController {
    @RequestMapping(value="/login", method="RequestMethod.POST")
    public String login() {
        return "login successfully";
    }
}复制代码

@SpringBootApplication:@ComponentScan、@Configuration和@EnableAutoConfiguration注解。springboot

//启动Spring Boot项目
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}复制代码

@ComponentScan:自动扫描当前包及子包下全部类,找到标识了须要装配的类自动装配到spring的bean容器中。bash

@Configuration:表示该类做用springboot配置文件类。app

@EnableAutoConfiguration:表示程序启动时,自动加载springboot默认的配置。框架

@Autowired:自动导入依赖的bean。函数

@PathVariable:获取参数。

JPA注解

@Entity:@Table(name=""):代表这是一个实体类。通常这两个注解一块儿使用,可是若是表名和实体类名相同,@Table能够省略。

@Column:若是字段名与列名相同,可省略。

@Id:表示该属性为主键。

@Transient:表示该属性并不是一个到数据库表的字段的映射,ORM框架将忽略该属性。

@JoinColumn(name="userId"):一对一:本表中指向另外一个表的外键。一对多:另外一个表指向本表的外键。

@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。

Spring Boot懒加载

通常状况下,Spring容器在启动时会建立全部的bean对象,使用@Lazy注解能够将bean对象的建立延迟到第一次使用bean的时候。

@Component
@Lazy
public class test {
    public test() {
        System.out.println("Lazy");
    }
    public void sayLazy() {
        System.out.println("I am Lazy");
    }
}复制代码


参考资料:

SpringBoot注解大全

相关文章
相关标签/搜索