- 1、Spring Aware
依赖注入->bean对spring容器的存在没有意识->容器可替换
实际->使用spring容器本身的功能资源->需要意识到spring,即spring aware->bean与spring框架耦合
Aware接口
- BeanNameAware:获取bean的名称
- BeanFactoryAware:获取bean factory
- ApplicationContextAware*:可调服务
- MessageSourceAware:
-ResourceLoaderAware:获得资源加载器
- 2、多线程
- spring通过taskexecutor实现多编程和并发
- ThreadPoolTaskExecutor:线程池
- @EnableAsync:开启对异步任务的支持,并在Bean方法中@Async注解声明是异步任务
- 3、计划任务
- 注解开启
@EnableScheduling
- 计划任务的类型:
@Scheduled(xxx="yyy")
可选项:cron指定时间,fixedRate间隔固定时间,fixDelay延迟指定时间
-
4、@Conditional 基于条件创建bean
@Bean @Conditional(windowsCondition.class) ...
-
4.1、判断win
context.getEnvironment().getProperty("os.name").contains("windows");
-
5、组合注解与元注解
- 组合注解
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration //组合1 @ComponentScan //组合2 public @interface WiselyConfiguration { String[] value() default {}; //覆盖value参数 }
使用: @WiselyConfiguratipn("packageName")
- 6、@Enable*注解,开启某项功能的支持
- 直接导入配置类:@Import(SchedulingCOnfiguration.class)
- 依据条件选择配置类:@Import(AsyncConfigurationSelect.class),需要重写selectImports方法
- 动态注册bean:@Import(AspectJAutoProxyRegistrar.class),实现了ImportBeanDefinitionRegistrar接口,参数AnnotationMedata(获得当前配置类上的注解)、BeanDefinitionRegistry(注册bean)
- 7、@RunWith(SpringJUnit4ClassRunner.class),提供sping testcontext framework的功能
@ContextConfiguration //配置Application Context @ActiveProfile //配置活动的profile
网友评论