spring中的注解

spring5.0已经可以实现零配置开发,这一点为springboot提供了很好的支持

列举注解:

@Configuration一般与其他注解配合使用 修饰的类作为一个ioc容器,方法上修饰了@Bean,就会作为这个spring容器中的bean

 

@ComponentScan 包扫描类,配合@Configuration使用  会将扫描到的包中的类生成为一个bean放入spring容器中,这个注解拓展性比较强

可以通过includeFilters属性中的FilterType指定修饰的注解类型,类类型,还可以通过实现接口TypeFilter实现

boolean match(MetadataReader var1, MetadataReaderFactory var2) throws IOException;方法来自定义过滤条件

 

@Component一个通用组件,当无法确认当前类所属的业务范围的时候,可以不直接指定@Service,@Repository这样注解,效果是一样的

@Conditional自定义实例化条件的注解,需要实现Condition接口实现

boolean matches(ConditionContext var1, AnnotatedTypeMetadata var2);方法。

 

@Lazy懒加载注解,只在调用的时候才加载,只针对单例模式,多例本身就是每次调用的时候加载的

 

@Scope作用域注解 prototype 多例 ,singleton 单例,request和session主要应用于web模块,同一个request或者session只创建一个实例

 

定义一个bean的生命周期监控的方式

直接在注解内添加属性@Bean(initMethod = "new",destroyMethod = "close")

实现InitializingBean和DisposableBean接口

@Component
public class Peak implements InitializingBean,DisposableBean {
@Override
public void destroy() throws Exception {
}

@Override
public void afterPropertiesSet() throws Exception {
}
}
使用@PostConstruct和@PreDestroy注解,前者策略模式的实例容器的初始化中经常使用,保证了执行顺序,在所在实例初始化成功之前完成装配

定义一个类实现BeanPostProcessor并且实现方法
@Nullable
default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
return bean;
}

@Nullable
default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
return bean;
}
可以通过bean的信息做过滤

@Import 快速给容器导入组件Bean
a. @Import 直接传参导入
b. ImportSelector 自定义导入规则
可以同时支持
@Import(value = {Class.class,ImportSelector.class,ImportBeanDefinitionRegistrar.class})
      c.ImportBeanDefinitionRegistrar ,使用BeanDefinitionRegistry可以手动注入到IoC容器中

 

@Primary容器中存在通用名称的实例的话,指定有效的一个加上该注解
@PropertySource("classpath:application.properties")指定加载的配置文件与@Value配合使用
@Value读取配置文件,支持springEL表达式

@Qualifier(1)指定bean的注入优先级

 

posted @ 2021-04-11 15:22  好好的一个居士  阅读(71)  评论(0)    收藏  举报