zoukankan      html  css  js  c++  java
  • 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  }
    
    
  • 相关阅读:
    设计模式之简单工厂模式
    设计模式之工厂方法模式
    设计模式之抽象工厂模式
    面向对象设计原则
    Spring与Struts整合
    Spring与Hibernate、Mybatis整合
    Java中执行外部命令
    Spring3之Security
    综合练习:词频统计
    组合数据类型综合练习
  • 原文地址:https://www.cnblogs.com/tongxuping/p/7212355.html
Copyright © 2011-2022 走看看