草庐IT

java - 将参数传递给 @Inject Bean 的实例

我使用CDI作为注入(inject)框架,但我发现它的使用有一些限制,这就是其中之一。我正在尝试使用runtime值初始化bean实例的创建。示例:@RequestScopedpublicclassMyNumber{intnumber;publicMyNumber(intnumber){this.number=number;}publicStringtoString(){return"Yournumberis:"+number;}}publicclassUseNumber{@InjectInstancenumber;publicvoiddoStuff(){inta=8;MyNumber

java - 如何在运行 grizzly 的 java se 上启用 Web 服务(jaxrs/jersey)中的 CDI 注入(inject)?

如何允许CDI将资源注入(inject)到restfulweb服务资源中?我使用weld2(cdi)、jersey(jaxrs)和grizzly(网络服务器)在标准java上运行。这是我的简单网络资源:importtraining.student.StudentRepository;importjavax.inject.Inject;importjavax.ws.rs.*;@Path("student")publicclassStudentWebResource{@InjectprivateStudentRepositorystudentRepository;@GET@Path("co

java - JBoss 焊接 + java.lang.OutOfMemoryError : PermGen space

我刚刚切换到Weld以使用CDIJSF2Beans+对话范围。这是我的maven依赖:org.jboss.weld.servletweld-servlet1.0.1-Finaljarcompile这是我的web.xml中的条目:org.jboss.weld.environment.servlet.Listener我立即注意到的一件事是我只需要重新加载我的tomcat7大约2次,java.lang.OutOfMemoryError:PermGenspace将显示在catalina.out日志文件中。在使用Weld之前,我可以在没有java.lang.OutOfMemoryError的情况

java - 上下文和范围之间的区别

研究JSR-299,我阅读了Weldreference的第5.1节这解释了作用域在CDI中是如何工作的。显然,上下文是一个与范围密切相关的概念。我的脑海里并不清楚其中的区别,我什至想互换使用这两个词。范围和上下文有什么区别?这两个概念有什么关系? 最佳答案 每个范围都有一个单独的上下文。上下文是已在各自范围内定义的bean的容器。这就是上下文实现带有范围名称的原因-ApplicationContext、DependentContext、RequestContext等。这实际上是一个实现细节-作为CDI的用户,您应该只了解作用域(因为

java - CDI 不明确的依赖

我有一个@SessionScoped@Namedbean和一个用于用户对象的@Producer方法:@Named@SessionScopedpublicclassUserBeanimplementsSerializable{//...@Named@Produces@LoggedIn@SessionScopedpublicMyUsergetCurrentUser(){returnuser;}}这在我的设置(JBoss-7.1.1-Final)中运行良好,使用#{currentUser.name}从JSF页面访问用户字段没有问题。限定符是org.jboss.seam.security.an

java - wildfly:从配置目录读取属性

我正在尝试从我的wildfly配置文件夹中的属性文件中读取特定于部署的信息。我试过这个:@Singleton@StartuppublicclassDeploymentConfiguration{protectedPropertiesprops;@PostConstructpublicvoidreadConfig(){props=newProperties();try{props.load(getClass().getClassLoader().getResourceAsStream("my.properties"));}catch(IOExceptione){//...whatever

Java CDI : Decorator with multiple generic params

我有以下结构:@DecoratorpublicabstractclassMyDecoratorimplementsEntityService{@Any@Inject@DelegateEntityServicedelegate;@OverridepublicTsave(Tentity){...}}这是EntityService接口(interface)声明:publicinterfaceEntityService{Tsave(Tentity);voiddeleteById(Integerid);voiddeleteAllById(Listids);voiddelete(Tentity);

java - 如何使用 Weld 轻松注入(inject)字符串常量?

我们有一种情况,我们以Map的形式为我们正在运行的程序提供外部配置。我发现JSR-330依赖注入(inject)提供了一种更简洁的方法来在代码中使用该配置映射,而不是传递映射或使用JNDI来获取它。@Inject@Named("server.username")Stringusername;让JSR-330实现自动填写此字段。使用Guice我可以设置值bindConstant().annotatedWith(Names.named(key)).to(value);我希望能够在Weld中做同样的事情(将“server.username”绑定(bind)到例如“foobar”)并且我知道该

java - 在注入(inject)点带有限定符 [@Default] 的类型 [...] 的不满足依赖关系(将 @Stateful EJB 与 CDI 结合使用)

我有以下代码来管理两种存储库。两个存储库类都继承了一个接口(interface)以允许重新初始化它们的资源。publicinterfaceCachingRepository{publicvoidinvalidateCache();}全局的、应用范围的存储库:@Named("globalRepo")@ApplicationScopedpublicclassGlobalRepositoryimplementsCachingRepository{privateListcategories;...@OverridepublicvoidinvalidateCache(){categories=n

java - 在 CDI 容器中手动注册类

我有一组通过反射实例化的类,因此这些类不由CDI容器管理,并且上下文不进行任何注入(inject)。我的问题是,有没有办法在CDI上下文中注册这些类,以便这些类由上下文管理?下面是我创建类的方式:Stringclazz="org.myorg.thisIsMyClass";MyClassmyClass=Class.forName(clazz).newInstance();//myClassinstancenotmanagedbyCDI如何让CDI容器管理myClass的实例? 最佳答案 如果您的类被容器注册为bean,您可以使用编程查