Solon2 常用注解之 @Component 与 @ProxyComponent 的区别
在 Solon 提倡“克制”的原则下,托管组件分为:
- 普通组件:
- 主要由内核提供的:@Configuration、@Component、@Controller、@Remoting 注解的类
- 其中 @Controller、@Remoting 支持函数拦截
- 代理组件:
- 主要由内核提供的:@ProxyComponent(需要 solon.proxy 插件提供支持)注解的类
- 支持函数可拦截
1、区别
@ProxyComponent
- 被代理(即类的外面又包了一层类,看不见的),支持函数可拦截。例如支持:@Tran、@Cache 等借助函数拦截实现的能力
支持函数可拦截:
@ProxyComponent
public class UserService{
@Tran
public void addUser(User user){
}
}
@Component
- 不支持函数可拦截
- 支持特定形态自动处理
- 支持函数提取
- 支持 Bean、BeanWrap 订阅
支持特定形态自动处理:LifecycleBean、EventListener、Filter、RouterInterceptor、Handler、LoadBalance.Factory。例:EventListener 会自动注册 EventBus
@Component
public class DemoEventListener implements EventListener<DemoEvent>{
@Override
public void onEvent(DemoEvent event) throws Throwable{
}
}
支持函数被提取:通过 aopContext.beanExtractorAdd(Scheduled.class, new ScheduledExtractor()) 直接提取组件的 @Scheduled 函数
@Component
public class DemoJob{
@Scheduled
public void job1() throws Throwable{
}
}
支持Bean、BeanWrap 订阅:(订阅,也支持 @Configuration + @Bean 产生的)
//通过订阅获取多个 IXxx 实现的组件或Bean(要在容器扫描前,提前订阅)
aopContext.subBeansOfType(IXxx.class, bean->{
});
@Component
public class DemoBean1 implements IXxx{
}
@Component
public class DemoBean2 implements IXxx{
}
2、了解代理与拦截
Solon2 常用注解之 @Component 与 @ProxyComponent 的区别的更多相关文章
- [刘阳Java]_Spring常用注解介绍_第6讲
Spring的注解是在Spring2.5的版本中引入的,目的简化XML配置.在企业开发过程中使用注解的频率非常高,但是学习注解的前提是大家一定要对Spring基于XML配置要熟悉,这是我个人建议,因为 ...
- SpringMVC常用注解@Controller,@Service,@repository,@Component
SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...
- Spring 和 SpringMVC 常用注解和配置(@Autowired、@Resource、@Component、@Repository、@Service、@Controller的区别)
Spring 常用注解 总结内容 一.Spring部分 1.声明bean的注解 2.注入bean的注解 3.java配置类相关注解 4.切面(AOP)相关注解 5.事务注解 6.@Bean的属性支持 ...
- Spring系列之Spring常用注解总结
传统的Spring做法是使用.xml文件来对bean进行注入或者是配置aop.事物,这么做有两个缺点:1.如果所有的内容都配置在.xml文件中,那么.xml文件将会十分庞大:如果按需求分开.xml文件 ...
- Spring常用注解汇总
本文汇总了Spring的常用注解,以方便大家查询和使用,具体如下: 使用注解之前要开启自动扫描功能 其中base-package为需要扫描的包(含子包). <context:component- ...
- Spring常用注解,自动扫描装配Bean
1 引入context命名空间(在Spring的配置文件中),配置文件如下: xmlns:context="http://www.springframework.org/schema/con ...
- Spring常用注解介绍【经典总结】
Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式. Spring注解方式减少了配置文件内容 ...
- 一 : springmvc常用注解
springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...
- Spring Boot常用注解总结
Spring Boot常用注解总结 @RestController和@RequestMapping注解 @RestController注解,它继承自@Controller注解.4.0之前的版本,Spr ...
- SpringBoot | 第六章:常用注解介绍及简单使用
前言 之前几个章节,大部分都是算介绍springboot的一些外围配置,比如日志配置等.这章节开始,开始总结一些关于springboot的综合开发的知识点.由于SpringBoot本身是基于Sprin ...
随机推荐
- 基于airtest验证Android端app是否安装及自动化安装
1.检测app是否安装: 使用check_app方法检测是否安装:为什么需要在封装一层做断言呢?主要check_app方法安装成功会返回True,但是未检测到安装时直接报异常了,停止执行.无法直接 ...
- dubbo相关面试题
1.说说Dubbo的分层? 从大的范围来说,dubbo分为三层,business业务逻辑层由我们自己来提供接口和实现还有一些配置信息,RPC层就是真正的RPC调用的核心层,封装整个RPC的调用过程.负 ...
- JS this指向相关
function Foo() { getName = function() { console.log(1) } return this;}Foo.getName = function() { con ...
- Q:su命令切换用户无法使用,被拒绝
su命令切换用户无法使用,被拒绝 问题描述 su 命令报错 su: Permission denied 如下图: su 命令 报错 su: Permission denied,不管是su普通用户还是r ...
- mysql主从同步复制
主从同步原理 master记录数据操作 开启binlog日志 设置binlog日志格式 指定server_id slave启用俩个线程 slave_io:复制master主机binlog日志为文件里的 ...
- Mysql5.7的安装与卸载与数据迁移
Mysql5.7的安装与卸载 安装: 1.安装的时候 只选择安装 server即可 2.安装过程中,一定要重新选择安装路径和各个日志的路径,将来会非常大,不适合存在系统盘下面 3.安装时,取消MySQ ...
- R 曲线拐点
x = seq(1,15) y = c(4,5,6,5,5,6,7,8,7,7,6,6,7,8,9) plot(x,y,type="l",ylim=c(3,10)) lo < ...
- Ubuntu 中tab键不能自动补全解决方法
1.打开文件vim /etc/bash.bashrc(root下操作)2.找到下面几行 3.去掉前面的#号 4.最后source /etc/bash.bashrc即可
- mysql-开启日志记录功能
开启日志记录功能 -- 开启功能 SET GLOBAL general_log = ON; -- 保存到文件 SET GLOBAL log_output = 'file'; 查看日志内容 -- 查看日 ...
- Kibana+X-pack安装使用
安装Kibana 下载解压安装包,一定要装与ES相同的版本 下载地址: https://www.elastic.co/downloads/kibana wget https://artifacts.e ...