总结:SpringBoot常用注解

1、@ComponentScan

组件扫描。让spring Boot扫描到Configuration类并把它加入到程序上下文。

@ComponentScan注解默认就会装配标识了@Controller,@Service,@Repository,@Component注解的类到spring容器中。
 

2、@Repository

定义DAO层Bean。

@Repository注解修饰哪个类,则表明这个类具有对对象进行CRUD(增删改查)的功能,而且@Repository是@Component注解的一个派生品,所以被@Repository注解的类可以自动的被@ComponentScan 通过路径扫描给找到。(这也在一定程度上解释了,为什么被@Repository注解的类也能@Autowired)

3、@Autowired注解和@Resource区别

  • @Autowired默认按类型进行装配
    • 当接口有多个实现类的时候,如果仅使用@Autowired注解的话会报错
    • @Autowired可以结合@Qualifier使用,来达到@Resource的效果
  • @Resource默认按照名称进行装配。
    • 默认先按 byName的方式进行匹配,如果匹配不到,再按 byType的方式进行匹配

下面两种写法效果一样:

写法一:@Autowired结合@Qualifier使用

@Autowired
@Qualifier("clusterSyncer")
private VpsSyncService clusterSyncer;

写法二:直接用@Resource

@Resource(name = "clusterSyncer")
private VpsSyncService clusterSyncer;

4、@Bean

相当于XML中的,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。

5、@RequestParam

将请求参数绑定到你控制器的方法参数上(是springmvc中接收普通参数的注解)

语法:@RequestParam(value=”参数名”,required=”true/false”,defaultValue=””)
 
value:参数名
required:是否包含该参数,默认为true,表示该请求路径中必须包含该参数,如果不包含就报错。
defaultValue:默认参数值,如果设置了该值,required=true将失效,自动为false,如果没有传该参数,就使用默认值

使用@RequestParam时,URL是这样的:http://host:port/path?参数名=参数值

public ModelAndView test16(@RequestParam("name")String name){
    ··············
}

6、@PathVariable

通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

@PathVariable(“xxx”) 绑定到操作方法的入参中。

使用@PathVariable时,URL是这样的:http://host:port/path/参数值

    @GetMapping("/getUserById/{name}")
    public User getUser(@PathVariable("name") String name){
        return userService.selectUser(name);
    }

若方法参数名称和需要绑定的uri中变量名称一致时,可以简写:

    @GetMapping("/getUser/{name}")
    public User getUser(@PathVariable String name){
        return userService.selectUser(name);
    }

7、@ConfigurationProperties

总结:Spring Boot之@ConfigurationProperties_小魏的博客的博客-CSDN博客

8、@Transactional

@Transactional 是声明式事务管理 编程中使用的注解

9、@Value

总结:Spring Boot之@Value_小魏的博客的博客-CSDN博客

10、@Component

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。

11、@Scope

@Scope在和@Component注解一起修饰在类上,作为类级别注解时,@Scope表示该类实例的范围,在和@Bean一起修饰在方法上,作为方法级别注解时,@Scope表示该方法返回的实例的范围。

如:@Scope("prototype")
值有:

  • singleton:单例,Spring中bean的实例默认都是单例的,IOC容器启动的时候就会调用方法创建对象,以后每次获取都是从容器当中拿同一个对象(map当中)。
  • prototype:原型范围,这个使用较少,多实例,IOC容器启动创建的时候,并不会创建对象放在容器在容器当中,当你需要的时候,需要从容器当中取该对象的时候,就会创建。
  • session:会话,同一个session创建一个实例
  • request:请求,同一个请求创建一个实例

12、@PostConstruct

相当于init-method,使用在方法上,当Bean初始化时执行。

@PostConstruct该注解被用来修饰一个非静态的void()方法。

@PostConstruct注解的方法,将会在依赖注入完成后被自动调用,并且只会被服务器执行一次

13、@PreDestroy

相当于destory-method,使用在方法上,当Bean销毁时执行。

在对象实例被容器移除的时候,会回调调用@PreDestroy标记的方法,通常用来释放该实例占用的资源。

14、@Profiles

Spring Profiles提供了一种隔离应用程序配置的方式,并让这些配置只能在特定的环境下生效。

通过@Profile注解匹配active参数,动态加载内部配置 。

.@Profile注解使用范围:@Configration 和 @Component 注解的类及其方法,其中包括继承了@Component的注解:@Service、@Controller、@Repository等…

我们除application.properties外,还可以根据命名约定( 命名格式:application-{profile}.properties)来配置,如果active赋予的参数没有与使用该命名约定格式文件相匹配的话,app则会默认从名为application-default.properties 的配置文件加载配置。

如:spring.profiles.active=hello-world,sender,dev 有三个参数,其中 dev 正好匹配下面配置中的application-dev.properties 配置文件,所以app启动时,项目会先从application-dev.properties加载配置,再从application.properties配置文件加载配置,如果有重复的配置,则会以application.properties的配置为准。

指定使用 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值