我已经安装了一个应用程序,当我尝试运行它时(它是一个可执行的jar)没有任何反应.当我从命令行运行它时:
java -jar"app.jar"
我收到以下消息:
"app.jar"中没有主要的清单属性
通常,如果我自己创建了程序,我会在清单文件中添加一个主类属性.但在这种情况下,由于文件来自应用程序,我不能这样做.我也尝试提取jar以查看是否可以找到主类,但是有许多类,并且它们中没有一个在其名称中包含"main"一词.必须有办法解决这个问题,因为程序在其他系统上运行正常.
我@OneToMany在父实体和子实体之间进行简单映射时遇到问题.一切正常,只有当我从集合中删除它们时才会删除子记录.
父母:
@Entity
public class Parent {
@Id
@Column(name = "ID")
private Long id;
@OneToMany(cascade = {CascadeType.ALL}, mappedBy = "parent")
private Set<Child> childs = new HashSet<Child>();
...
}
Run Code Online (Sandbox Code Playgroud)
孩子:
@Entity
public class Child {
@Id
@Column(name = "ID")
private Long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name="PARENTID", nullable = false)
private Parent parent;
...
}
Run Code Online (Sandbox Code Playgroud)
如果我现在从子集Set中删除和子节点,它不会从数据库中删除.我试图使child.parent引用无效,但这也无效.
实体用于Web应用程序,删除是作为Ajax请求的一部分发生的.按下保存按钮时,我没有已删除子项的列表,因此我无法隐式删除它们.
我试图在RestController中获取请求URL.RestController有多个注释@RequestMapping用于不同URI的方法,我想知道如何从@RequestMapping注释中获取绝对URL .
@RestController
@RequestMapping(value = "/my/absolute/url/{urlid}/tests"
public class Test {
@ResponseBody
@RequestMapping(value "/",produces = "application/json")
public String getURLValue(){
//get URL value here which should be in this case, for instance if urlid
//is 1 in request then "/my/absolute/url/1/tests"
String test = getURL ?
return test;
}
}
Run Code Online (Sandbox Code Playgroud) 我将项目升级到 Spring Boot 3 和 Spring Security 6,但升级后 CSRF 保护不再起作用。
我正在使用以下配置:
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
return http
.authorizeHttpRequests(authorize -> authorize
.anyRequest().authenticated())
.httpBasic(withDefaults())
.sessionManagement(session -> session
.sessionCreationPolicy(SessionCreationPolicy.ALWAYS))
.csrf(csrf -> csrf
.csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()))
.build();
}
@Bean
public UserDetailsService userDetailsService() {
UserDetails user = User.builder().username("user").password("{noop}test").authorities("user").build();
return new InMemoryUserDetailsManager(user);
}
Run Code Online (Sandbox Code Playgroud)
在我的网页上只有一个按钮:
<button id="test">Test CSRF</button>
Run Code Online (Sandbox Code Playgroud)
以及以下 JavaScript 代码:
document.querySelector("#test").addEventListener('click', async function() {
console.log('Clicked');
// This code reads the cookie from the browser
// Source: https://stackoverflow.com/a/25490531
const csrfToken = document.cookie.match('(^|;)\\s*XSRF-TOKEN\\s*=\\s*([^;]+)')?.pop();
const result = …Run Code Online (Sandbox Code Playgroud) 自 Spring boot 2.7.1 起,@LocalServerPort(在包中org.springframework.boot.web.server.LocalServerPort)已被弃用。
我可以用什么来代替这个注释?
在我的例子中,让我们考虑使用Spring Boot创建和配置的简单RESTful服务.该服务与数据库(例如Postgres)通信.
有什么区别:
.jar文件并通过我的远程公共主机运行它java -jar myservice.jar?要么
.war将其打包到文件并在Tomcat/Jetty上部署?第一个选项似乎更容易,你只需要运行一个.jar.在第二个选项中,您需要创建Tomcat实例,运行它然后部署.war文件.还有其他区别吗?这两种方法的优缺点是什么?
我有CSS和Thymeleaf的问题.
在我的Spring启动应用程序中,我有这样的结构:
现在,我的html页面名为ErrorPage,css文件名为Layout.css,使用Thymeleaf,我在ErrorPage的头部:
<link href="../css/Layout.css" th:href="@{css/Layout.css}" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
但这不起作用.
我究竟做错了什么?
我无法理解Zuul和Ribbon之间的联系.
我想我清楚了.这是一个反向代理,我可以联系以达到我的几个服务实例之一.它将使用循环算法或您配置的任何内容来选择正确的服务器.它是传统的负载均衡器.要知道可用的实例,它可以使用像Eureka这样的注册表.
但是我在Ribbon上遇到了更多麻烦.它作为客户端负载均衡器出售,但它意味着什么?它不需要外部服务器?功能区是否与Eureka客户端一样嵌入客户端?如果是这样,它是如何工作的?我使用Ribbon时是否需要Zuul,反之亦然?
在一些文章中,我看到实际上,Zuul默认使用Ribbon作为负载平衡部分,这让我更加困惑.如果这是真的,"客户端"是什么意思?除了路由之外,Zuul会怎么做?
我希望你能帮助我.
Zuul和kong都是微服务架构中的一个很好的API网关层.这两者之间有什么重要的区别?
我正在使用Ribbon Load Balancer处理Spring Boot Eureka客户端应用程序.
我有两个服务器在Eureka注册,名称为"TEST".在客户端,我有以下代码从Eureka获取服务器.
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@RestController
public class EurekaConsumerApplication {
@Autowired
DiscoveryClient discoveryClient;
@Autowired
RestTemplate restTemplate;
@RequestMapping(value = "/",method = RequestMethod.GET)
String consumer(){
InstanceInfo instance = discoveryClient.getNextServerFromEureka("TEST", false);
URI uri = UriComponentsBuilder.fromUriString(instance.getHomePageUrl() + "baseDir")
.build()
.toUri();
String baseDir = restTemplate.getForObject(uri, String.class);
return baseDir;
}
public static void main(String[] args) {
SpringApplication.run(EurekaConsumerApplication.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
application.yml
spring:
application:
name: consumer
info:
component: Consumer to fetch configuration
server:
port: 8090
eureka:
instance:
leaseRenewalIntervalInSeconds: 3
metadataMap:
instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}} …Run Code Online (Sandbox Code Playgroud) resttemplate spring-boot spring-cloud netflix-eureka netflix-ribbon
spring-boot ×6
java ×4
netflix-zuul ×2
csrf ×1
css3 ×1
jar ×1
jetty ×1
jpa ×1
jpa-1.0 ×1
kong ×1
manifest ×1
mashape ×1
netflix ×1
resttemplate ×1
spring ×1
spring-cloud ×1
spring-test ×1
thymeleaf ×1
tomcat ×1