Solon2 开发之IoC,五、Bean 扫描的三种方式
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);
}
}
Solon2 开发之IoC,五、Bean 扫描的三种方式的更多相关文章
- Solon 开发,四、Bean 扫描的三种方式
Solon 开发 一.注入或手动获取配置 二.注入或手动获取Bean 三.构建一个Bean的三种方式 四.Bean 扫描的三种方式 五.切面与环绕拦截 六.提取Bean的函数进行定制开发 七.自定义注 ...
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
- 【Spring】的【bean】管理(XML配置文件)【Bean实例化的三种方式】
Bean实例化的三种方式 说明:通过配置文件创建对象就称为Bean实例化. 第一种:使用类的无参构造创建(重点) 实体类 package com.tyzr.ioc; public class User ...
- Spring中bean实例化的三种方式
之前我已经有好几篇博客介绍Spring框架了,不过当时我们都是使用注解来完成注入的,具体小伙伴可以参考这几篇博客(Spring&SpringMVC框架案例).那么今天我想来说说如何通过xml配 ...
- Spring bean管理器 bean实例化的三种方式
bean实例化的三种方式实现 第一种:使用类的无参数构造方法创建(常用 重要) 第一种实例化方式最常用,实例化类时会通过调用无参构造方法创建.示例代码如下: package spring.com.Us ...
- spring中创建bean对象的三种方式以及作用范围
时间:2020/02/02 一.在spring的xml配置文件中创建bean对象的三种方式: 1.使用默认构造函数创建.在spring的配置文件中使用bean标签,配以id和class属性之后,且没有 ...
- spring学习(03)之bean实例化的三种方式
bean实体例化的三种方式 在spring中有三中实例化bean的方式: 一.使用构造器实例化:(通常使用的一个方法,重点) 二.使用静态工厂方法实例化: 三.使用实例化工厂方法实例化 第一种.使用构 ...
- 【Spring】Spring之向 IOC 容器注入对象的三种方式
关于Spring的搭建可参见:浅析Spring框架的搭建.在测试之前还是应该先将环境配置好,将相关Jar包导进来.Spring创建的对象,默认情况下都是单例模式,除非通过scope指定. 向IOC容器 ...
- bean依赖注入三种方式
bean依赖注入的三种方式如下: 1.构造方法注入 2.set方法注入 3.P命名空间注入 此处演示的项目结构如下: 方法一: 构造方法注入 UserDaoImpl.java public class ...
- Spring学习(五)-----注入bean属性的三种方式( 1: 正常的方式 2: 快捷方式 3: “p” 模式)
在Spring中,有三种方式注入值到 bean 属性. 正常的方式 快捷方式 “p” 模式 看到一个简单的Java类,它包含两个属性 - name 和 type.稍后将使用Spring注入值到这个 b ...
随机推荐
- linux系统centos7安装docker
1.Docker官网安装地址 https://docs.docker.com/engine/install/centos/#prerequisites 2.离线安装下载地址 https://downl ...
- python3使用pymsql操作mysql数据库
操作系统 :Windows 10_x64 python版本 :3.9.2 pymysql版本: 1.0.2 MySQL版本: 5.7.38 之前写过一篇关于python操作mysql数据库的文章: ...
- ST 表
ST 表 定义 ST 表是用于解决 可重复贡献问题 的数据结构,通俗来说,一般可以解决区间查询问题. 区间最值和 \(gcd\) 我们以最大值为例,然后可以再推广到最小值和区间 \(gcd\) 首先你 ...
- Vue公共loading升级版(处理并发异步差时响应)
公共loading是项目系统中很常见的场景,处理方式也不外乎三个步骤: 1.通过全局状态管理定义状态值(vuex.pinia等). 2.在程序主入口监听状态值变化,从而展示/隐藏laoding动画. ...
- 第二章 若依JFlow流程模型设计
若依-JFlow框架如何拉取.配置并运行请查看这篇文章:<第一章 若依-JFlow的配置与启动> 上一节我们讲解了如何拉取若依-JFlow框架代码并配置运行,这一部分我们就以公司员工请假的 ...
- out.print()
在学习过程中发现跟着视频打out.print报错 查阅资料知道 新建Java工程时,应选择Java Enterprise而非Java里的webapplication(Java Enterprise会自 ...
- java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present
完整的报错信息 java.lang.TypeNotPresentException: Type javax.servlet.http.HttpServletRequest not present at ...
- bash shell笔记整理——cd命令、目录路径
cd---change directory 改变目录的意思 语法: cd [选项] <目录> 选项: -L 会自动进入符号连接目录(默认) -P 进入符号连接目录的真实目录下. 常用: 命 ...
- cache操作:clean、invalidate与flush的含义
前言 本文试图搞清楚cache几个操作:clean.invalidate与flush的含义.由于只用过ARM和RISC-V,所以是从ARM和RISC-V的角度来说明. cache line cache ...
- MinIO客户端之du
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc du 用于输出桶内对象的数量和占用的空间. 命令如下: ./mc du local1/bkt1 控制台的输出 ...