我有一个类有一个Daemon
类型的对象列表.
class Xyz {
List<Daemon> daemons;
}
Run Code Online (Sandbox Code Playgroud)
我的弹簧配置看起来像这样.
<bean id="xyz" class="package1.Xyz">
<property name="daemons" ref="daemonsList">
</bean>
<bean id="daemon1" class="package1.DaemonImpl1"/>
<bean id="daemon2" class="package1.DaemonImpl2"/>
<bean id="daemonsList" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="daemon1" />
<ref bean="daemon2" />
</list>
</constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)
现在,不是在列表中显式连接每个守护进程实现,而是可以Daemon
在列表中自动自动装配所有类型的bean .我试图解决的问题是,如果有人创建了一个新的Daemon
类实现的bean 并忘记将其连接到列表中.
我在stackoverflow上的某个地方看到过这个问题,但是无法再找到它.为此道歉.
JVM在单个进程中运行,JVM中的线程共享属于该进程的堆.那么JVM如何利用多个内核来提供多个操作系统线程以实现高并发?
我不确定如何在我的方法中编写弹出消息框.
public String verify(){
String result = "failed";
int authcode = staffBean.getVerifyCodeByName(getLoginUserName());
if (code == authcode){
result ="success";
}
else{ //statement to popup an error message box
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
我试图JOptionPane
在我的方法中使用,但它不起作用:
String st = "Welcome";
JOptionPane.showMessageDialog(null, st);
Run Code Online (Sandbox Code Playgroud) 我使用HMAC-SHA1散列一些值,使用Java中的以下代码:
public static String hmacSha1(String value, String key) {
try {
// Get an hmac_sha1 key from the raw key bytes
byte[] keyBytes = key.getBytes();
SecretKeySpec signingKey = new SecretKeySpec(keyBytes, "HmacSHA1");
// Get an hmac_sha1 Mac instance and initialize with the signing key
Mac mac = Mac.getInstance("HmacSHA1");
mac.init(signingKey);
// Compute the hmac on input data bytes
byte[] rawHmac = mac.doFinal(value.getBytes());
// Convert raw bytes to Hex
byte[] hexBytes = new Hex().encode(rawHmac);
// Covert array of Hex bytes to a String …
Run Code Online (Sandbox Code Playgroud) 我正在使用@Email
注释来验证电子邮件地址.我遇到的问题是它接受像ask@stackoverflow
有效的电子邮件地址这样的东西.我想这是因为他们想要支持内部网地址,但我似乎找不到一个标志,所以它检查扩展.
我是否真的需要切换到@Pattern
(以及任何灵活的电子邮件模式的建议)或者我错过了什么?
Spring提供了使用注释以特定间隔安排和执行任务的可能性,例如 @Scheduled
有没有方便的单元测试这种行为的方法?
当然我可以自己调用bean的方法,但是我想确保不会因为配置错误等问题而遇到多次执行等问题.
其他框架提供了自己快速转发时间的可能性.一个例子是Activiti,你可以打电话
org.activiti.engine.impl.util.ClockUtil.setCurrentTime(date)
Run Code Online (Sandbox Code Playgroud)
快进框架使用的时间.
春天有类似的东西吗?
基本上我想要做的是在单元测试中使用这样的东西(运行使用SpringJUnit4ClassRunner
)
@Test public void testTaskScheduling() {
assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIinitiallyExpect)));
SpringClockUtil.setDate(dateInTwoHours)// This is what I am missing
SpringTaskExecutor.executeAllScheduledTasks() // Also missing
assertThat(someOtherBean.getSomeProperty(), is(equalTo(whatIexpectNow)));
}
Run Code Online (Sandbox Code Playgroud) 现在我想为我们的系统开发一个通用的邮件服务.在我们设计时,我们希望开发一个RabbitMQ
生产者和消费者.在消费者方面,我们可以开发和部署一个Spring Boot
或Spring Cloud
应用程序,但在生产者方面,我们希望提供一个像下面的接口这样的公共邮件客户端,并为其他系统创建一个jar依赖项.
interface MailClient {
ListentableFuture send(Message message);
}
Run Code Online (Sandbox Code Playgroud)
但我看到使用许多声明方法的spring boot和spring cloud,似乎必须使用应用程序类,但我只想要一个类引用而不需要部署.我不知道如何实现它.
我一直试图弄清楚如何在Junit4中与PowerMock一起运行参数化测试.问题是要使用PowerMock,你需要用你的测试类来装饰
@RunWith(PowerMockRunner.class)
Run Code Online (Sandbox Code Playgroud)
并使用参数化测试你必须装饰
@RunWith(Parameterized.class)
Run Code Online (Sandbox Code Playgroud)
从我所看到的,他们似乎相互排斥!?这是真的?有没有办法解决?我试图在运行PowerMock的类中创建一个参数化类; 这样的事情:
@RunWith(PowerMockRunner.class)
class MyTestClass {
@RunWith(Parameterized.class)
class ParamTestClass {
// Yadayada
}
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这并没有太大的好处...... ParamTestClass
仍然没有PowerMock支持(也许不是那么令人惊讶)...而且我有点想法,所以任何帮助都非常感谢!
更新: 对于未来的googlers也会看到:在没有RunWith的情况下使用PowerMock?
java ×7
spring ×3
github ×1
hash ×1
hibernate ×1
hmac ×1
junit ×1
netbeans ×1
powermock ×1
scheduler ×1
sha1 ×1
spring-boot ×1
spring-mvc ×1
swing ×1
unit-testing ×1
validation ×1
wiki ×1