一文掌握SpringBoot注解之@Component 知识文集(8)

在这里插入图片描述

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。
🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。
🎉欢迎 👍点赞✍评论⭐收藏

🔎 SpringBoot 领域知识 🔎

链接专栏
SpringBoot 专业知识学习一SpringBoot专栏
SpringBoot 专业知识学习二SpringBoot专栏
SpringBoot 专业知识学习三SpringBoot专栏
SpringBoot 专业知识学习四SpringBoot专栏
SpringBoot 专业知识学习五SpringBoot专栏
SpringBoot 专业知识学习六SpringBoot专栏
SpringBoot 专业知识学习七SpringBoot专栏
SpringBoot 专业知识学习八SpringBoot专栏
SpringBoot 专业知识学习九SpringBoot专栏
SpringBoot 专业知识学习十SpringBoot专栏
SpringBoot 专业知识学习十一SpringBoot专栏
SpringBoot 专业知识学习十二SpringBoot专栏
SpringBoot 专业知识学习十三SpringBoot专栏
SpringBoot 专业知识学习十四SpringBoot专栏
SpringBoot 专业知识学习十五SpringBoot专栏
SpringBoot 专业知识学习十六SpringBoot专栏
SpringBoot 专业知识学习十七SpringBoot专栏
SpringBoot 专业知识学习十八SpringBoot专栏
SpringBoot 专业知识学习十九SpringBoot专栏
SpringBoot 专业知识学习二十SpringBoot专栏
SpringBoot 专业知识学习二十一SpringBoot专栏
SpringBoot 专业知识学习二十二SpringBoot专栏
SpringBoot 专业知识学习二十三SpringBoot专栏

文章目录

    • 🔎 Java 注解 @Component 学习(8)
      • 🍁 71、如何使用 @Component 注解创建一个抽象类的 Bean?
      • 🍁 72、@Component 注解与 @EnableAspectJAutoProxy 注解的关系是什么?
      • 🍁 73、在 Spring 中,是否可以通过 @Component 注解注入一个非单例(Prototype)作用域的 Bean?
      • 🍁 74、@Component 注解与 @Resource 注解一起使用的目的是什么?
      • 🍁 75、在 Spring 中,是否可以通过 @Component 注解注入一个父类的 Bean?
      • 🍁 76、@Component 注解与 @Lazy 注解一起使用的目的是什么?
      • 🍁 77、@Component 注解与 @TransactionalEventListener 注解的关系是什么?
      • 🍁 78、如何使用 @Component 注解注册一个工厂类(Factory Bean)?
      • 🍁 79、@Component 注解与 @Profile 注解的关系是什么?
      • 🍁 80、在 Spring 中,是否可以通过 @Component 注解注入一个子类的 Bean?


🔎 Java 注解 @Component 学习(8)

在这里插入图片描述


🍁 71、如何使用 @Component 注解创建一个抽象类的 Bean?

在 Spring 中,@Component 注解通常用于标识具体类作为组件的 bean。但是,从 Spring 4.0 开始,你可以使用 @Component 注解来创建一个抽象类的 bean。以下是使用 @Component 注解创建抽象类的 bean 的步骤:

1.在抽象类上添加 @Component 注解,这将告诉 Spring 框架将该抽象类实例化为 bean,并将其添加到 Spring 容器中。

@Component
public abstract class AbstractBean {
    // 抽象类的定义
}

2.创建具体类并继承抽象类。具体类需要标注 @Component 注解,以便 Spring 将其实例化为 bean。

@Component
public class ConcreteBean extends AbstractBean {
    // 具体类的定义
}

通过上述步骤,Spring 将会扫描带有 @Component 注解的类,并自动将其实例化为 bean。在这个例子中,ConcreteBean 继承了 AbstractBean,并且两个类都被标注了 @Component 注解,因此 Spring 会分别创建 ConcreteBeanAbstractBean 的 bean。

