### 1、导入组件（即扩大扫描范围）

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

```java
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` 的结合。一般注解到启动类上：

```java
//导入并替掉已有的配置键（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" 为外部文件



### 附：注解对应的手动模式


```java
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(...);
        });
    }
}
```