SpringBoot常用注解

1、@ResponseBody

  如果返回的是字符串则将返回的内容直接放入response 的 body中给用户直接显示。如果返回的是对象则自动的转为JSON串。

public class tController {
    @ResponseBody
    @RequestMapping
    public String toPin(){
        return "word";
    }
}

2、@RestController 和 @RequestMapping

  @RequestMapping 注解提供路由信息。它告诉Spring任何来自"/"路径的HTTP请求都应该被映射到指定的方法。

  @RestController 注解告诉Spring以字符串的形式渲染结果,并直接返回给调用者。其作用相当于@Controller+@ResponseBody组合

1 @RestController
2 public class tController {
3     //@ResponseBody
4     @RequestMapping
5     public String toPin(){
6         return "word";
7     }
8 }

    注意:@RestController和@RequestMapping这两个注解不是SpringBoot特有的。应该说是属于SpringMVC的注解。   

3、@SpringBootApplication

  主要用来注解SpringBoot的main类(唯一入口类)。

  该 @SpringBootApplication 注解等价于以默认属性使用 @Configuration , @EnableAutoConfiguration 和 @ComponentScan 。

1 @SpringBootApplication
2 public class Application {
3     public static void main(String[] args) {
4         SpringApplication.run(Application.class, args);
5     }
6 }

4、@Configuration

   @Bean

   @ConfigurationProperties(prefix="..")

  Configuration 标识该类为一个bean的容器 ;

  Bean 调用该方法产生一个bean;

  ConfigurationProperties(prefix="pr") 扫描外部资源文件中的前缀包含pr的值注入到指定的类中

 1 /** 
 2  * Configuration 标识该类为一个bean的容器 
 3  *  
 4  *  
 5  * @author Administrator 
 6  */  
 7 @Configuration  
 8 public class BeanContainer {  
 9       
10     /** 
11      * @Bean 
12      * 调用该方法产生一个bean 
13      * 方法名 就是 id; 
14      *  
15      * @ConfigurationProperties(prefix="dbcpsource") 
16      * 自动扫描资源文件 并且将资源文件中前缀包含"dbcpsource"的四要素 
17      * 自动填充到BasicDataSource中; 
18      *  
19      * @return 
20      */  
21     @Bean  
22     @ConfigurationProperties(prefix="dbcpsource")  
23     public DataSource  dataSource(){  
24         BasicDataSource  dataSource = new BasicDataSource();  
25         return dataSource;  
26     }  
27 }  

5、@ControllerAdvice

  @ExceptionHandler(Exception.class)

  ControllerAdvice 表示统一处理异常;包含了@Component;

  ExceptionHandler 表示遇到异常就执行该方法。注解用于方法上。

 1 /** 
 2  * 全局异常处理 
 3  */  
 4 @ControllerAdvice  
 5 class GlobalDefaultExceptionHandler {  
 6     public static final String DEFAULT_ERROR_VIEW = "error";  
 7   
 8     @ExceptionHandler({TypeMismatchException.class,NumberFormatException.class})  
 9     public ModelAndView formatErrorHandler(HttpServletRequest req, Exception e) throws Exception {  
10         ModelAndView mav = new ModelAndView();  
11         mav.addObject("error","参数类型错误");  
12         mav.addObject("exception", e);  
13         mav.addObject("url", RequestUtils.getCompleteRequestUrl(req));  
14         mav.addObject("timestamp", new Date());  
15         mav.setViewName(DEFAULT_ERROR_VIEW);  
16         return mav;  
17     }}  

6、@MapperScan("cn.com.venus.oa.mapper")

1 @SpringBootApplication
2 @MapperScan("cn.com.venus.oa.mapper")
3 public class venusAppcliation {
4     public static void main(String[] args) {
5         SpringApplication.run(venusAppcliation.class, args);
6     }      
9 }

 

7、@Transactional 

  标识该类中所的方法都使用事务。

8、@Component

  标识该类交给Spring管理。在无法区分该类属于那一层时可以使用该注解

9、@Autowired

  标识完成自动装配工作。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。

10、@RequestParam

  一般用在方法的参数前面;在Controller层,接收前台传过来的参数名与前台的‘name’值不一致时可以使用。

  该注解与request.getParameter("name")的效果一致都是获取前台传过来的值。

  @RequestParam(value="name",required=false,defaultValue="0");

    value:标识前台的name值,必须一致,不然会报400的错;

    required:false/true两个值;false表示可以不传,自动给个默认值null,但是若穿过来的是个int的基本类型而后台设置为null这样同样会400;true表示必须传值,不能为空,否则报400;

    defaultValue:表示默认值。若没有传值的话就会以默认值参数的值。

11、@PathVariable

  匹配路径变量;一般在RestFul路径时匹配路径上的数据变量值,即从路径上获取变量值。

1 @RequestMapping("/{moudelName}/Left")
2 public String sysadminLeft(@PathVariable() String moudelName){
3     return "/"+moudelName+"/left";
4 }

12、@Param

  表示注解单一属性。在Mybatis中使用。一般用来注解多个参数自动封装到一个Map中,Param的参数就是map中的key。

//在Mybatis的Mapper接口类中的方法
public void updateState(@Param("deptId")String[] deptIds, @Param("state")int stopState);

  对应的xml映射文件:

1 <!-- 部门状态修改至停用 -->
2 <update id="updateState" >
3     update dept_p set state=#{state} where dept_id in(
4         <foreach collection="deptId" item="deptId" separator=",">
5             #{deptId}
6         </foreach>
7     )
8 </update>
注意:

1.使用@Param注解
  当你使用了使用@Param注解来声明参数时,在映射文件中使用 #{} 或 ${} 的方式取值都可以。
      @Select("select * from dept_p where dept_id = ${deptId} ")
      public int selectdept(@Param("deptId") int deptId);
  当你不使用@Param注解来声明参数时,必须使用使用 #{}方式。如果使用 ${} 的方式,会报错。
   
2.不使用@Param注解
  不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
   // 这里id是user的属性
   @Select("select* from user_p  where id = ${id}")
     Enchashment selectUserById(User user);

 13、@Value

  给基本类型属性实现注入;

  yml配置:

1 id: 1
2 name: 大飞
3 age: 18

  pojo对象:通过@Value注解将配置文件中的值实现注入到指定属性中。

 1 @Component
 2 public class User(){
 3   
 4   @Value("${id}")  
 5   private Integer id;
 6    
 7    @Value("${name}")  
 8    private Integer name;
 9 
10    @Value("${age}")  
11    private Integer age;
12 
13 }

  给属性赋值固然不知这一种方法也可以通过@ConfigurationProperties(prefix="userPro")(本文的第4条)注解,然后在yml配置中设置相应的值进行注入。

  yml配置:配置成树形结构

1 userPro:
2   id: 1
3   name: 大飞
4   age: 18

  pojo对象类:这种方法也可以对复杂类型进行注入

 1 @Component
 2 @ConfigurationProperties(prefix="userPro")
 3  public class User(){
 4      
 5   private Integer id;
 6      
 7     private Integer name;
 8  
 9     private Integer age;
10  
11  }

原文地址:https://www.cnblogs.com/tongxuping/p/7212355.html