注意,如果你在抽象类上标注了 @Component 注解,但没有具体类继承该抽象类并标注 @Component 注解,那么 Spring 将无法创建该抽象类的 bean 实例。

当你需要通过接口或基类引用一个抽象类的 bean 时,可以使用自动装配或者依赖注入来获取具体类的实例。例如,可以使用 @Autowired 注解将抽象类的 bean 注入到其他类中:

@Component
public class MyClass {
    private final AbstractBean abstractBean;

    @Autowired
    public MyClass(AbstractBean abstractBean) {
        this.abstractBean = abstractBean;
    }

    // ...
}

在上面的例子中,MyClass 类通过构造函数注入了 AbstractBean,Spring 会自动查找并注入具体类 ConcreteBean 的实例。

总结来说,通过在抽象类上标注 @Component 注解,然后在具体类上继承该抽象类并标注 @Component 注解,就可以让抽象类成为一个可被 Spring 管理的 bean。这样可以灵活地管理抽象类的实例,并使用依赖注入等 Spring 特性来实现业务逻辑。


🍁 72、@Component 注解与 @EnableAspectJAutoProxy 注解的关系是什么?

@Component 注解和 @EnableAspectJAutoProxy 注解是 Spring 框架中的两个常用注解,用于组件管理和切面编程。它们之间的关系如下:

1.@Component 注解@Component 注解是一个通用的注解,用于将一个类标识为一个可被 Spring 框架扫描和管理的组件(bean)。使用 @Component 注解的类将被实例化为 bean 并添加到 Spring 容器中供其他组件使用。

2.@EnableAspectJAutoProxy 注解@EnableAspectJAutoProxy 注解用于启用 AspectJ 自动代理功能,以便在应用程序中使用切面编程。

关系:@EnableAspectJAutoProxy 注解通常与 @Component 注解一起使用,用于将带有 @Component 注解的 bean 通过 AspectJ 自动代理进行增强。

例如,假设你有一个名为 MyComponent 的类:

@Component
public class MyComponent {
    public void doSomething() {
        // ...
    }
}

你需要将这个类实例化为 bean,然后在 doSomething 方法执行前后增加日志输出。为了实现这个功能,你可以创建一个名为 MyAspect 的切面类:

@Aspect
@Component
public class MyAspect {
    @Before("execution(* com.example.MyComponent.doSomething())")
    public void beforeDoSomething() {
        System.out.println("Before doSomething()...");
    }

    @After("execution(* com.example.MyComponent.doSomething())")
    public void afterDoSomething() {
        System.out.println("After doSomething()...");
    }
}

这个切面类使用 @Aspect 注解来声明自己是一个切面,使用 @Before@After 注解来声明切入点和增强逻辑。注意,这个切面类也被标注了 @Component 注解,以便 Spring 框架能够自动扫描并管理它。

最后,在配置类中使用 @EnableAspectJAutoProxy 注解来开启 AspectJ 自动代理:

@Configuration
@EnableAspectJAutoProxy
@ComponentScan("com.example")
public class AppConfig {
    // ...
}

在这个配置类中,我们使用 @EnableAspectJAutoProxy 注解来开启 AspectJ 自动代理,并指定使用 com.example 包路径下的所有组件。这将使得 Spring 框架能够自动扫描所有带有 @Component 注解的组件,并在运行时动态生成代理增强这些组件。

总的来说,通过使用 @Component@EnableAspectJAutoProxy 注解的组合,可以方便地实现切面编程,增加应用程序的功能和可维护性。


🍁 73、在 Spring 中,是否可以通过 @Component 注解注入一个非单例(Prototype)作用域的 Bean?

在 Spring 中,默认情况下,使用 @Component 注解标记的 Bean 是单例(Singleton)作用域的,即每个 Spring 容器只会创建一个实例。这是因为 Spring 默认使用了单例模式来管理 Bean 的生命周期和依赖关系。

