• Spring注解 持续更新学习中.......


    包扫描+组件注解(@Component@Service@Controller@Repository

    @Bean 给容器添加Bean

    @Import 导入组件

    Import(类名),id默认组件全名

    ImprtSelector,返回需要导入组件全类名

    ImportBeanDefinittionRegistrar:手动注册Bean

    Spring提供BeanFactory

    默认获取BeanFactory调用getObject创建对象

    @Conditional{{xxx.class}},按照引入的限制规则,满足条件注册Bean对象

    @Scope

    Prototype:多例,ioc容器启动不会调用方法创建对象在容器中,在每次获取时才调用调用方法创建对象。(Lazy

    Singleton:单例,启动就会创建对象,以后每次调用就是从容器拿(即时加载)

    组件注册过滤条件

    @ComponentScan value:指定要扫描的包

    ExcludeFilters = Filter[]: 指定规则,排除那些组件

    IncludeFilters = Filter[]: 指定包含那些组件,需要将userDefaultFilers设置为false

    FilterType.ANNOTATION:按注解指定

    FilterType.ASSIGABLE_TYPE:按指定类型

    FilterType.REGEX:使用正则指定

    FilterType.CUSTOM:自定义

    生命周期中

    @Bean可以指定initdestroy方法

    通过bean实现InitialzingBean(定义初始化逻辑),DisposableBean(定义销毁接口)

    @PostConstructor:在bean创建完成并且属性复制完成,来执行初始化

    @PostDestroy:在容器销毁之前通知我们进行清理工作

    BeanPostProcessor

    PostProcessorBeforeInitialiation:在初始化工作之后

    PostProcessorAfterInitialiation:在初始化工作之前

    @AutoWired 注入

    @Qualifier(“xxxx”)需要指定装配组建的id

    @Primary , 排序问题,使用该注解创建Bean自动排在第一位

    @Resource @AutoWired都是自动注入

    @Inject  需要导入依赖,没有required=false

    @Value赋值

    1. SpEL:#{}
    2. ${}取出配置文件

    @PropertySource读取外部配置文件以K/V形式,通过${}读取文件中的值

    @Prpfile:指定组件在那个情况下才能注册到容器,不指定默认执行

    Aop

    @Before:前置通知,logStrat在目标div运行之前

    @After:后置通知,logEnd在目标(div)运行之后,无论方法征程结束还是异常结束

    @AfterThrowinglogException出现异常

    @Around:动态代理,手动目标方法进行(joinPoint.Proceed()

    @Aspect:告诉Spring这是切面类,开启事物

    @EnableAspectJAutoProxy:开启注解Aop

    @EnableTransactionMansgement:开启事务的管理功能

    @Transactional:标识当前方法是一个事物方法

    @EventListenerclass={}):可以在组件上的方法监听事件

    @HandlesTypes:指定类型下面的子类传递过来Set<Class<?>>

    @EnableWebMvc:接管springmvc

    @GetMapping,处理get请求
    @PostMapping,处理post请求
    @PutMapping,处理put请求
    @DeleteMapping,处理delete请求

    四个元注解:

    @Retention:注解的保留位置         

    @Retention(RetentionPolicy.SOURCE)   //注解仅存在于源码中,在class字节码文件中不包含

    @Retention(RetentionPolicy.CLASS)     // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,

    @Retention(RetentionPolicy.RUNTIME)  // 注解会在class字节码文件中存在,在运行时可以通过反射获取到

    @Target:注解的作用目标  

    @Target(ElementType.TYPE)   //接口、类、枚举、注解

      @Target(ElementType.FIELD) //字段、枚举的常量

      @Target(ElementType.METHOD) //方法

      @Target(ElementType.PARAMETER) //方法参数

      @Target(ElementType.CONSTRUCTOR)  //构造函数

      @Target(ElementType.LOCAL_VARIABLE)//局部变量

      @Target(ElementType.ANNOTATION_TYPE)//注解

      @Target(ElementType.PACKAGE) ///包   

    @Document:说明该注解将被包含在javadoc中

    @Inherited:说明子类可以继承父类中的该注解

    SpringBoot注解

    读取外置文件注解

    比较项 @ConfigurationProperties  @Value
    全量注入 支持 不支持
    松散绑定 支持  不支持
    SpEL 不支持 支持
    JSR303 支持 不支持

    @ConfigurationProperties 格式:@ConfigurationProperties(prefix = "user(文件名)")

    @Value 格式:@Value("${user.username}")

    @Entity 告诉Jpa这是一个实体类

    @Table(name = "xxx")    指定数据库的表名  name指定表明

    @GeneratedValue(strategy = GenerationType.IDENTITY) //自增主键

    @Colum(name = "xxx" , length = 50) 指定列名,并表明长度

    指定配置文件:

    @PropertySource  属性加载配置文件,支持properties文件,不支持yml文件  格式@PropertySource  (value = {"classpath:config(文件名)/xxxx.properties"})

    @ImportResource 加载Spring的xml文件  格式 @ImportResource(value = {"classpath:/bean.xml"})

    跨域请求注解:  @CrossOrigin

    @Mapper  指定这是一个操作数据库的mapper(在映射接口中使用)

    格式:@Mappings({ @Mapping(source = "chapter.name", target = "groupName"),@Mapping(source = "chapter.parentId", target = "parentName"), })

    source 属性的 chapter.name 中的 chapter就是方法的参数名,name当然就是属性名了。target属性,就是需要映射的model的属性名

    @Options(useGeneratedKeys = true,keyProperty = “id”)   告诉Spring自增主键,是表中的id字段

    日志注解

    @SLF4J

    组件注解

    缓存

    @Primary   将某个缓存管理器作为默认的

    消息中间件

    @EnableRabbit     开启RabbitMQ

    @RabbitListener(queues = "xxx")  监听消息队列

    异步注解

    @EnableAsync   开启异步注解功能

    @Async   表示该方法为异步方法

    定时任务

    @EnableScheduling   开启定时任务

    @Scheduled  表明方法为定时任务

    例子:

      second(秒), minute(分), hour(时), day of month(日), month(月), day of week(周几).
      0 * * * * MON-FRI
    【0 0/5 14,18 * * ?】 每天14点整,和18点整,每隔5分钟执行一次
    【0 15 10 ? * 1-6】 每个月的周一至周六10:15分执行一次
    【0 0 2 ? * 6L】每个月的最后一个周六凌晨2点执行一次
    【0 0 2 LW * ?】每个月的最后一个工作日凌晨2点执行一次
    【0 0 2-4 ? * 1#1】每个月的第一个周一凌晨2点到4点期间,每个整点都执行一次;

    突然发现不认识的注解

    @Deprecated 标识已经过时  

    @SuppressWarnings    抑制编辑器警告

    @Target 说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。

    Dubbo 

    @Reference   用在消费端,表明使用的是服务端的什么服务(远程调用)

    格式:

    @Reference(version = "1.0.0",check = true)

    @Service   用在服务提供者中,在类或接口中声明。

    @Service(version = "1.0.0",timeout = 10000,interfaceClass = (对应类).class)
    

    Spring Cloud feign

    @EnableDiscoveryClient   //开启发现服务功能

    @LoadBalanced   //使用负载均衡机制

  • 相关阅读:
    [九度][何海涛] 顺时针打印矩阵
    [何海涛] 求二元查找树的镜像
    [九度][何海涛] 二叉树中和为某一值的路径
    [面试] 水杯题实现
    [九度][何海涛] 最小的K个数
    [九度][何海涛] 字符串的排序
    如何扩展Orchard
    IoC容器Autofac(3) 理解Autofac原理,我实现的部分Autofac功能(附源码)
    使用PrivateObject帮助单元测试
    Nuget如何自动下载依赖DLL引用
  • 原文地址:https://www.cnblogs.com/money131/p/12951238.html
Copyright © 2020-2023  润新知