@RequestMapping:在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,将请求和处理请求的控制器方法关联起来,建立映射关系,这个控制器方法请求路径为http://localhost:端口号/项目名称/RequestMapping命名

@@RequestMapping("/user")
public class UserController{
	@RequestMapping("/login")
	//这里的请求url路径为http://localhost:8080(默认端口号)/项目名称/user/login
	//你也可以通过网关或者nginx对这个请求url进行转发(这里就不多说了)
	public ResultMessage login(@RequestBody User user){
		//代码....
		return resultMessage;
	}
}

@RequestBody:主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的)即将json格式的数据转为java对象的;而最常用的使用请求体传参的无疑是POST请求了,所以使用@RequestBody接收数据时,一般都用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

//继续用上面的方法举例,这里先看User实体类属性
@Data
public class User{
	private int id;
	private String username;
	private String password;
}

请求体的json数据

{
    "username":"test",
    "password":"test"
}

@Responsebody将java对象转为json格式的数据,将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

@RequestParam():注解@RequestParam接收的参数是来自HTTP请求体请求url的QueryString中;RequestParam可以接受简单类型的属性,也可以接受对象类型。
有三个配置参数:

  • required 表示是否必须,默认为 true,必须。
  • defaultValue 可设置请求参数的默认值。
  • value 为接收url的参数名(相当于key值)。
	//常见的是get方法,http://localhost:8080(默认端口号)/项目名称/user/login?username=&password=;当然post也行
	public ResultMessage login(@RequestParam(value = "username") String username,@RequestParam(value = "password")  String password){
		//代码....
		return resultMessage;
	}

@PathVariable:spring3.0的一个新功能:接收请求路径中占位符的值

@PathVariable("xxx")
通过 @PathVariable 可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中@PathVariable("xxx") 
 
@RequestMapping(value="user/{id}/{username}")
请求路径:http://localhost:8080/project/user/1/test

@GetMapping:一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写。

@PostMapping:一个组合注解,是@RequestMapping(method = RequestMethod.POST)的缩写。

@Service:注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。

@Mapper:使用@mapper后,不需要在spring配置中设置扫描地址,通过mapper.xml里面的namespace属性对应相关的mapper类,spring将动态的生成Bean后注入到ServiceImpl中。

@MapperScan:功能跟@Mapper一样但是可以直接扫描整个包,使同个包下拥有@Mapper注解效果,该注解在启动类Application上。

@Repository:功能跟@Mapper类似,但是需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中;@Mapper不需要配置扫描地址,通过xml里面的namespace里面的接口地址,生成了Bean后注入到Service层中。

@Component:@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。

@ComponentScan:它对应XML配置中的元素,@ComponentScan的功能其实就是自动扫描并加载符合条件的组件(比如@Component和@Repository等)或者bean定义,最终将这些bean定义加载到IoC容器中。

@Controller:控制器(注入服务)用于标注控制层,相当于struts中的action层

@Entity :表明是一个实体类

@Table :对应的数据表名

@Column : 映射表对应的字段名

@Setter:自动添加类中所有属性相关的 set 方法
@Getter:自动添加类中所有属性相关的 get 方法
@Builder:使得该类可以通过 builder (建造者模式)构建对象
@RequiredArgsConstructor:生成一个该类的构造方法,禁止无参构造
@ToString:重写该类的toString()方法
@EqualsAndHashCode:重写该类的equals()和hashCode()方法

@Data:需要导入Lombok依赖,等价于上面的@Setter、@Getter、@RequiredArgsConstructor、@ToString、@EqualsAndHashCode

@EnableTransactionManagement:启注解事务管理,等同于xml配置方式的 <tx:annotation-driven />,用于启动类上

@Transactional:开启事务,常用于serviceImpl的方法上

@Slf4j:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;

@SpringBootApplication:Sprnig Boot项目的核心注解,目的是开启自动配置

@Configuration:用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

注意:@Configuration注解的配置类有如下要求:

@Configuration不可以是final类型;
@Configuration不可以是匿名类;
嵌套的configuration必须是静态类。

@SpringBootConfiguration:@SpringBootConfiguration继承自@Configuration,二者功能也一致,标注当前类是配置类,
并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到spring容器中,并且实例名就是方法名。

@Bean:@Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名

@Autowired

  • Autowired默认按byType自动装配
  • Autowired只包含一个参数:required,表示是否开启自动准入,默认是true。
  • Autowired如果要使用byName,需要使用@Qualifier一起配合。
  • Autowired能够用在:构造器、方法、参数、成员变量和注解上
  • Autowired是spring定义的注解
    参考链接

@Qualifier:Qualifier的意思是合格者,通过这个标示,表明了哪个实现类才是我们所需要的,添加@Qualifier注解,需要注意的是@Qualifier的参数名称为我们之前定义@Service注解的名称之一。

@Resource

  • 默认byName自动装配。
  • 包含七个参数,其中最重要的两个参数是:name 和 type。
  • 如果指定了name,则用byName自动装配,如果指定了type,则用byType自动装配。
  • 能用在:类、成员变量和方法上。
  • JSR-250定义的注解。在这里插入代码片

@EnableFeignClients:@EnableFeignClients注解告诉框架扫描所有使用注解@FeignClient定义的feign客户端,并把feign客户端注册到IOC容器中。

@FeignClient

  • name:指定FeignClient的名称,如果项目使用了Ribbon,name属性会作为微服务的名称,用于服务发现 url:
  • url一般用于调试,可以手动指定@FeignClient调用的地址 decode404:当发生http
  • 404错误时,如果该字段位true,会调用decoder进行解码,否则抛出FeignException configuration:
  • Feign配置类,可以自定义Feign的Encoder、Decoder、LogLevel、Contract fallback:
  • 定义容错的处理类,当调用远程接口失败或超时时,会调用对应接口的容错逻辑,fallback指定的类必须实现@FeignClient标记的接口
  • fallbackFactory: 工厂类,用于生成fallback类示例,通过这个属性我们可以实现每个接口通用的容错逻辑,减少重复的代码
  • path: 定义当前FeignClient的统一前缀

@Override:重写注解,
1、可以当注释用,方便阅读;
2、编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。例如,你如果没写@Override,而你下面的方法名又写错了,这时你的编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。

更多推荐

SpringBoot/Spring Cloud常见注解(面试)