然而,Spring 也提供了多种作用域,包括原型(Prototype),即每次请求或注入时都会创建一个新的实例。你可以通过在 @Component 注解上使用 @Scope 注解来指定自定义作用域。

例如,如果你想要注入一个原型作用域的 Bean,你可以按照以下步骤进行操作:

1.创建一个原型作用域的组件类,例如 MyPrototypeBean

@Component
@Scope("prototype")
public class MyPrototypeBean {
    // ...
}

2.在其他需要使用它的地方,使用 @Autowired 注解注入该 Bean:

@Component
public class MyComponent {
    @Autowired
    private MyPrototypeBean myPrototypeBean;

    // ...
}

在上述示例中,MyPrototypeBean 使用 @Component 注解标记为一个组件,并使用 @Scope("prototype") 注解将其定义为原型作用域。然后,在 MyComponent 类中,通过使用 @Autowired 注解来自动注入 MyPrototypeBean

在每次请求 MyPrototypeBean 时,Spring 都会创建一个新的实例,而不是重用之前创建的实例。

需要注意的是,默认情况下,Spring 使用单例模式来管理 Bean,因此,如果你没有显式指定 Bean 的作用域,那么 Bean 将被视为单例。若要使用其他作用域,必须显式声明并指定正确的作用域注解。


🍁 74、@Component 注解与 @Resource 注解一起使用的目的是什么?

@Component 注解和 @Resource 注解是 Spring 框架中的两个不同的注解,各自有着不同的作用和用途。

@Component 注解是 Spring 提供的一个通用注解,用于标识一个类为一个组件(Component)。被标注为 @Component 的类将被 Spring 扫描并纳入到 Spring 容器中进行管理,可以通过相关的注解(如 @Autowired@Resource@Inject 等)进行依赖注入或者使用其他 Spring 的功能。

@Resource 注解是一个由 Java EE 提供的注解,也可以用于依赖注入,类似于 Spring 的 @Autowired 注解。它标识了一个需要进行注入的资源,可以是一个 Bean,也可以是其他一些资源。@Resource 注解可以通过名称或者类型来指定注入的资源。

因此,@Component 注解和 @Resource 注解可以一起使用,其目的是将一个被 @Component 注解标记的组件与一个被 @Resource 注解标记的资源进行关联,实现依赖注入。

例如,如果你有一个 MyComponent 组件类,并且该类需要依赖一个名为 “myResource” 的资源(可以是一个 Bean 或者其他资源),你可以这样使用 @Resource 注解来注入该资源:

@Component
public class MyComponent {
    @Resource(name = "myResource")
    private MyResource myResource;

    // ...
}

在上述示例中,@Component 注解将 MyComponent 标记为一个 Spring 组件,并将其纳入到 Spring 容器的管理中。然后,@Resource 注解与 name 属性指定了需要注入的资源名称为 “myResource”。

总结来说,@Component 注解用于标记组件类,@Resource 注解用于注入指定的资源,两者配合使用可以实现依赖注入的功能。


🍁 75、在 Spring 中,是否可以通过 @Component 注解注入一个父类的 Bean?

在 Spring 中,使用 @Component 注解可以进行依赖注入,包括注入父类的 Bean。当一个父类被标记为 @Component 注解时,它会被 Spring 扫描并纳入到 Spring 容器中进行管理,这样它的子类也可以通过依赖注入的方式来获取对应的实例。

假设你有以下的类继承关系:

@Component
public class ParentBean {
    // ...
}

@Component
public class ChildBean extends ParentBean {
    // ...
}

@Component
public class MyComponent {
    @Autowired
    private ParentBean parentBean;

    // ...
}

在上述示例中,ParentBeanChildBean 都被标记为 @Component 注解,它们都是由 Spring 扫描并纳入到 Spring 容器中进行管理的。然后,在 MyComponent 类中,使用 @Autowired 注解将 ParentBean 注入到 parentBean 字段中。

