springboot常用注解与实例

一、 @SpringBootApplication

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

注解 说明
@SpringBootApplication 用来声明启动类进行修饰
@EnableAutoConfiguration springboot实现自动化配置的核心注解,通过这个注解把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>

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

@Data //记得要导入Lombok相关的依赖
@NoArgsConstructor
@AllArgsConstructor
public class User {
    
    
 private Integer id;
 private String username;
 private Integer age;
}

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

@Configuration
public class UserConfiguration {
    
    
}

在这个类中创建一个方法,方法的返回值是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;
  }
}

此时,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!";
 }
}

访问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不可以

猜你喜欢

转载自blog.csdn.net/klylove/article/details/125408327