Solon v3.0.3

@Singleton 使用说明

</> markdown

这个注解非常简单,就是标注是否为单例(实例级,非方法级)

1、默认为单实例

@Component
public class UserDao{ }

2、标注为非单实例(多实例,每次获取或注入时会构建新的实例)

@Singleton(false)
@Component
public class UserDao{ }
  • 每次获取时,会构建新实例
BeanWrap userDaoWrap = Solon.context().getWrap(UserDao.class)

UserDao userDao1 = userDaoWrap.get();
UserDao userDao2 = userDaoWrap.get(); // userDao2 != userDao1

//或者

UserDao userDao1 = Solon.context().getBean(UserDao.class);
UserDao userDao2 = Solon.context().getBean(UserDao.class); // userDao2 != userDao1
  • 每次注入时,会构建新实例
@Singleton(false)
@Controller
public class UserController{
    @Inject
    UserDao userDao1;
    
    @Inject
    UserDao userDao2; // userDao2 != userDao1
   
    @Mapping("/hello")
    public String hello(String name) {
        return name;
    }
}

//UserController 也是非单例,所以每次请求都会重新构建。