注意,当你在 @Component 注解上使用了 @Autowired 注解时,Spring 会根据类型进行注入。由于 ChildBeanParentBean 的子类,所以它可以自动被注入到 ParentBean 类型的字段中。这种方式称为"自动装配 by Type"。

需要注意的是,如果你在类继承链中同时有多个具有相同类型的父类 Bean,那么在注入时可能会发生歧义。在这种情况下,你可以使用 @Qualifier 注解或者根据 Bean 的名称进行注入。

总结来说,在 Spring 中,使用 @Component 注解可以注入父类的 Bean。子类可以通过依赖注入的方式来获取对应的父类实例。


🍁 76、@Component 注解与 @Lazy 注解一起使用的目的是什么?

在 Spring 中,@Component 注解用于标注一个组件类,并将其纳入到 Spring 容器进行管理,并且在应用程序启动时就会被实例化和初始化。但是,在某些情况下,我们希望将对象的初始化尽可能地延迟,以提高系统的性能和响应能力。这时,可以使用 @Lazy 注解来实现延迟初始化。

@Lazy 注解可以作用于 @Component 注解,并定义一个组件是否应该在第一次使用它时延迟初始化。

例如,你可以这样使用 @Component@Lazy 注解:

@Component
@Lazy
public class MyComponent {
    // ...
}

在上述示例中,@Component 注解将 MyComponent 标记为一个 Spring 组件,并将其纳入到 Spring 容器管理中。然后,@Lazy 注解告诉 Spring,该组件应该在第一次使用它时进行初始化,而不是在应用程序启动时就立即初始化。

需要注意的是,当使用 @Component@Lazy 注解时,你需要确保该组件不会被其他组件过早地依赖注入。否则,可能会导致组件在处理最初状态时被调用,从而无法实现延迟加载的目的。

总之,通过使用 @Component@Lazy 注解,你可以将组件的初始化尽可能地延迟,从而提高系统的性能和响应能力。


🍁 77、@Component 注解与 @TransactionalEventListener 注解的关系是什么?

在 Spring 中,@Component 注解用于标注一个组件类,并将其纳入到 Spring 容器进行管理;而 @TransactionalEventListener 注解用于在事务完成后的异步模式下监听事件。

两者之间的关系在于,如果你的 Spring 组件需要在事务完成后处理异步事件,那么你可以在 Spring 组件定义中使用 @TransactionalEventListener 注解来注册该事件的监听器,从而触发异步处理。

例如,你可以这样在 Spring 组件中使用 @TransactionalEventListener 注解:

@Component
public class MyComponent {
    @TransactionalEventListener
    public void handleMyEvent(MyEvent event) {
        // 执行异步处理逻辑
    }
}

在这个示例中,MyComponent 类被标记为 @Component 注解,作为一个 Spring 组件被纳入到 Spring 容器管理中。而 handleMyEvent 方法上使用 @TransactionalEventListener 注解,表示该方法将监听一个 MyEvent 事件。当某个事务完成时,如果该事务触发了 MyEvent 事件,Spring 将调用该方法,从而触发异步处理。

需要注意的是,只有在事务完成后,Spring 才会被触发异步处理。如果方法中使用了 @Transactional 注解来标记一个事务,那么它必须成功地完成,才会触发异步处理。否则,异步处理也不会被执行。

总之,@Component 注解可以将组件纳入到 Spring 容器的管理中,而 @TransactionalEventListener 注解可以在事务完成后监听事件并进行异步处理。两者结合使用,可以实现更加灵活和高效的异步处理。


🍁 78、如何使用 @Component 注解注册一个工厂类(Factory Bean)?

在 Spring 中,要使用 @Component 注解注册一个工厂类(Factory Bean),你可以结合@Component@Bean注解来完成。

首先,使用@Component注解标记工厂类,将其纳入到 Spring 容器管理中:

@Component
public class MyFactory {
    // ...
}

然后,在工厂类中定义一个返回所需实例的方法,并使用 @Bean 注解标记该方法:

