小编Ple*_*mor的帖子

无法使用Spring @Cacheable和@EnableCaching

我想替换旧的:

@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)

java spring caching spring-data

13
推荐指数
1
解决办法
2万
查看次数

授权和用户微服务设计

我正在尝试使用非常标准的用户管理从现有应用程序设计微服务:具有身份验证和授权,并存储用户数据.

我在深化发展的授权服务器来管理用户认证授权使用OAuth2的授权.另一方面,我必须存储用户的信息/个人资料.

问题:授权服务器应该管理:

  • 授权和用户API?因此,其他微服务可以联系授权服务器/me获取当前用户,也/users让用户的完整列表.
  • 或者只有授权,我必须创建用户微服务因此,授权服务器只公开/me与用户相关的API,用户微服务会公开/users吗?

第一种解决方案稍微简单一点,但授权服务器将变得不那么通用(更少可重用),因为用户应用程序数据模型将成为其一部分(User表的数据库数据模型).


另一个要求是授权服务器应该在授权之前检查用户是否存在.

没有用户自动创建,管理员必须邀请用户才能访问.有了这个要求,第一个解决方案很简单,因为授权服务器可以访问用户数据库,但第二个解决方案授权服务器暗示:

  1. 用户服务共享数据库(哼不喜欢)
  2. 使用REST API授权之前调用用户服务(例如)
  3. 授权服务器应该维护最小的User表(可以重命名Account),管理员不会在用户服务上创建用户,而只在授权服务器上创建用户帐户

我认为1.解决方案已经出来但有关于2.3的任何建议?

3.首先似乎是最好的,但如果我想切换到另一个授权服务器,例如Google,Github,Facebook等公共服务器(OAuth2)......安全性可能会受到影响,因为我们无法控制用户帐户创建.

任何反馈?

microservices

11
推荐指数
1
解决办法
1179
查看次数

@ManyToMany with cascade = CascadeType.REMOVE 删除关联和实体

我有 2 个实体:GroupGrouped,有 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.ALLcascade = CascadeType.REMOVEGroup当我删除一个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 设置为可空。

集团实体: …

java many-to-many hibernate jpa cascade

6
推荐指数
1
解决办法
4178
查看次数

Spring启动核心依赖关系被maven-dependency-plugin视为未使用

maven-dependency-plugin将spring boot依赖项检测为未使用,但实际上它们需要运行我的应用程序.我会犯错吗?

我的pom.xml

<?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)

java maven-dependency-plugin spring-boot

6
推荐指数
2
解决办法
1962
查看次数

WebSecurityConfigurerAdapter中没有使用addHeaderWriter添加标题

我想在“响应”中添加一个自定义标头,但以下内容不对响应添加任何内容:

@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()

header spring-security

5
推荐指数
0
解决办法
359
查看次数

从 Jackson JsonNode 创建 InputStream 的最佳方法是什么?

我想找到最聪明的方法来InputStreamJsonNodeJava 库 Jackson 的a创建一个。

到目前为止,我已经完成了:

IOUtils.toInputStream(jsonNode.toString());
Run Code Online (Sandbox Code Playgroud)

但是,这种方式转换JsonNodeString创建之前InputStream

前需要:

org.apache.http.entity.InputStreamEntity entity = new InputStreamEntity(IOUtils.toInputStream(jsonNode.toString()));
Run Code Online (Sandbox Code Playgroud)

java inputstream jackson

5
推荐指数
1
解决办法
5510
查看次数

XSS预防:客户端还是服务器端?

预防存储型 XSS的最佳方法是什么?

第一个解决方案的问题是数据可能被修改(字符编码、部分或全部删除......)。这可能会改变应用程序的行为,尤其是对于显示问题。

security xss owasp

3
推荐指数
1
解决办法
2773
查看次数

Controller方法的自定义验证器

我按照本教程创建了自定义验证器: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)

java validation spring spring-mvc

3
推荐指数
1
解决办法
2076
查看次数

在批处理SET/P命令"?"中 崩溃与"此时意外"

听起来我不能把"?" 在批处理(.bat)脚本中的提示:

set /p AREYOUSURE= Are you sure (Y/[N]) ?
Run Code Online (Sandbox Code Playgroud)

它与消息崩溃:

?这时出人意料.

但是,它没有""

注意:我正在运行Windows 7 64位.

prompt batch-file set

0
推荐指数
1
解决办法
180
查看次数