我想替换旧的:
@Component
public interface MyEntityRepository extends JpaRepository<MyEntity, Integer> {
@QueryHints({@QueryHint(name = CACHEABLE, value = "true")})
MyEntity findByName(String name);
}
Run Code Online (Sandbox Code Playgroud)
这样:
@Component
public interface MyEntityRepository extends JpaRepository<MyEntity, Integer> {
@Cacheable(value = "entities")
MyEntity findByName(String name);
}
Run Code Online (Sandbox Code Playgroud)
因为我想使用高级缓存功能,如不缓存空值等.
为此,我按照Spring教程https://spring.io/guides/gs/caching/
如果我不注释我的Application.java,缓存根本不起作用.
但是如果我添加@EnableCaching一个CacheManager bean:
package my.application.config;
@EnableWebMvc
@ComponentScan(basePackages = {"my.application"})
@Configuration
@EnableCaching
public class Application extends WebMvcConfigurerAdapter {
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("entities");
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
我在启动时收到以下错误:
java.lang.IllegalStateException:未指定CacheResolver,并且未找到CacheManager类型的bean.注册CacheManager bean或从配置中删除@EnableCaching批注
如果我用CacheResolver bean替换My CacheManager bean,我会得到同样的错误:
@Bean
public CacheResolver cacheResolver() …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用非常标准的用户管理从现有应用程序设计微服务:具有身份验证和授权,并存储用户数据.
我在深化发展的授权服务器来管理用户认证和授权使用OAuth2的授权.另一方面,我必须存储用户的信息/个人资料.
问题:授权服务器应该管理:
/me获取当前用户,也/users让用户的完整列表./me与用户相关的API,用户微服务会公开/users吗?第一种解决方案稍微简单一点,但授权服务器将变得不那么通用(更少可重用),因为用户应用程序数据模型将成为其一部分(User表的数据库数据模型).
另一个要求是授权服务器应该在授权之前检查用户是否存在.
没有用户自动创建,管理员必须邀请用户才能访问.有了这个要求,第一个解决方案很简单,因为授权服务器可以访问用户数据库,但第二个解决方案授权服务器暗示:
User表(可以重命名Account),管理员不会在用户服务上创建用户,而只在授权服务器上创建用户帐户我认为1.解决方案已经出来但有关于2.和3的任何建议?
3.首先似乎是最好的,但如果我想切换到另一个授权服务器,例如Google,Github,Facebook等公共服务器(OAuth2)......安全性可能会受到影响,因为我们无法控制用户帐户创建.
任何反馈?
我有 2 个实体:Group和Grouped,有 1 个多对多关联。
在数据库中,该Association表在Group和上都有一个 NOT NULL FK Grouped。
我希望 Hibernate 在删除所有分组时删除关联但不删除组。
删除Grouped实体的代码:
@Autowired
private final GroupedRepository groupedRepository;
public void delete(Grouped groupedToRemove) {
groupedRepository.delete(groupedToRemove);
}
Run Code Online (Sandbox Code Playgroud)
如果我设置cascade = CascadeType.ALL或cascade = CascadeType.REMOVE,Group当我删除一个Grouped实体时,我的实体将被删除,而不仅仅是关联:
@ManyToMany(cascade = CascadeType.ALL, // same behavior with CascadeType.REMOVE
mappedBy = "grouped",
targetEntity = Group.class)
private Set<Group> groups = new HashSet<>();
Run Code Online (Sandbox Code Playgroud)
如果我删除级联,hibernate 会尝试设置 group_id=null 并抛出一个ModelConstraintException. 我不想将 FK 设置为可空。
集团实体: …
maven-dependency-plugin将spring boot依赖项检测为未使用,但实际上它们需要运行我的应用程序.我会犯错吗?
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>my-service</artifactId>
<packaging>jar</packaging>
<name>my-service</name>
<description>my service</description>
<parent>
<groupId>com.my</groupId>
<artifactId>parent</artifactId>
<version>0.2.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<exclusions>
<exclusion>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security.oauth</groupId>
<artifactId>spring-security-oauth2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency> …Run Code Online (Sandbox Code Playgroud) 我想在“响应”中添加一个自定义标头,但以下内容不对响应添加任何内容:
@EnableWebSecurity
@Configuration
public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.headers()
.addHeaderWriter(new StaticHeadersWriter("Salut","c'est Chico"));
}
}
Run Code Online (Sandbox Code Playgroud)
但是我遵循了Spring文档:https : //docs.spring.io/spring-security/site/docs/current/reference/html/headers.html
谢谢你的帮助 !
PS:调试器很好地进入 addHeaderWriter()
我想找到最聪明的方法来InputStream从JsonNodeJava 库 Jackson 的a创建一个。
到目前为止,我已经完成了:
IOUtils.toInputStream(jsonNode.toString());
Run Code Online (Sandbox Code Playgroud)
但是,这种方式转换JsonNode成String创建之前InputStream。
前需要:
org.apache.http.entity.InputStreamEntity entity = new InputStreamEntity(IOUtils.toInputStream(jsonNode.toString()));
Run Code Online (Sandbox Code Playgroud) 预防存储型 XSS的最佳方法是什么?
第一个解决方案的问题是数据可能被修改(字符编码、部分或全部删除......)。这可能会改变应用程序的行为,尤其是对于显示问题。
我按照本教程创建了自定义验证器:http: //codetutr.com/2013/05/29/custom-spring-mvc-validation-annotations/
根据这个,可以使用JSR-303验证注释验证请求aguments:https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/
我的自定义ConstraintValidator永远不会被调用.这是我的代码:
控制器:
@RestController
@RequestMapping(value = "/json")
@Validated
public class JsonResource {
@RequestMapping(method = POST, consumes=APPLICATION_JSON_VALUE"))
public void postJson(@SafeHtml @RequestBody JsonNode jsonQuery){
// post a foo
}
}
Run Code Online (Sandbox Code Playgroud)
SafeHtml注释:
@Documented
@Constraint(validatedBy = {SafeHtmlJsonValidator.class})
@Target( {ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface SafeHtml {
String message() default "{SafeHtml}";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Run Code Online (Sandbox Code Playgroud)
自定义ConstraintValidator:
@Component
public class SafeHtmlJsonValidator implements ConstraintValidator<SafeHtml, JsonNode> {
@Override
public void initialize(SafeHtml constraintAnnotation) {}
@Override
public boolean …Run Code Online (Sandbox Code Playgroud) 听起来我不能把"?" 在批处理(.bat)脚本中的提示:
set /p AREYOUSURE= Are you sure (Y/[N]) ?
Run Code Online (Sandbox Code Playgroud)
它与消息崩溃:
?这时出人意料.
但是,它没有""
注意:我正在运行Windows 7 64位.
java ×5
spring ×2
batch-file ×1
caching ×1
cascade ×1
header ×1
hibernate ×1
inputstream ×1
jackson ×1
jpa ×1
many-to-many ×1
owasp ×1
prompt ×1
security ×1
set ×1
spring-boot ×1
spring-data ×1
spring-mvc ×1
validation ×1
xss ×1