我在Spring Boot项目中有几个类,有些使用@Autowired,有些则没有.我的代码如下:
Application.java(@Autowired works):
package com.example.myproject;
@ComponentScan(basePackages = {"com.example.myproject"})
@Configuration
@EnableAutoConfiguration
@EnableJpaRepositories(basePackages = "com.example.myproject.repository")
@PropertySource({"classpath:db.properties", "classpath:soap.properties"})
public class Application {
@Autowired
private Environment environment;
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Bean
public SOAPConfiguration soapConfiguration() {
SOAPConfiguration SOAPConfiguration = new SOAPConfiguration();
SOAPConfiguration.setUsername(environment.getProperty("SOAP.username"));
SOAPConfiguration.setPassword(environment.getProperty("SOAP.password"));
SOAPConfiguration.setUrl(environment.getProperty("SOAP.root"));
return SOAPConfiguration;
}
Run Code Online (Sandbox Code Playgroud)
HomeController(@Autowired works):
package com.example.myproject.controller;
@Controller
class HomeController {
@Resource
MyRepository myRepository;
Run Code Online (Sandbox Code Playgroud)
MyService(@Autowired不起作用):
package com.example.myproject.service;
@Service
public class MyServiceImpl implements MyService {
@Autowired
public SOAPConfiguration soapConfiguration; // is null
private void init() { …Run Code Online (Sandbox Code Playgroud) LoggerProducer.java是一个类,用于生成要在CDI bean中注入的Logger:
@Inject
Logger LOG;
Run Code Online (Sandbox Code Playgroud)
完整代码:
import javax.ejb.Singleton;
/**
* @author rveldpau
*/
@Singleton
public class LoggerProducer {
private Map<String, Logger> loggers = new HashMap<>();
@Produces
public Logger getProducer(InjectionPoint ip) {
String key = getKeyFromIp(ip);
if (!loggers.containsKey(key)) {
loggers.put(key, Logger.getLogger(key));
}
return loggers.get(key);
}
private String getKeyFromIp(InjectionPoint ip) {
return ip.getMember().getDeclaringClass().getCanonicalName();
}
}
Run Code Online (Sandbox Code Playgroud)
问题:可以@Singleton安全地变成@ApplicationScoped?
我的意思是,为什么有人想在这里使用EJB?是否存在技术原因,因为不涉及任何交易,而且(AFAIK)无论如何都是线程安全的?
我显然是指javax.enterprise.context.ApplicationScoped,而不是javax.faces.bean.ApplicationScoped.
我正在向基于 Eclipse IDE 中的 Java Servlet 的 Web 服务器应用程序添加一个外部 jar 文件。但是,当我尝试添加该 jar 文件时,出现错误,因为"An internal error occurred during updating tag library index . Path Must Include project and resource name:/<jar file name>".请让我知道应用程序询问的路径,或者有任何特定目录我必须放置该 jar 文件或任何我必须更新 jar 文件位置的文件。谢谢
Hibernate 5.0.10 我定义了一个子图,如下所示:
@NamedSubgraph(name = "proc", attributeNodes = {
@NamedAttributeNode("name"),
@NamedAttributeNode("childTable1"),
@NamedAttributeNode("childTable2"),
@NamedAttributeNode("childTable3"),
@NamedAttributeNode("childTable4")
}),
问题是,当使用这个子图时,我会返回根表(名称存在的地方)中定义的所有属性,而不仅仅是我指定的子图属性。有没有办法告诉休眠不获取那些孩子?我的查询看起来就像select rec from records rec join rec.proc
我试图理解EJBContainerJava EE 6为EJB模块和Arquillian的可嵌入单元测试提供的类之间的差异.
有没有一个很好的资源或有人可以帮我理解这个?当我可以使用可嵌入容器测试EJB时,是否值得编写Arquillian测试?
在我看来,我有一个有趣的案例。我们正在使用 maven,并且由于我们必须支持我们产品的多个版本,我们有时会使用 1.x 和 2.x 构建结构。当 1.x 和 2.x 并行构建时,有时我们会看到
安装工件元数据时出错:安装元数据时出错:更新组存储库元数据时出错
据我所知,本地用户存储库中的 maven-metadata-local.xml(对于工件,而不是工件的版本)正在由另一个 maven 进程同时写入。有没有办法让 maven 并行构建这两个,但等待文件上的写锁来更新它?