以前面试被问了不少注解问题。。因此如今来个积累。。html
@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:获取参数。
@Entity:@Table(name=""):代表这是一个实体类。通常这两个注解一块儿使用,可是若是表名和实体类名相同,@Table能够省略。
@Column:若是字段名与列名相同,可省略。
@Id:表示该属性为主键。
@Transient:表示该属性并不是一个到数据库表的字段的映射,ORM框架将忽略该属性。
@JoinColumn(name="userId"):一对一:本表中指向另外一个表的外键。一对多:另外一个表指向本表的外键。
@OneToOne、@OneToMany、@ManyToOne:对应hibernate配置文件中的一对一,一对多,多对一。
通常状况下,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");
}
}复制代码
参考资料: