首页 > 其他分享 >Solon2 开发之容器,五、Bean 扫描的三种方式

Solon2 开发之容器,五、Bean 扫描的三种方式

时间:2023-02-12 22:14:19浏览次数:32  
标签:args 扫描 class DemoApp Bean example Solon2 org public

1、启动时扫描

package org.example.demo;

public class DemoApp{
    public static void main(String[] args){
        //
        // DemoApp.clas 的作用,是提供一个扫描范围;DemoApp.class 所在包名下的bean都会被扫描到
        //
        Solon.start(DemoApp.class, args);
    }
}

这个时候,如果不在 org.example.demo 下的类也想被扫描怎么办?

2、通过导入器扩充扫描包的范围

  • 注解模式
package org.example.demo;

//此时会增加 org.example.demo2 包的扫描
@Import(scanPackages = "org.example.demo2")
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args);
    }
}
  • 手动模式
package org.example.demo;

//在应用启动时处理
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args, app->{
            
            //此时会增加 org.example.demo2 包的扫描(手动模式,在开发插件时会带来便利)
            app.context().beanScan("org.example.demo2");
        });
    }
}

//在插件启动时处理
public class XPluginImp implements Plugin {
    @Override
    public void start(AopContext context) {
        context.beanScan("org.example.demo2");
    }
}

增加一个包的扫描可能浪费性能,如果只想导入一个类?

3、通过导入器导入1个类

  • 注解模式
package org.example.demo;

//如果 UserServiceImpl 是在 org.example.demo2 包下,又想被扫描
@Import(UserServiceImpl.class)
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args);
    }
}
  • 手动模式
package org.example.demo;

//在应用启动时处理
public class DemoApp{
    public static void main(String[] args){
        Solon.start(DemoApp.class, args, app->{
            //相对来说,只导入一个类性能要好很多(随需而定)
            app.context().beanMake(UserServiceImpl.class);
        });
    }
}

//在插件启动时处理
public class XPluginImp implements Plugin {
    @Override
    public void start(AopContext context) {
        context.beanMake(UserServiceImpl.class);
    }
}

标签:args,扫描,class,DemoApp,Bean,example,Solon2,org,public
From: https://www.cnblogs.com/noear/p/17114825.html

相关文章

  • Solon2 开发之容器,六、提取 Bean 的函数进行定制开发
    为什么需要提取Bean的函数?绝不是闲得淡疼。比如:控制器的@Mapping;再比如:Xxl-Job的@XxlJob。这些都是要提取Bean的函数并定制加工的。1、比如提取@XxlJob注解的函数,并注册......
  • Solon2 开发之容器,七、切面与函数环绕拦截
    想要环绕拦截一个Bean的函数。需要三个前置条件:通过注解做为“切点”,进行拦截(不能无缘无故给拦了吧?费性能)Bean的method是被代理的在Bean被扫描之前,完成环绕拦截......
  • Solon2 开发之容器,八、动态代理的本质
    在Java里动态代理,主要分:接口动态代理和类动态代理。因为它的代理类都是动态创建的,所以名字里会带上“动态”。官网的有些地方叫“代理”,也有些地方叫“动态代理”。都......
  • Solon2 开发之容器,三、注入或手动获取 Bean
    1、如何注入Bean?先了解一下Bean生命周期的简化版:运行构建函数尝试字段注入(有时同步注入,没时订阅注入。不会有相互依赖而卡住的问题)@Init函数(是在容器初始化完成后才......
  • Solon2 开发之容器,四、注入依赖与初始化
    Solon强调有克制的注入+手动控制结合的模式。好处是,代码用料少、启动快。Bean的关键生命节点:节点说明1.Constructor(构造方法)不支持参数注入2.@In......
  • Solon2 开发之容器,一、注入或手动获取配置
    约定resources/app.yml(或app.properties)#为应用配置文件配置样例track:name:xxxurl:http://a.a.adb1:jdbcUrl:"jdbc:mysql://..."username:......
  • Solon2 开发之容器,二、构建一个 Bean 的三种方式
    1、手动简单的构建://生成普通的BeanSolon.context().wrapAndPut(UserService.class,newUserServiceImpl());//生成带注解的Bean(比如:@Controller)Solon.context().be......
  • Bean的拓展和应用
    一.Bean的作用域1.单例模式(spring的默认机制,即拿相同的bean的时候对象都是相同的,不会造成资源浪费)<beanid="user"class="top.lostyou.pojo.user"p:name="jay周"p:se......
  • 022_第三方 bean 属性绑定
    @ConfigurationProperties使用 @ConfigurationProperties为第三方bean绑定属性:    解除使用@ConfigurationProperties注释警告:    @EnableConf......
  • 扫描游戏
    问题描述有一根围绕原点 �O 顺时针旋转的棒 ��OA,初始时指向正上方(Y轴正向)。在平面中有若干物件,第 �i 个物件的坐标为 (��,��)(xi​,yi​),价值为 ��zi​ 。当棒扫......