Solon

solon.aspect

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.aspect</artifactId>
</dependency>

1、描述

基础扩展插件,提供基于 asm 的类动态代理能力。并新增加了三个语义注解:

注解说明
@DaoDao 的语义注解,同时增加类动态代理能力
@ServiceService 的语义注解,同时增加类动态代理能力
@RepositoryRepository 的语义注解,同时增加类动态代理能力

具有类动态代理能力的Bean,才能支持对Method拦截。进而支持@Tran@Cache等Aop功能。

2、代码应用

@Service
public class DemoService{
    @Inject
    UserMapper userMapper;

    @Tran
    public void test(User user){
        userMapper.add(user);
    }
}

3、自建类动态代理能力的注解

//以 @Service 为例:
Solon.context().beanBuilderAdd(Service.class, (clz, bw, anno) -> {
    String beanName = Utils.annoAlias(anno.value(), anno.name());

    //此处是重点,所有的 BeenWrap 经过 AspectUtil.binding 之后,即可拥有类动态代理能力
    AspectUtil.binding(bw, beanName, anno.typed());
});