Solon v3.0.3

@Import 使用说明

</> markdown

1、导入组件(即扩大扫描范围)

导入主类包名之外的类,一般注解到启动类上:

package org.demo.a;

//导入单个类
@Import(org.demo.b.Com.class)
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args);
    }
}

//导入类所在的包
@Import(scanPackageClasses=org.demo.b.Com.class)
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args);
    }
}

//导入包
@Import(scanPackages="org.demo.b")
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args);
    }
}

2、导入配置文件,v2.5.11 后支持

这个功能相当于是配置: solon.config.addsolon.config.load 的结合。一般注解到启动类上:

//导入并替掉已有的配置键(profiles)
@Import(profiles = {"classpath:demo1.yml", "./demo2.yml"})
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args);
    }
}

//导入并“不”替掉已有的配置键(profilesIfAbsent)
@Import(profilesIfAbsent = {"classpath:demo1.yml", "./demo2.yml"})
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args);
    }
}

其中 "classpath:demo1.yml" 为内部资源文件,"./demo2.yml" 为外部文件

附:注解对应的手动模式

package org.demo.a;

//导入单个类
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args, app->{
            //在插件加载完成后处理
            app.onEvent(AppPluginLoadEndEvent.class, e->{
                app.context().beanMake(org.demo.b.Com.class);
            });
        });
    }
}

//导入类所在的包
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args, app->{
            //在插件加载完成后处理
            app.onEvent(AppPluginLoadEndEvent.class, e->{
                app.context().beanScan(org.demo.b.Com.class);
            });
        });
    }
}

//导入配置并替掉已有的键
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args, app->{
            app.cfg().loadAdd(...);
        });
    }
}

//导入配置并“不”替掉已有的键(注意这个“不”的区别)
public class App{
    public static void main(String[] args){
        Solon.start(App.clas, args, app->{
            app.cfg().loadAddIfAbsent(...);
        });
    }
}