Questions tagged «spring»

Spring框架是用于Java平台上的应用程序开发的开源框架。它的核心是对基于组件的体系结构的丰富支持,目前它具有二十多个高度集成的模块。

7
春季-POST后重定向(即使存在验证错误)
我试图弄清楚如何“保留” BindingResult,以便可以通过Spring<form:errors>标记在随后的GET中使用它。我要这样做的原因是由于Google App Engine的SSL限制。我有一个通过HTTP显示的表单,该帖子发布到HTTPS URL。如果我仅转发而不是重定向,则用户将看到https://whatever.appspot.com/my/form URL。我正在努力避免这种情况。任何想法如何解决这个问题? 以下是我想做的事情,但是使用时我只会看到验证错误return "create"。 @RequestMapping(value = "/submit", method = RequestMethod.POST) public final String submit( @ModelAttribute("register") @Valid final Register register, final BindingResult binding) { if (binding.hasErrors()) { return "redirect:/register/create"; } return "redirect:/register/success"; }

6
Spring JUnit:如何在自动装配的组件中模拟自动装配的组件
我有一个要测试的Spring组件,该组件具有autowired属性,出于单元测试的目的,我需要更改该属性。问题是,该类在post-construct方法内部使用了自动装配的组件,因此在实际使用它之前,我无法替换它(即通过ReflectionTestUtils)。 我该怎么办? 这是我要测试的课程: @Component public final class TestedClass{ @Autowired private Resource resource; @PostConstruct private void init(){ //I need this to return different result resource.getSomething(); } } 这是一个测试用例的基础: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations= "classpath:applicationContext.xml") public class TestedClassTest{ @Autowired private TestedClass instance; @Before private void setUp(){ //this doesn't work because it's executed after the bean …

2
如何在Web.xml中注册Spring @Configuration注释类而不是applicationContext.xml文件?
我在Web应用程序中一起使用jsf和spring。我已经在一个配置类中配置了数据源和会话工厂,该配置类使用了诸如此类的注释@Configuration, @ComponentScan。我在我的项目中没有任何applicationContext.xml文件,因为我正在处理Configuration类中上下文xml的每个条目。该测试用例成功运行,但是当我部署Web应用程序时,它给了我错误 java.lang.IllegalStateException:找不到WebApplicationContext:没有注册ContextLoaderListener吗? 现在,如果我在web.xml中提供侦听器类, <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> 它给我错误, 找不到/WEB-INF/applicationContext.xml 根据的文档ContextLoaderListener,的确是,如果我没有明确给出contextConfigLocationparam web.xml,它将搜索名为applicationContext.xml中的默认spring上下文文件web.xml。现在,如果我不想使用spring上下文文件,并使用批注进行所有配置,该怎么办?我应该如何注册侦听器类,ContextLoaderListener以便在不使用xml文件且仅使用批注的情况下,能够使用spring和jsf运行Web应用程序?

3
如何使弹簧注入值进入静态场
我知道这看起来像是一个先前提出的问题,但是我在这里面临另一个问题。 我有一个只有静态方法的实用程序类。我不会,也不会从中获得实例。 public class Utils{ private static Properties dataBaseAttr; public static void methodA(){ } public static void methodB(){ } } 现在我需要Spring用数据库属性Properties填充dataBaseAttr.Spring的配置是: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:util="http://www.springframework.org/schema/util" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd"> <util:properties id="dataBaseAttr" location="file:#{classPathVariable.path}/dataBaseAttr.properties" /> </beans> 我已经在其他bean中做到了,但是此类(Utils)中的问题不是bean,如果我将其变成bean,则没有任何变化,但我仍然无法使用变量,因为该类不会被实例化并且总是变量等于null。

11
我可以在运行时替换Spring bean定义吗?
请考虑以下情形。我有一个带有bean的Spring应用程序上下文,其属性应该是可配置的,认为DataSource或MailSender。可变的应用程序配置由单独的Bean管理,我们称之为configuration。 管理员现在可以更改配置值,例如电子邮件地址或数据库URL,我想在运行时重新初始化配置的bean。 假设我不能只是简单地修改上述可配置bean的属性(例如,通过FactoryBean或构造函数注入创建),而必须重新创建bean本身。 关于如何实现这一点的任何想法?我很高兴收到有关如何组织整个配置内容的建议。没有固定的东西。:-) 编辑 为了澄清一点:我不是在问如何更新配置或如何注入静态配置值。我将尝试一个示例: <beans> <util:map id="configuration"> <!-- initial configuration --> </util:map> <bean id="constructorInjectedBean" class="Foo"> <constructor-arg value="#{configuration['foobar']}" /> </bean> <bean id="configurationService" class="ConfigurationService"> <property name="configuration" ref="configuration" /> </bean> </beans> 因此,有一个constructorInjectedBean使用构造函数注入的bean 。想像一下,bean的构建非常昂贵,因此,使用原型范围或工厂代理不是一种选择DataSource。 我想做的是,每次更新配置时(通过重新创建configurationServicebeanconstructorInjectedBean并将其重新注入到应用程序上下文和从属bean中)。 我们可以放心地假设constructorInjectedBean正在使用接口,因此代理魔术确实是一种选择。 我希望这个问题更加清楚。
68 java  spring 


1
Spring中的作用域代理是什么?
正如我们所知道Spring使用代理来增加功能(@Transactional和@Scheduled举例)。有两种选择-使用JDK动态代理(该类必须实现非空接口),或使用CGLIB代码生成器生成子类。我一直认为proxyMode允许我在JDK动态代理和CGLIB之间进行选择。 但是我能够创建一个示例,说明我的假设是错误的: 情况1: 单身人士: @Service public class MyBeanA { @Autowired private MyBeanB myBeanB; public void foo() { System.out.println(myBeanB.getCounter()); } public MyBeanB getMyBeanB() { return myBeanB; } } 原型: @Service @Scope(value = "prototype") public class MyBeanB { private static final AtomicLong COUNTER = new AtomicLong(0); private Long index; public MyBeanB() { …

2
如何预热Java类以避免缓慢的首次调用?
我正在做一个项目,我需要所有API调用花费少于1秒的时间,但是我遇到的问题是第一次调用每条路由的速度都慢于随后的路由。 目前,首次拨打/ login的时间为3.6秒,接下来的通话为170毫秒,其他所有路由都相同。 我发现-XX:+TraceClassLoading在第一次调用时使用了该类,这些类已加载到内存中,这导致了性能问题。 但是,我没有找到一种在启动时加载所有类的简便方法,对于每个新服务,我需要在ApplicationRunner中添加一个热身调用。 是否有人可以自动加载SpringBoot应用程序的类或预热其所有路由的解决方案?

5
Springfox swagger在Spring Boot 2.2.0中不起作用
我想将Spring Boot v2.1.9升级到2.2.0。但是升级之后,我得到了一些例外,这表示Spring Fox使用的是Spring-plugin-core的旧版本。 是否有其他替代解决方案,还是我需要放弃springfox插件? *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: springfox.documentation.spring.web.plugins.DocumentationPluginsManager.createContextBuilder(DocumentationPluginsManager.java:152) The following method did not exist: org.springframework.plugin.core.PluginRegistry.getPluginFor(Ljava/lang/Object;Lorg/springframework/plugin/core/Plugin;)Lorg/springframework/plugin/core/Plugin; The method's class, org.springframework.plugin.core.PluginRegistry, is available from the following locations: …

1
Spring Security中已弃用的AuthorizationServer的替代品是什么?
Spring Security 5.2.2已合并了Spring Security OAuth项目,但未合并AuthorizationServer或ResourceServer。Spring Security 5.2.2中什么是AuthorizationServer的替代品? OAuth-2.0迁移指南 本文档包含有关将OAuth 2.0客户端和资源服务器从Spring Security OAuth 2.x迁移到Spring Security 5.2.x的指南。由于Spring Security不提供Authorization Server支持,因此迁移Spring Security OAuth Authorization Server超出了本文档的范围。

5
在从字符串> 4k创建的谓词中使用Oracle Clob
我正在尝试从> 4000个字符(在file_data绑定变量中提供)的字符串创建一个Clob,以在下面的Oracle SELECT谓词中使用: myQuery= select * from dcr_mols WHERE flexmatch(ctab,:file_data,'MATCH=ALL')=1; 如果我将TO_CLOB()添加到file_data的周围,则它将无法达到臭名昭著的Oracle 4k对varchar的限制(对于<4k的字符串就可以)。错误(在SQL Developer中)为: ORA-01460: unimplemented or unreasonable conversion requested 01460. 00000 - "unimplemented or unreasonable conversion requested" 仅供参考,flexmatch函数用于搜索分子,在此处进行了描述:http : //help.accelrysonline.com/ulm/onelab/1.0/content/ulm_pdfs/direct/developers/direct_2016_developersguide.pdf 函数本身有点复杂,但本质是第二个参数必须是Clob。所以我的问题是如何将超过4000个字符的Java字符串bind_variable转换为sql(或Java)中的clob。 我使用以下方法在Java(Spring boot 2)中尝试了以下方法(在插入Clob时有效): MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("file_data", fileDataStr,Types.CLOB); jdbcNamedParameterTemplate.query(myQuery,parameters,… 此方法应该可以工作,但是会失败,并会产生一个弹性匹配错误,仅供参考: SQL state [99999]; error code [29902]; ORA-29902: …

3
Spring Boot 2嵌入tomcat 9.0.26无法加载jks文件流关闭
我尝试在嵌入了tomcat 9.0.26的Spring Boot 2.2.0上使用SSL,但是tomcat无法关闭JKS文件流。 这是应用程序属性: server.port=443 server.ssl.key-store-type=JKS server.ssl.key-store=C:\\Keystore\\mykey.jks server.ssl.key-store-password=cccc server.ssl.key-alias=*.mydomain.com 例外: org.springframework.boot.web.server.WebServerException:无法在org.springframework.boot.web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:215)〜[spring-boot-2.2.0上启动嵌入式Tomcat服务器。 ..BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]位于org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.startWebServer(ServletWebServerApplicationContext.java:297)〜[spring-boot-2.2.0。 BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT],位于org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:163)〜[spring-boot-2.2.0.BUILD -SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553)〜[spring-context-5.2.0.RELEASE。jar!/:5.2.0.RELEASE]位于org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/ :2.2.0.BUILD-SNAPSHOT]在org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0.BUILD- SNAPSHOT],网址为org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]。 boot.SpringApplication.run(SpringApplication.java:315)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]在org.springframework.boot.SpringApplication.run(SpringApplication .java:1226)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0。BUILD-SNAPSHOT],位于欧盟org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]。 soluma.app.SolumaTdvApplication.main(SolumaTdvApplication.java:34)〜[classes!/:0.0.1-SNAPSHOT] at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)〜[na:na]在java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)〜[na:na]在java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)〜 na:na]在java.base / java.lang.reflect.Method.invoke(Method.java:567)〜[na:na]在org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) 〜[SolumaTDV-0.0.1-SNAPSHOT.jar:0.0。org.springframework.boot.loader.Launcher.launch(Launcher.java:87)的[1-SNAPSHOT]〜org.springframework.boot.loader中的[SolumaTDV-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]。 Launcher.launch(Launcher.java:51)〜[SolumaTDV-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]在org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)〜[SolumaTDV -0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]由以下原因引起:java.lang.IllegalArgumentException:standardService.connector.startFailed at org.apache.catalina.core.StandardService.addConnector(StandardService.java:231)〜[ tomcat-embed-core-9.0.26.jar!/:9.0.26],位于org.springframework.boot.web.embedded.tomcat.TomcatWebServer.addPreviouslyRemovedConnectors(TomcatWebServer.java:278)〜[spring-boot-2.2.0 ..BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT]位于org.springframework.boot。web.embedded.tomcat.TomcatWebServer.start(TomcatWebServer.java:197)〜[spring-boot-2.2.0.BUILD-SNAPSHOT.jar!/:2.2.0.BUILD-SNAPSHOT] ...省略了18个常见框架创建人:org.apache.catalina.LifecycleException:协议处理程序启动失败,发生在org.apache.catalina.connector.Connector.startInternal(Connector.java:1008)〜[tomcat-embed-core-9.0.26.jar!/:9.0 .26]在org.apache.catalina.core上的org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26] .StandardService.addConnector(StandardService.java:227)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26] ...省略了20个常见框架导致原因:java.lang.IllegalArgumentException:流在以下位置关闭org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:99)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26]在org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:71)〜[tomcat-embed-core -9.0.26.jar!/:9.0.26]在org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:218)〜[tomcat-embed-core-9.0.26.jar!/: 9.0.26],位于org.apache.tomcat.util.net.AbstractEndpoint.bindWithCleanup(AbstractEndpoint.java:1124)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26],位于org.apache。 tomcat.util.net.AbstractEndpoint.start(AbstractEndpoint.java:1210)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26]在org.apache.coyote.AbstractProtocol.start(AbstractProtocol.java :585)〜[tomcat-embed-core-9.0.26.jar!/:9.0.26]在org.apache.catalina.connector.Connector.startInternal(Connector.java:1005)〜[tomcat-embed-core- 9.0.26.jar!/:9.0。[26] ... ...省略了22个共同的框架导致原因:java.io.IOException:流在java.base / …

5
基本的Spring Boot应用程序无法正常工作,显示:无法刷新来自进程xxxx的实时数据
我是春季靴的初学者。我初始化了一个新项目并尝试运行它,但是它无法成功运行。当我将其作为spring boot应用程序运行时,它开始执行。在底部的编译器/状态栏中,它显示处理和重试。它最多上升10次并引发以下错误: 无法刷新来自进程xxxx的实时数据 在这里更多细节 TanmayTestApplication.java package com.example.tanmay_test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class TanmayTestApplication { public static void main(String[] args) { SpringApplication.run(TanmayTestApplication.class, args); } } DemoControler.java package com.example.cntr; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RequestMapping; @RestController public class DemoControler { @RequestMapping(path = "/index") public String index() { return "By Tanmay!"; } } …


1
如何为基于json的插件'docker plugin install'
我正在开发一个全新的批量插件,并且需要通过所有的vol-test测试。我已经成功通过了所有测试(在安装了插件的环境中),但第一个测试除外docker plugin install。事实是,有三种可能的方式可以安装自定义插件: .sock文件是UNIX域套接字。 .spec文件是包含URL的文本文件,例如unix:///other.sock或tcp:// localhost:8080。 .json文件是包含插件完整json规范的文本文件。 我们使用json,这只是实现docker API的REST服务器(用java,spring编写)。它的安装过程很简单:只需将json文件复制到其中/etc/docker/plugins,dockerd就会自动发现它。 当我尝试将插件集成到docker plugin install命令中时,问题就来了。由于它说在这里: Docker首先在您的Docker主机上寻找插件。如果该插件在本地不存在,则将该插件从注册表中拉出。 我们的安装过程不假定已连接到私有或公共注册表,因此我们需要第一个docker plugin create命令才能在本地创建插件。这就是我很难理解如何使用基于json的插件做到这一点的地方。根据此文档,我需要指定插件的路径。如果我使用它需要一个目录名config.json和rootfs存在于该目录中。 但 1 config.json-这是一个配置,它描述.sock格式CONFIGS,而不是.json格式(请纠正我,如果我错了) 2.我如何创建根文件系统,为什么我需要它,如果我的插件仅仅是一个独立的REST服务,它甚至不在容器中? 感谢任何帮助。
9 java  spring  docker 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.