@Singleton 使用说明
这个注解非常简单,就是标注是否为单例(实例级,非方法级)
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 也是非单例,所以每次请求都会重新构建。