Interface Instance

All Known Implementing Classes:
InstanceFactory

public interface Instance
实例化对象的接口 1. 使用此类的 class 必须有无参构造器 2. 当前类出于测试阶段
Since:
Java 17+
Author:
Kimi Liu
  • Method Summary

    Modifier and Type
    Method
    Description
    <T> T
    multiple(Class<T> clazz)
    多例对象,每次都是全新的创建
    <T> T
    singleton(Class<T> clazz)
    获取对象的单例对象 1.
    <T> T
    singleton(Class<T> clazz, String groupName)
    获取对象的单例对象 1.
    <T> T
    threadLocal(Class<T> clazz)
    获取每个线程内唯一的实例化对象 注意:可能会内存泄漏的场景 (1) 只要这个线程对象被gc回收,就不会出现内存泄露,但在threadLocal设为null和线程结束这段时间不会被回收的,就发生了我们认为的内存泄露 最要命的是线程对象不被回收的情况,这就发生了真正意义上的内存泄露 比如使用线程池的时候,线程结束是不会销毁的,会再次使用的 就可能出现内存泄露 参考资料:https://www.cnblogs.com/onlywujun/p/3524675.html
    <T> T
    threadSafe(Class<T> clazz)
    线程安全对象 1.
  • Method Details

    • singleton

      <T> T singleton(Class<T> clazz, String groupName)
      获取对象的单例对象 1. 需要保证对象的线程安全性 2. 只有在同一个分组返回的对象才会是单例,否则返回 newInstance()
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      groupName - 分组名称
      Returns:
      实例化对象
    • singleton

      <T> T singleton(Class<T> clazz)
      获取对象的单例对象 1. 需要保证对象的线程安全性
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
    • threadLocal

      <T> T threadLocal(Class<T> clazz)
      获取每个线程内唯一的实例化对象 注意:可能会内存泄漏的场景 (1) 只要这个线程对象被gc回收,就不会出现内存泄露,但在threadLocal设为null和线程结束这段时间不会被回收的,就发生了我们认为的内存泄露 最要命的是线程对象不被回收的情况,这就发生了真正意义上的内存泄露 比如使用线程池的时候,线程结束是不会销毁的,会再次使用的 就可能出现内存泄露 参考资料:https://www.cnblogs.com/onlywujun/p/3524675.html
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
      See Also:
    • multiple

      <T> T multiple(Class<T> clazz)
      多例对象,每次都是全新的创建
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象
    • threadSafe

      <T> T threadSafe(Class<T> clazz)
      线程安全对象 1. 判断当前类是否拥有 ThreadSafe 注解, 如果有,则直接创建单例对象 如果不是,则创建多例对象
      Type Parameters:
      T - 泛型
      Parameters:
      clazz - class 类型
      Returns:
      实例化对象