当前位置:   article > 正文

SpringBoot2入门必读(2):Spring boot的常用注解_springboot2 常用的标注

springboot2 常用的标注

SpringBoot2入门必读(1):Spring boot的常用注解

@SpringBootApplication

@SpringBootApplication出现在程序入口类中,这个注解主要包含三个主要注解

  • @ComponentScan 用来自动扫描被这些注解标识的类,最终生成ioc容器里的bean,默认扫描范围是@ComponentScan注解所在配置类包及子包的类
  • @SpringBootConfiguration 与@Configuration作用相同,都是用来声明当前类是一个配置类,这里表明是springboot主类使用的配置类
  • @EnableAutoConfiguration 是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

@Controller、@Service、@Repository、@Component

这些注解的功能基本一致,被这些注解的类会被注册到IOC容器中,只是根据使用场景不同使用不同的名字进行标识

  • @Controller在控制层使用
  • @Service在在业务逻辑层使用
  • @Repository在持久层使用
  • @Component在普通类中使用

@Configuration、@Bean

  • @Configuration代表类是一个配置类,并且会被cglib进行代理
  • @Configuration还可以配合@Bean进行使用
    • @Configuration注解表明其主要目的是作为bean定义的源;
    • @Configuration类允许通过调用同一类中的其他@Bean方法来定义bean之间的依赖关系
    • Full 模式 Lite 模式 @Configuration(proxyBeanMethods=true)是默认情况,也就是Full模式,如果proxyBeanMethods=false表示Lite模式,区别是Full被cglib代理然后从IOC容器中找对象,如果有就返回,也就是说每次只会返回相同对象,也就是单实例,Lite不被代理每次都会new一个新对象
/**
 * 1、使配置类变成了full类型的配置类,spring在加载Appconfig的时候,Appconfig由普通类型转变为cglib代理类型 ,
 * 2、在 @Bean method中使用,是单例的,不会创建对个对象
 */

@Configuration(proxyBeanMethods=true)//(proxyBeanMethods=true)默认配置,可不用
public class AppConfig {
 
    @Bean
    public User user(){
        return new User();
    }
     
    @Bean
    public Cat cat(){
        return new Cat();
    }
 
 
    @Bean
    //条件注解,只有TestConditional返回为true时,才能实例化animal
    @Conditional(value = TestConditional.class)
    public Animal animal(){
        //使用@Configuration从IOC中拿对象,不会每次new cat
        return new Animal (cat());
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

@ResponseBody

一般和@Controller搭配使用,可以放到类上也可以放到方法上,主要作用表示该方法的返回结果直接写入 HTTP response body 中,而不会被解析为跳转路径,也就是说不会经过视图解析器。简单点就是@ResponseBody会把对象转换成json格式的数据返回到前端

@Controller
@ResponseBody
public class HelloController {

    @Autowired
    Person person;

    @GetMapping("/hello")
    //@ResponseBody
    public String hello(){
        return "hello spring boot";
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

@RestController

@RestController是一个组合注解包含@Controller、@ResponseBody,现在控制层一般用这个

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Controller
@ResponseBody
public @interface RestController {
    @AliasFor(
        annotation = Controller.class
    )
    String value() default "";
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

@AutoWired、@Qualifier、@Resource

这3个注解主要是从容器中找到通过@Controller、@Service、@Repository、@Component等注解的bean

  • 一般用@Autowired就够了
  • 其中**@Qualifier**则需要配合@AutoWired使用
  • @Resource相当于@AutoWired和@Qualifier的组合

@Autowired

业务逻辑层通过@Service把类注入到IOC容器,这里也已经把UserService接口给注入到IOC容器中了
在这里插入图片描述

通过@Autowired直接拿接口
也可以直接拿实现类
@ Autowired
UserServiceImpl userServiceImpl;
在这里插入图片描述

@AutoWired和@Qualifier

当一个接口有多个实现类时,需要两个注解配合使用,下面有两个接口实现,在@Service(“userServiceImpl”)和@Service(“userServiceImpl1”)
在这里插入图片描述
在这里插入图片描述
在使用的时候需要加上@Service(“userServiceImpl”)配置的名字
在这里插入图片描述

@Resource

这个注解相当于@AutoWired和@Qualifier的组合
用法如下
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/642904
推荐阅读
相关标签
  

闽ICP备14008679号