@Component
public class MyFactory {
    @Bean
    public SomeBean createSomeBean() {
        // 创建并返回SomeBean实例
        return new SomeBean();
    }
}

在上述示例中,工厂类 MyFactory 使用 @Component 注解将其纳入到 Spring 容器管理中。同时,createSomeBean() 方法上使用 @Bean 注解,表示这是一个工厂方法,用于创建并返回 SomeBean 类的实例。

当 Spring 容器初始化时,它会扫描到 MyFactory 类并将其实例化,同时会识别到 createSomeBean() 方法,并将其注册为一个用于创建 SomeBean 实例的工厂方法。在其他类中,你可以通过依赖注入的方式获取 SomeBean 实例,Spring 会自动调用工厂方法并返回实例给你。

需要注意的是,如果工厂方法需要注入其他依赖,你可以在工厂类中使用构造函数或其他被 @Autowired 注解标记的方法来进行依赖注入。

总结起来,使用@Component 注解标记工厂类,并在工厂类中定义一个工厂方法并使用 @Bean 注解标记该方法,可以注册一个工厂类(Factory Bean)到 Spring 容器中。


🍁 79、@Component 注解与 @Profile 注解的关系是什么?

在 Spring 中,@Component 注解用于标记一个类作为组件并纳入 Spring 容器管理。而 @Profile 注解用于指定在特定的运行环境或配置条件下才会被注册和使用的组件。

两者的关系是,@Profile 注解可以和 @Component 注解一起使用,以定义特定环境下要注册的组件。

例如,假设你有一个配置类 MyConfig,其中定义了一个基于 @Profile 注解的条件组件注册:

@Configuration
public class MyConfig {

    @Bean
    @Profile("dev")
    public MyComponent devComponent() {
        // 创建并返回 dev 环境下的组件实例
        return new MyComponent();
    }

    @Bean
    @Profile("prod")
    public MyComponent prodComponent() {
        // 创建并返回 prod 环境下的组件实例
        return new MyComponent();
    }

}

在这个示例中,MyConfig 类使用 @Configuration 注解来标记为配置类,表示它将提供一些配置。同时,devComponent() 方法上使用 @Bean 注解,并指定了 @Profile("dev"),表示该方法定义了一个在 “dev” 环境下的组件注册。类似地,prodComponent() 方法也定义了一个在 “prod” 环境下的组件注册。

在实际运行时,你可以通过设置 Spring 的活动配置文件或通过编程方式设置运行环境(例如调用 setActiveProfiles() 方法)来指定具体的环境。当 Spring 确定当前运行环境与 @Profile 注解指定的环境匹配时,才会注册相应的组件。

总结起来,@Component 注解用于标记一个组件类并纳入 Spring 容器管理,@Profile 注解用于指定在特定的运行环境或配置条件下才会注册和使用的组件。


🍁 80、在 Spring 中,是否可以通过 @Component 注解注入一个子类的 Bean?

你可以使用 @Component 注解来注入一个子类的 Bean。

在 Spring 中,可以通过构造函数注入、setter 方法注入或字段注入来注入 Bean。不论使用哪种方式,只要在需要注入的位置使用 @Autowired@Resource 注解,Spring 就会尝试从容器中找到对应的 Bean 并完成注入。

下面分别演示三种方式来注入子类的 Bean:

(1)构造函数注入:

@Component
public class MyComponent {
    private MySubComponent subComponent;

    @Autowired
    public MyComponent(MySubComponent subComponent) {
        this.subComponent = subComponent;
    }

    // ...
}

在上述示例中,MyComponent 类通过构造函数注入了一个 MySubComponent 类型的依赖。当容器创建并初始化 MyComponent 实例时,会自动从容器中寻找并注入一个 MySubComponent 类型的 Bean。

(2)setter 方法注入:

@Component
public class MyComponent {
    private MySubComponent subComponent;

