@Import 使用说明
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.add
和 solon.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(...);
});
}
}