• springboot常用注解与实例


    一、 @SpringBootApplication

    SpringBoot框架为我们自动创建的启动类当中,使用了@SpringBootApplication注解标签对启动 类进行修饰。
    @SpringBootApplication注解标签实际上是一个复合注解标签,包括@EnableAutoConfiguration@ComponentScan通常用在主类上

    注解说明
    @SpringBootApplication用来声明启动类进行修饰
    @EnableAutoConfigurationspringboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中
    @ComponentScan用来自动扫描注解标识的类,生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类

    二、 @Configuration、@Bean

    注解说明
    @Configuration作用于类之上,配置spring容器(应用上下文),相当于把该类作为springxml配置文件中
    @Bean产生bean对象加入容器,作用于方法
    实例:

    原生SSM框架整合过程中,如果想要在IOC容器中添加一个自定义对象,我们所需要完成的工作:
    Spring框架使用的配置文件的跟标签下,添加如下标签的内容声明:

    <bean id="user" class="com.qf.testspringboot.pojo.User">
     <property name="id" value="1"/>
     <property name="username" value="张三"/>
     <property name="age" value="22"/>
    </bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    但是在SpringBoot框架当中,允许我们直接通过创建并返回Java对象的方式,直接向IOC容器中注 入自定义的对象。
    这个过程,依赖于@Configuration注解标签和@Bean注解标签。
    首先我们准备一个User类:

    @Data //记得要导入Lombok相关的依赖
    @NoArgsConstructor
    @AllArgsConstructor
    public class User {
     private Integer id;
     private String username;
     private Integer age;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    然后创建一个UserConfiguration类,并为这个类使用@Configuration注解标签,声明这个类是一 个配置类:

    @Configuration
    public class UserConfiguration {
    }
    
    • 1
    • 2
    • 3

    在这个类中创建一个方法,方法的返回值是User类型的,而方法名就是IOC容器中注入对象的对 象名,并对这个方法使用@Bean注解标签:

    @Configuration
    public class UserConfiguration {
      @Bean
      public User user() {
      /*
      下列代码等价于:
      <bean id="user" class="com.qf.testspringboot.pojo.User">
      <property name="id" value="1"/>
      <property name="username" value="张三"/>
      <property name="age" value="22"/>
      </bean>
      方法的返回值数据类型等价于<bean>标签中的class属性取值
      方法的方法名等价于<bean>标签中的id属性取值
      */
      User user = new User(1, "张三", 22);
        return user;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    此时,SpringBoot框架扫描并向IOC容器注入对象的逻辑流程是:

    1. 当SpringBoot框架扫描到使用@Configuration注解标签修饰的类型时,将认为这个类是一个配 置类;
    2. 配置类中使用@Bean注解标签修饰方法的返回值对象,将被自动注入IOC容器中保存;
    3. 使用@Bean注解标签修饰方法的返回值数据类型等价于标签的class属性取值;
    4. 默认情况下,使用@Bean注解标签修饰方法的方法名等价于标签的id属性取值,即对 象在IOC容器中的对象名。

    通过这种方式,我们可以在不使用XML配置文件的基础上,轻松的向IOC容器中注入自定义的 Java对象。


    三、@AutoWired

    @Autowired默认按类型装配,常用于业务层实现类和持久层实现类

    实例:

    TestController类中,通过@Autowired注解标签自动注入一个User对象,并在访问test方法的时 候,打印这个User对象:

    @Controller //SpringMVC当中的注解标签都还能用
    public class TestController {
     @Autowired
     private User user; //自动注入自定义的User对象
     @RequestMapping("/test")
     @ResponseBody
     public String test() {
     System.out.println(user); //打印这个User对象
     return "Hello SpringBoot!";
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    访问test方法时程序的运行结果:
    在这里插入图片描述


    四、@Service、@Controller、@Repository、@Component

    注解说明
    @Service用于业务层 ,业务逻辑层 service 注入spring容器
    @Controller控制层 controller 注入spring容器
    @Repository持久层 dao 注入spring容器
    @Component普通domain注入spring容器

    五、@ResponseBody、@RestController

    注解说明
    @ResponseBody作用在方法上或类上,让该方法的返回结果直接写入 HTTP response body 中,不会经过视图解析器,返回数据直接在页面展示。
    @RestController@Controller@ResponseBody的结合体,作用于类,作用等于在类上面添加了@ResponseBody@Controller

    六、@RequestMapping、@GetMapping、@PostMapping

    注解说明
    @RequestMapping使用该注解就可以通过配置的url进行访问,可以是get也可以是post
    @GetMapping使用该注解就可以通过配置的url进行访问,限定get请求方式
    @PostMapping使用该注解就可以通过配置的url进行访问,限定post请求方式

    七、@RequestParam、@RequestBody

    注解说明
    @RequestParam主要用于接收url?后面的参数,getpost请求,只要后面的url?有参数都可以获取到对应的参数
    @RequestBody该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求
    1. GET请求中,不能使用@RequestBody
    2. POST请求,可以使用@RequestBody@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。
    3. 可以使用多个@RequestParam获取数据,@RequestBody不可以
  • 相关阅读:
    Electron[3] 基础配置准备和Electron入门案例
    Django REST framework(十)路由集routers的使用
    windows排除扫描文件夹
    Burpsuite使用教程
    查看Mysql数据库版本
    三十分钟学会SCALA
    spdk用户态块层详解
    总结flutter玩转之-安卓view 承载flutter 的页面
    【C语言】sizeof操作符详解
    TX Text Control.NET For WPF 32.0 Crack
  • 原文地址:https://blog.csdn.net/klylove/article/details/125408327