    @Autowired
    public void setSubComponent(MySubComponent subComponent) {
        this.subComponent = subComponent;
    }

    // ...
}

在这个示例中,MyComponent 类使用 setSubComponent() 方法注入了一个 MySubComponent 类型的依赖。当容器创建并初始化 MyComponent 实例时,会自动从容器中寻找并注入一个 MySubComponent 类型的 Bean。

(3)字段注入:

@Component
public class MyComponent {
    @Autowired
    private MySubComponent subComponent;

    // ...
}

在这个示例中,MyComponent 类使用字段注入的方式,即直接在字段上使用 @Autowired 注解来注入一个 MySubComponent 类型的依赖。当容器创建并初始化 MyComponent 实例时,会自动从容器中寻找并注入一个 MySubComponent 类型的 Bean。

不论使用哪种注入方式,Spring 都会根据类型匹配的规则来查找匹配的 Bean,并完成注入。

总结起来,使用 @Component 注解来注入一个子类的 Bean,可以使用构造函数注入、setter 方法注入或字段注入的方式,并在需要注入的位置使用 @Autowired@Resource 注解。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/359701.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Nginx 本地部署vue项目

1、 下载 Nginx 稳定版本 2、下载安装后,打开 nginx.conf配置文件 3、找到打包好的文件,并配置运行文件 文件的位置 root C:/server/build location /{root C:/server/build;index index.html index.htm;#解决刷新后nginx报404问题try_files $uri …

redis复习笔记05(小滴课堂)

案例实战之注册登录-图形验证码谷歌开源Kaptcha引入 验证码配置工具类。 验证码存储Redis逻辑编码实战 工具类用于获取本机ip和md5加密,直接使用就行,我们这里主要是学习redis不是学习这个。 获取验证码并存到redis中的接口: 运行测试&…

聚焦AI新动能,九州未来与燧弘华创签约!

1月24日,厦门市电子信息与人工智能产业高质量发展大会成功举办。来自电子信息产业、人工智能领域的企业家、专家等近300位嘉宾齐聚一堂,共谋智能基础,共话产业合作,共享发展商机。 会上,九州未来与燧弘华创签署算力租…

【Tomcat与网络4】Tomcat的连接器设计

目录 1 如何设计一个灵活可靠的连接器 2 主要组件介绍 在上一篇,我们介绍了Tomcat提供服务的整体结构,本文我们一起来看一下Tomcat的连接器的设计。 在前面我们提到Tomcat主要完成两个功能: 处理 Socket 连接,负责网络字节流与…

详解SpringCloud微服务技术栈:深入ElasticSearch(1)——数据聚合

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:详解SpringCloud微服务技术栈:ElasticSearch实战(旅游类项目) 📚订阅专栏&#x…

Docker容器引擎镜像创建

目录 一、镜像的创建 (一)基于现有镜像创建 1.启动一个镜像,在容器里做修改 2.将修改后的容器提交为新的镜像 (二)基于本地模板创建 (三)基于Dockerfile 创建 1.联合文件系统&#xff08…

【DB2 流浪之旅】 第一讲 Linux 环境安装 db2 数据库

DB2数据库是IBM开发的一种大型关系型数据库平台。它支持多用户或应用程序在同一条SQL 语句中查询不同database甚至不同DBMS中的数据。一般DB2是搭配IBM Power系列小机使用的,兼容性好、性能高。当然DB2也有Linux版本的,相对性能会差一些,主要…

大创项目推荐 题目:基于深度学习卷积神经网络的花卉识别 - 深度学习 机器视觉

文章目录 0 前言1 项目背景2 花卉识别的基本原理3 算法实现3.1 预处理3.2 特征提取和选择3.3 分类器设计和决策3.4 卷积神经网络基本原理 4 算法实现4.1 花卉图像数据4.2 模块组成 5 项目执行结果6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基…

前端基础-事件循环(消息循环)

这里写自定义目录标题 1. 浏览器进程主要的进程(了解) 2. 渲染主线程是如何工作的?3. 面试题:如何理解 JS 的异步?3. JS为何会阻碍渲染?4. 任务有优先级吗?5. 面试题:阐述一下 JS 的…

React-Native跟Android交互--简单示例记录

/** * 使用命令 npx react-nativelatest init DemoRN创建项目 * * "react": "18.2.0", * "react-native": "0.73.2" * * 官网有详细教程:https://reactnative.dev/docs/native-modules-android */ 一、RN invoke androi…

Docker 镜像的创建

创建镜像有三种方法,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 一、基于现有镜像创建 创建nginx镜像: 1、首先启动一个容器,在容器里做修改 2、然后将修改后的容器提交为新的镜像,需要使用该容器的 I…

Compose | UI组件(十二) | Lazy Layout - 列表

文章目录 前言LazyListScope作用域 用来干什么?LazyColumn组件含义?LazyColumn的基本使用LazyColumn Padding设置边距LazyColumn 设置边距 (contentPadding)LazyColumn 为每个子项设置边距 (Arrangement.spacedBy())LazyColumn 根据 rememberLazyListSta…

使用visual studio写一个简单的c语言程序

官网下载visual studio,社区版免费的 https://visualstudio.microsoft.com/zh-hans/ 下载好以后选择自己的需求进行安装,我选择了两个,剩下的是默认。 创建文件:

android学习笔记----ListView和各种适配器简介

打气筒(LayoutInflater对象)介绍: MainActivity.java import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import an…

15.Golang中的反射机制及应用

目录 概述实践基本应用复杂应用 结束 概述 Golang中的反射用法还是比较简单的 reflect.TypeOf(arg)reflect.ValueOf(arg) 实践 基本应用 package mainimport ("fmt""reflect" )func reflectNum(arg interface{}) {fmt.Println("type ", re…

Vue中嵌入原生HTML页面

Vue中嵌入html页面并相互通信 需求&#xff1a;b2b支付需要从后获取到数据放到form表单提交跳转&#xff0c;如下&#xff1a; 但是vue目前暂时没找到有类似功能相关文档&#xff0c;所以我采用iframe嵌套的方式 1. Vue中嵌入Html <iframe src"/static/gateway.htm…

Unity 设置鼠标

前言 本章主要对鼠标图标样式还有鼠标显隐进行设置 图标样式的设置 代码控制 有时候需要有改变鼠标样式的需求可以使用如下代码 Cursor.SetCursor(this.mouseTexture, Vector2.zero, CursorMode.Auto); 传入的要替换的图标偏移量允许您在支持的平台上使用硬件光标&#xff0…

Blender教程(基础)-内插面、分离、环切、倒角-08

一、内插面 菜单位置如下图位置。 单击需要处理的面&#xff0c;出现一个黄色的圈。 1、菜单选中内插 鼠标悬停在黄色圈内单击左键可以来回实现内插&#xff0c;但是发现并不好操作。 2、快捷键内插 在选中需要操作的面之后&#xff0c;鼠标移动到外面&#xff0c;键盘在英…

【计算机网络】网络的网络

网络的网络 客户 customer 接入ISP提供商 provider 全球承载ISP多个ISP的层级结构 第一层ISP &#xff08;tier-1 ISP &#xff09; 位于顶部 区域ISP &#xff08;reginal ISP&#xff09;Level 3通信 &#xff0c;AT&T&#xff0c;Sprint &#xff0c;NTT存在点&#x…

C#,打印漂亮的贝尔三角形(Bell Triangle)的源程序

以贝尔数为基础&#xff0c;参考杨辉三角形&#xff0c;也可以生成贝尔三角形&#xff08;Bell triangle&#xff09;&#xff0c;也称为艾特肯阵列&#xff08;Aitkens Array&#xff09;&#xff0c;皮埃斯三角形&#xff08;Peirce Triangle&#xff09;。 贝尔三角形的构造…