Spring Boot注解

341 阅读2分钟

之前面试被问了很多注解问题。。所以现在来个积累。。

Spring Boot注解

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

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

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

@RequestMapping("/test")
@ResponseBody
public String test() {
    return "ok";
}

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

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

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

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

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

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

@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注解大全