我有以下DTO:
@Value
public class PracticeResults {
@NotNull
Map<Long, Boolean> wordAnswers;
}
@Value
public class ProfileMetaDto {
@NotEmpty
String name;
@Email
String email;
@Size(min = 5)
String password;
}
Run Code Online (Sandbox Code Playgroud)
@Value是一个生成构造函数的Lombok注释.这意味着该类没有no-arg构造函数.
我使用Spring Boot 1.4.3.RELEASE和ObjectMapper bean能够从json反序列化这样的对象.
升级到Spring Boot 2.0.0.M7后,我收到以下异常:
@Value
Spring Boot 1.4.3中使用的Jackson版本适用于ObjectMapperSpring Boot 2.0.0.M7是com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of PracticeResults (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator).
我试过谷歌这个问题,但发现只有2.8.10或的解决方案2.9.2.
那么,为什么它与Spring Boot 1.4.3一起使用并且在Spring Boot 2中失败?是否可以将bean配置为与旧版本相同的方式?
我有以下实体:
我想使用JPA删除用户的id和用户名的WordSet.
这是实体声明:
用户
@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class User extends AbstractModelClass {
private String name;
private String username;
private String password;
private String email;
@ManyToMany(fetch = FetchType.EAGER)
private Set<Role> roles;
}
Run Code Online (Sandbox Code Playgroud)
UserDictionary
@Entity
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@AllArgsConstructor
@NoArgsConstructor
public class UserDictionary extends AbstractModelClass {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL, mappedBy = "userDictionary")
private Set<WordSet> wordSets;
@OneToOne(cascade = CascadeType.ALL)
private User user;
@PrePersist
private void addDictionaryToWordSets() {
wordSets.forEach(wordSet …Run Code Online (Sandbox Code Playgroud) 我正在使用gradle-dockerPalantir的插件。当我尝试构建docker时,收到以下错误消息:
Starting process 'command 'docker''. Working directory: /Users/msolomkin/Projects/glossary/discovery-server/build/docker Command: docker build --build-arg JAR_FILE=discovery-server-0.0.1-SNAPSHOT.jar -t solomkinmv/discovery-server .
但是,当我/Users/msolomkin/Projects/glossary/discovery-server/build/docker手动转到工作目录()并运行命令时,docker build --build-arg JAR_FILE=discovery-server-0.0.1-SNAPSHOT.jar -t solomkinmv/discovery-server .一切正常。
另外,我的Travis能够构建docker映像。看来这是我的Mac Docker安装问题。
Mac版Docker:17.12.0-ce-mac49(21995)
摇篮版本:4.4.1
这是我的任务配置:
docker {
name "solomkinmv/${bootJar.baseName}"
println "==> Docker task for ${name}"
files bootJar.archivePath
buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
}
Run Code Online (Sandbox Code Playgroud)
这是GitHub的链接:https : //github.com/solomkinmv/glossary/tree/discovery-server/discovery-server
为Docker for Mac配置env变量以能够运行gradle任务的正确方法是什么?
我正在使用带有 OAuth2 的 Spring Boot Security。我不想禁用健康端点的安全性。
我可以完全禁用安全性或编写自己的实现WebSecurityConfigurerAdapter并禁用自动配置的实现。
但是如何修改WebSecurityConfigurerAdapter( OAuth2SsoDefaultConfiguration) 的现有实现呢?
我尝试在不禁用自动配置的情况下创建自己的配置,但由于Order冲突,这是不可能的。
这是错误消息:
Caused by: java.lang.IllegalStateException: @Order on WebSecurityConfigurers must be unique.
Order of 100 was already used on SecurityConfiguration$$EnhancerBySpringCGLIB$$9505fc58@13f182b9,
so it cannot be used on
org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2SsoDefaultConfiguration$$EnhancerBySpringCGLIB$$dc290e2b@5ee0cf64 too.
Run Code Online (Sandbox Code Playgroud)
此外,我试图为我自己的安全配置明确设置更高的顺序,但看起来自动配置的一个覆盖了我的。
那么如何在不重新实现整个配置的情况下覆盖特定的安全规则呢?
spring spring-security spring-boot spring-security-oauth2 spring-boot-actuator
我需要传递函数并使用指定的参数调用它.如何正确地将lambda函数传递给宏并避免此错误:
APPLY:#'(LAMBDA(X)(+ X 1))不是函数名; 尝试使用符号代替
码:
(defmacro runner (fun &rest arg)
(apply fun arg))
Run Code Online (Sandbox Code Playgroud)
呼叫:
(runner #'(lambda (x) (+ x 1)) '(1))
Run Code Online (Sandbox Code Playgroud)
我的代码出了什么问题?尝试了与+功能类似的东西,一切正常.
更新:程序应为每个参数调用指定的函数并返回结果.参数是列表.所以我应该通过不同的功能列出.
(setq l1 (list 1 2 3))
(setq l2 (list 2 3 4))
(setq l3 (list 3 4 5))
(defmacro runner (fun &rest arg)
; some code
)
(defun summer (l)
(reduce #'+ l))
(print (runner summer l1 l2 l3))
Run Code Online (Sandbox Code Playgroud)
就像这样,但有任意数量的参数.
(defun runner (l)
(mapcar #'(lambda (x) (summer x)) l))
(print (runner (list l1 l2 …Run Code Online (Sandbox Code Playgroud) 我创建了简单的 JPA 实体:Topic 和 Word。主题包含单词列表。
@ManyToMany(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.REMOVE})
@JoinTable
private List<Word> words;
Run Code Online (Sandbox Code Playgroud)
现在我想使用内存中的 H2 数据库测试我的 DAO。在测试类中,我编写了不同的测试来操作数据。但是我想为每个测试获得一个干净的数据库,所以我添加了 tearDown 方法来删除所有单词和主题。
我的测试类的片段:
@RunWith(SpringRunner.class)
@SpringBootTest
public class TopicServiceJpaDaoTest {
@Autowired
private TopicDao topicDao;
@Autowired
private WordDao wordDao;
// different test methods
@After
public void tearDown() throws Exception {
topicDao.deleteAll();
wordDao.deleteAll();
}
}
Run Code Online (Sandbox Code Playgroud)
Unable to acquire JDBC Connection.条目的堆栈跟踪被锁定错误:
javax.persistence.PessimisticLockException: could not execute statement
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.wrapLockException(AbstractEntityManagerImpl.java:1760)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1649)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1602)
at org.hibernate.jpa.spi.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:1700)
at org.hibernate.jpa.spi.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:70)
at io.github.solomkinmv.glossary.persistence.dao.impl.WordServiceJpaDao.deleteAll(WordServiceJpaDao.java:66)
at io.github.solomkinmv.glossary.persistence.dao.impl.TopicServiceJpaDaoTest.tearDown(TopicServiceJpaDaoTest.java:287) …Run Code Online (Sandbox Code Playgroud) java ×4
spring ×3
hibernate ×2
jpa ×2
spring-boot ×2
common-lisp ×1
docker ×1
gradle ×1
jackson ×1
lambda ×1
lisp ×1
lombok ×1
mysql ×1
sql ×1
unit-testing ×1