使用Spring 3.XX我有2个使用@Primary注释的服务,我创建了另一个配置类,我想使用其中一个服务的"自定义"版本.
出于某种原因,我在调试配置类时忽略了我看到它获得了正确的依赖关系,但是当我想使用它时,它设置了错误的依赖关系.
我发现使用代码更容易解释,这是一个例子:
界面Foo:
public interface Foo {
String getMessage();
}
Run Code Online (Sandbox Code Playgroud)
使用硬编码的默认消息的主要实现:
@Primary
@Service("FooImpl")
public class FooImpl implements Foo {
private String message = "fooDefaultMessage";
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Run Code Online (Sandbox Code Playgroud)
栏界面:
public interface Bar {
void doBar();
}
Run Code Online (Sandbox Code Playgroud)
栏默认实施:
@Primary
@Service("BarImpl")
public class BarImpl implements Bar {
private Foo foo;
@Override
public void doBar() {
System.out.println(foo.getMessage());
}
public Foo getFoo() {
return foo;
}
@Autowired
public …Run Code Online (Sandbox Code Playgroud) 感谢您抽时间阅读。我完全被什么可能是简单的事情难住了。我正在尝试连接到我的 SQL 数据库,以下内容往往有效:
String url = "jdbc:jtds:sqlserver://10.0.100.200;DatabaseName=master;user=sa;password=";
Run Code Online (Sandbox Code Playgroud)
但是,当我的名字包含反斜杠时,例如“localhost\TESTDATA 我似乎无法让它工作,我得到
“java.sql.SQLException:未知的服务器主机名'localhost\TESTDATA'。”
当我使用以下内容时:
String url = "jdbc:jtds:sqlserver://localhost\\TESTDATA;DatabaseName=master;user=sa;password=";
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在使用验证注释来验证电子邮件字段,这里的电子邮件字段不是强制性的,当我点击提交时,它正在验证并在字段为空时抛出错误消息,
以下是注释:
@Pattern(regexp = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$",
message = "registration.label.useremailformat.invalidformat")
@Size(min = 6, max = 20, message = "registration.label.useremail.length")
@SafeHtml
private String userEmailId;
Run Code Online (Sandbox Code Playgroud)
当电子邮件字段为空时,如何跳过 @Pattern 验证并仅在给定值时进行验证?任何帮助将不胜感激。
我正在将一个遗留项目迁移到 Gradle。构建过程的一个步骤是为专有协议生成 java 源代码。不幸的是,当将项目导入 IntelliJ 时,生成的源代码无法识别,因此该项目无法使用 IntelliJ 构建。
我有以下构建脚本(删除了不相关的部分):
apply plugin: "base"
apply plugin: "java"
task generate {
description "Generates java code"
inputs.files(fileTree("src/codegen/"))
outputs.dir("${buildDir}/generated-src/")
// ...
// codegen
// ...
}
compileJava {
source(generate.outputs)
}
Run Code Online (Sandbox Code Playgroud)
如果我添加以下内容,IntelliJ 会将生成的源添加为源,但无法将其识别为生成的:
sourceSets {
main {
java {
srcDir "${buildDir}/generated-src/"
}
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法让 IntelliJ 将生成的源识别为生成的源,以便显示阻止编辑这些类的正常警告?
我对这个独特的约束功能感到非常惊讶.我正在使用H2数据库开发一个弹簧启动应用程序进行单元测试.
我的一个实体有一个独特的约束.在User类的标题下面.
@Entity
@Table(name = "user", uniqueConstraints = { @UniqueConstraint(columnNames = { "identifier" }) })
@SequenceGenerator(name = "user_pkey", sequenceName = "user_id_seq")
Run Code Online (Sandbox Code Playgroud)
我写了一个小单元测试来检查唯一约束.
测试前功能
@Before
public void before() {
User user1 = new User();
user1.setBlackListed(false);
user1.setIdentifier("test@tby.com");
user1.setRefreshToken("azerty");
this.userDao.save(user1);
}
Run Code Online (Sandbox Code Playgroud)
我的考试
@Test(expected = DataIntegrityViolationException.class)
public void user_identifierUnicityTest() {
User user4 = new User();
user4.setBlackListed(false);
user4.setIdentifier("test@tby.com");
user4.setRefreshToken("azerty4");
User response = this.userDao.save(user4);
this.userDao.findByIdentifier("test@tby.com");
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶,我认为在保存请求期间会抛出异常.或者在查找请求期间抛出异常.
在选择请求期间检查约束完整性而不是插入.我不明白结果.
这是唯一约束的正常行为吗?
谢谢你的回答:)
java ×4
gradle ×1
h2 ×1
hibernate ×1
jdbc ×1
jtds ×1
regex ×1
spring ×1
spring-bean ×1
spring-boot ×1
spring-data ×1
sql-server ×1