@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常见注解(面试)
发布评论