Spring注解

@Profile注解

profile为在不同环境使用不同配置提供支持,例如生产环境与开发环境,数据库配置等。
@profile在3.2以后的版本支持方法级别和类级别,3.1版本只支持类级别。

  1. 通过设定Enviroment的ActiveProfiles来决定当前context需要使用的配置环境,在开发中使用@Profile注解类或方法达到在不同情况下选择实例化不同的Bean
  1. 通过设定jvm的spring.profiles.active参数来设置环境
  1. Web项目设置servlet的context.paramter中

@Scheduled注解

一、注解说明。 
Spring自带的定时任务执行@Scheduled注解,可以定时的、周期性的执行一些任务。查看@Scheduled的注解可以看到有以下三种: 
1.1 String cron() default “” ;
@Scheduled(cron = "0 0 1* * ?")
1.2 long fixedDelay() default -1;
@Scheduled(fixedRate = 1000 * 60,initialDelay = 1000)
1.3 long fixedRate() default -1;
@Scheduled(fixedRate = 1000 * 120)
二、@Scheduled 执行原理说明: 
简要介绍:spring在初始化bean后,通过“postProcessAfterInitialization”拦截到所有的用到“@Scheduled”注解的方法,并解析相应的的注解参数,放入“定时任务列表”等待后续处理;之后再“定时任务列表”中统一执行相应的定时任务。 
2.1 依次加载所有的实现 Scheduled 注解的类方法。(具体查看 spring-context jar包)说明:
2.2 将对应类型的定时器放入相应的“定时任务列表”中,获取scheduled类参数,之后根据参数类型、相应的延时时间、对应的时区放入不同的任务列表中
2.3:执行相应的定时任务。 
说明:定时任务先执行corn,判断定时任务的执行时间,计算出相应的下次执行时间,放入线程中,到相应的时间后进行执行。之后执行按“频率”(fixedRate)执行的定时任务,直到所有任务执行结束。
2.4 接下来看下定时任务run(extends自Runnable接口)方法: 
//说明:每次执行定时任务结束后,会先设置下下次定时任务的执行时间,以此来确认下次任务的执行时间。
备注 从上面的代码可以看出,如果多个定时任务定义的是同一个时间,那么也是顺序执行的,会根据程序加载Scheduled方法的先后来执行。 
但是如果某个定时任务执行未完成会出现什么现象呢? 
答:此任务一直无法执行完成,无法设置下次任务执行时间,之后会导致此任务后面的所有定时任务无法继续执行,也就会出现所有的定时任务“失效”现象。 
所以应用springBoot中定时任务的方法中,一定不要出现“死循环”、“http持续等待无响应”现象,否则会导致定时任务程序无法正常。再就是非特殊需求情况下可以把定时任务“分散”下。

@Component注解

其中base-package为需要扫描的包(含所有子包) 
       1、@Service用于标注业务层组件 
       2、@Controller用于标注控制层组件(如struts中的action) 
       3、@Repository用于标注数据访问组件,即DAO组件. 
        4、@Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。   
@Component 对那些比较中立的类进行注释
这里就是说把这个类交给Spring管理,例如重新起个名字叫userManager,由于不好说这个类属于哪个层面,就用@Component


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值