admin管理员组

文章数量:1794759

springboot常用注解与实例

springboot常用注解与实例

一、 @springbootApplication

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

注解说明
@SpringBootApplication用来声明启动类进行修饰
@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中
@ComponentScan用来自动扫描注解标识的类,生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类
二、 @Configuration、@Bean 注解说明
@Configuration作用于类之上,配置spring容器(应用上下文),相当于把该类作为spring的xml配置文件中
@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容器注入对象的逻辑流程是:

  • 当SpringBoot框架扫描到使用@Configuration注解标签修饰的类型时,将认为这个类是一个配 置类;
  • 配置类中使用@Bean注解标签修饰方法的返回值对象,将被自动注入IOC容器中保存;
  • 使用@Bean注解标签修饰方法的返回值数据类型等价于标签的class属性取值;
  • 默认情况下,使用@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?后面的参数,get或post请求,只要后面的url?有参数都可以获取到对应的参数
    @RequestBody该注解用于获取请求体数据(body),get没有请求体,故而一般用于post请求
  • 在GET请求中,不能使用@RequestBody
  • 在POST请求,可以使用@RequestBody和@RequestParam,但是如果使用@RequestBody,对于参数转化的配置必须统一。
  • 可以使用多个@RequestParam获取数据,@RequestBody不可以
  • 本文标签: 注解实例常用SpringBoot