之前面试被问了很多注解问题。。所以现在来个积累。。
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");
}
}参考资料: