小编avi*_*tix的帖子

软件设计与架构:如何将目录树中的数据与数据库同步

我现在扭头了一段时间,没有找到最终解决方案。因此,我希望我可以在架构层次上找到一些交流或帮助解决此问题。

我目前面临以下情况:我想编写一个Web应用程序(我使用Java编写,但是这与解决方案并没有真正的关系,因为目前这是一个更高层次的问题),在哪里关系类型:

Event --1:n--> Team --1:n--> Participant
Run Code Online (Sandbox Code Playgroud)

含义:我有一个活动,其中有许多团队,有很多参与者。到目前为止非常好-在SQL数据库中这将是一个简单的关系。

但是,还有一个目录树,在文件结构中表示相同的关系:

+--event1
|  +--team1
|  |  +--participant1
|  |  +--participant2
|  |  +--participant3
|  +--team2
|  |  +--participant4
|  +--team3
+--event2
|  +--team4
...
Run Code Online (Sandbox Code Playgroud)

(我想,您有主意)因此,每个参与者的目录中都有许多文件,这些文件通过文件系统复制到此目录中。只要文件系统上有目录,就应将其连接到数据库中的相应条目,该目录中有一些其他数据,应与Web GUI中的文件一起显示。它没有定义,首先是什么(数据库条目或目录),因为它是由不同的用户操作的。

现在有几件事要牢记,这对我来说很有意义:

  • 当目录名称更改(事件,团队或参与者)时,它仍应与数据库中的同一条目相关(因为可能存在其他实体,例如,这些实体仍与参与者相关)
  • 任何事件/团队/参与者的目录都可能被删除-然后数据库中的数据应保留。但是-如果以后再次创建一个具有相同名称的新目录,并且该事件被“关闭”,则该目录将指向一个新的数据库条目(例如,新事件)。如果事件仍处于活动状态,则具有相同名称的目录的创建应映射到数据库中先前分配的条目。
  • 理想情况下,目录的创建已经导致了相应数据库条目的创建。
  • 还应该有可能在Web GUI中创建事件/团队/参与者,然后在文件系统上自动创建相应的目录。

我希望我的描述足以理解情况。我已经有了一些想法,但是所有这些并没有真正说服自己成为一个可靠的解决方案。因此,希望你们中的一个已经对此有所了解。我对任何技术或框架都很开放,这可能有助于解决此问题。

我期待您的想法和愉快的讨论!

谢谢你的帮助!

architecture modeling software-design data-synchronization

9
推荐指数
1
解决办法
130
查看次数

Spring Boot:使用 ThreadLocal 变量或传递参数

我想知道 spring-boot 和已经提供的ThreadLocal用于保存诸如LocaleContextHolderor 之类的值的帮助程序类的最佳实践是什么RequestContextHolder

实际上,我真的不喜欢传递参数,例如RequestLocale通过每个方法调用并在最终使用之前炸毁签名。我宁愿隐藏此信息详细信息,并在服务中必要时获取所需信息。但是,当时使用的东西是正确的RequestContextHolder还是LocaleContextHolder正确的,还是依赖于ThreadLocal操作的坏习惯?什么是推荐方法?

依赖时可能会出现什么问题ThreadLocal?我读到清理是一件重要的事情,但由于这已经由 spring-boot 完成,我认为这些是安全的操作。

感谢您的输入

java spring

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

在spring-boot 2.1.1中使用spring-security为WebMvcTest配置MockMvc

WebMvcTest在Spring-Boot 2.1.1中与MockMvcSpring-Security 5.1.2 一起运行时是否存在任何已知问题?因为我无法正常工作-但是也许您看到我错过了什么。

这是我使用Junit5进行的设置:

RestController:

@RestController
@RequestMapping("/api/foo")
public class FooRestController {
...

  @GetMapping("/{id}")
  @PreAuthorize("hasRole('ADMIN')")
  public String getFoo(@PathVariable("id") long id) {
    //do something
  }

}
Run Code Online (Sandbox Code Playgroud)

测试

@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
@WebMvcTest(value = FooRestController.class)
public class FooRestControllerTest {

  @Autowired
  private WebApplicationContext context;

  protected MockMvc mockMvc;

  @BeforeEach
  public void setup() {
    this.mockMvc = MockMvcBuilders
      .webAppContextSetup(this.context)
      .apply(springSecurity())
      .build();
  }

  @Test
  @WithMockUser(roles = "ADMIN")
  public void testFoo() throws Exception {

    MockHttpServletResponse apiResponse = mockMvc.perform(get("/api/foo/42")
      .contentType(MediaType.APPLICATION_JSON)
    )
    .andDo(print())
    .andReturn()
    .getResponse();

    assertThat(apiResponse.getStatus())
      .isEqualTo(HttpStatus.OK.value());
  }
} …
Run Code Online (Sandbox Code Playgroud)

spring-security spring-boot mockmvc junit5

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

使用 spring-boot 应用程序自动压缩/优化图像

有没有办法在 spring-boot-application 中自动压缩/优化图像?在我的应用程序中,用户可以自己将任何图像放入文件夹中,我无法确定它们是否以最佳方式压缩。由于它们不是通过应用程序上传的,我也无法创建优化版本。

所以我想做的是在请求图像后压缩/优化图像,并可能将它们保存在一种“图像缓存”中一段时间​​。

或者是否有一个tomcat/apache-module,它已经可以开箱即用地做这种事情?

谢谢你的帮助

java spring tomcat image-compression spring-boot

4
推荐指数
1
解决办法
4198
查看次数