Questions tagged «spring»

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

3
了解Spring Cloud Eureka Server的自我保存和续订阈值
我已经开始开发微服务,尽管我已经研究了一段时间,同时阅读了Spring的文档和Netflix的文档。 我已经开始在Github上进行一个简单的项目。它基本上是一个Eureka服务器(Archimedes)和三个Eureka客户端微服务(一个公共API和两个私有)。查看github的自述文件以获取详细描述。 关键是,当一切都在运行时,我希望如果其中一个私有微服务被杀死,Eureka服务器会意识到这一点并将其从注册表中删除。 我在Stackoverflow上发现了这个问题,该解决方案通过enableSelfPreservation:false在Eureka Server配置中使用而得以通过。一段时间后,被取消的服务会按预期消失。 但是我可以看到以下消息: 自我保存模式已关闭。在网络/其他问题的情况下,此设置可能无法保护即时实例。 1.自我保存的目的是什么?该文档指出,通过自我保留,“客户端可以获取不再存在的实例”。那么什么时候建议打开/关闭它呢? 此外,打开自我保存功能后,您可能会在Eureka Server控制台中收到一条警告消息: 紧急!如果不是,EUREKA可能会不正确地提出索赔要求。续订比阈值要少,因此不再只是为了安全起见而立即终止实例。 现在,继续使用Spring Eureka Console。 Lease expiration enabled true/false Renews threshold 5 Renews (last min) 4 我遇到了阈值计数的怪异行为:当我单独启动Eureka Server时,阈值为1。 2.我有一台Eureka服务器,并且配置registerWithEureka: false为防止它在另一台服务器上注册。那么,为什么它会显示在阈值计数中? 3.对于我启动的每个客户,阈值计数都会增加+2。我猜是因为它们每分钟发送2条更新消息,对吗? 4. Eureka服务器从不发送续订,因此最后一次续订始终低于阈值。这正常吗? renew threshold 5 rewnews last min: (client1) +2 + (client2) +2 -> 4 服务器cfg: server: port: ${PORT:8761} eureka: …

2
何时在无状态会话bean上使用有状态会话bean?
有状态会话Bean定义如下: 有状态会话Bean对象的状态由其实例变量的值组成。在有状态会话Bean中,实例变量代表唯一的客户端Bean会话的状态。因为客户端与其bean进行交互(“交谈”),所以这种状态通常称为对话状态。 无状态会话Bean定义如下: 无状态会话Bean无状态会话Bean不会与客户端保持对话状态。当客户端调用无状态Bean的方法时,该Bean的实例变量可能包含特定于该客户端的状态,但仅限于调用期间。该方法完成后,不应保留特定于客户端的状态。但是,客户端可以更改池化的无状态Bean中实例变量的状态,并且此状态将保留到池化的无状态Bean的下一次调用中。除了方法调用期间,无状态bean的所有实例都是等效的,从而允许EJB容器将实例分配给任何客户端。也就是说,无状态会话Bean的状态应适用于所有客户端。 与有状态会话Bean相比,使用无状态会话Bean的优势如下: 因为无状态会话Bean可以支持多个客户端,所以它们可以为需要大量客户端的应用程序提供更好的可伸缩性。通常,与支持相同数量的客户端的有状态会话Bean相比,应用程序需要的无状态会话Bean更少。 因此想到的问题是何时应该使用有状态会话Bean?就我对此事的幼稚理解而言,应该坚持使用无状态会话bean。 应该使用有状态会话bean的候选对象是什么?有什么好的例子吗? 会话Bean

2
如何在自定义过滤器中使用Java配置注入AuthenticationManager
我正在使用Spring Security 3.2和Spring 4.0.1 我正在将xml配置转换为Java配置。当我在“过滤器”中添加注释AuthenticationManager时@Autowired,出现异常 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.security.authentication.AuthenticationManager] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {} 我已经尝试了注入,AuthenticationManagerFactoryBean但是由于类似的异常也失败了。 这是我正在使用的XML配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...> <security:authentication-manager id="authenticationManager"> <security:authentication-provider user-service-ref="userDao"> <security:password-encoder ref="passwordEncoder"/> </security:authentication-provider> </security:authentication-manager> <security:http realm="Protected …

5
“ @Transactional”应放在哪里服务层或DAO
首先,可能是我要问一些以前已被问到并回答过的问题,但我无法找回搜索结果。一般而言(或到目前为止):)我们在服务层上定义事务注释,通常是Spring Hibernate Crud。 Controller-> Manager-> Dao-> Orm。 现在,我需要根据客户站点在域模型之间进行选择。假设客户端A使用我的域模型都很好,但是另一个客户端网站会给我一个Web服务而不是使用我们的域模型。 我应该替换哪一层。我认为必须是DAO,它将从Web服务获取我的数据并将其发送回去。即两个单独编写的DAO层,并根据情况插入。 我现在意识到,当我们放入@TransactionalService层时,我们一直在进行紧密的耦合(如果有这样的事情或者说没有松散的耦合)。这么多的大脑不会错,或者是(我对此表示怀疑)。 所以问题是“应该在哪里@Transactional放置服务层或DAO?” 服务层是否向下,我应该更换。

5
Spring-使用静态final字段(常量)进行bean初始化
是否可以使用CoreProtocolPNames类的static final字段来定义bean,如下所示: <bean id="httpParamBean" class="org.apache.http.params.HttpProtocolParamBean"> <constructor-arg ref="httpParams"/> <property name="httpElementCharset" value="CoreProtocolPNames.HTTP_ELEMENT_CHARSET" /> <property name="version" value="CoreProtocolPNames.PROTOCOL_VERSION"> </bean> public interface CoreProtocolPNames { public static final String PROTOCOL_VERSION = "http.protocol.version"; public static final String HTTP_ELEMENT_CHARSET = "http.protocol.element-charset"; } 如果可能的话,最好的方法是什么?

6
如何在Spring中自动装配通用类型<T>的Bean?
我有一个Item&lt;T&gt;需要在@Configuration类中自动装配的bean 。 @Configuration public class AppConfig { @Bean public Item&lt;String&gt; stringItem() { return new StringItem(); } @Bean public Item&lt;Integer&gt; integerItem() { return new IntegerItem(); } } 但是当我尝试时@Autowire Item&lt;String&gt;,出现以下异常。 "No qualifying bean of type [Item] is defined: expected single matching bean but found 2: stringItem, integerItem" 如何Item&lt;T&gt;在Spring中自动装配通用类型?


11
Maven-在当前项目和插件组中找不到前缀为“ spring-boot”的插件
我正在尝试构建一个使用Spring Tools Suite构建的springboot项目。执行时出现以下错误$mvn spring-boot:run Downloading: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml Downloading: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml Downloaded: https://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml (13 KB at 14.0 KB/sec) Downloaded: https://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata.xml (20 KB at 21.8 KB/sec) [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.032 s [INFO] Finished at: 2015-06-15T17:46:50-04:00 [INFO] Final Memory: 11M/123M [INFO] ------------------------------------------------------------------------ [ERROR] No plugin found for prefix …

12
在Spring Boot中从资源文件夹读取文件
我正在使用Spring Boot和json-schema-validator。我正在尝试jsonschema.json从resources文件夹读取一个文件。我尝试了几种不同的方法,但无法正常工作。这是我的代码。 ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("jsonschema.json").getFile()); JsonNode mySchema = JsonLoader.fromFile(file); 这是文件的位置。 在这里,我可以看到文件classes夹中的文件。 但是,当我运行代码时,出现以下错误。 jsonSchemaValidator error: java.io.FileNotFoundException: /home/user/Dev/Java/Java%20Programs/SystemRoutines/target/classes/jsonschema.json (No such file or directory) 我在代码中做错了什么?


12
log4j:WARN在web.xml中找不到记录器的附加程序
我已经将log4jConfigLocation放在web.xml中,但是仍然收到以下警告: log4j:WARN No appenders could be found for logger ⤦ ⤥ (org.springframework.web.context.ContextLoader). log4j:WARN Please initialize the log4j system properly. 我错过了什么? &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "java.sun.com/dtd/web-app_2_3.dtd"&gt; &lt;web-app&gt; &lt;context-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; &lt;param-value&gt; /WEB-INF/applicationContext.xml &lt;/param-value&gt; &lt;/context-param&gt; &lt;context-param&gt; &lt;param-name&gt;log4jConfigLocation&lt;/param-name&gt; &lt;param-value&gt;/WEB-INF/classes/log4j.properties&lt;/param-value&gt; &lt;/context-param&gt; &lt;listener&gt; &lt;listener-class&gt; org.springframework.web.util.Log4jConfigListener &lt;/listener-class&gt; &lt;/listener&gt; &lt;listener&gt; …

1
春季:/ **和/ *关于路径的差异
引用路径时,两个星号而不是一个星号有什么区别? 之前我在调试Spring 3项目。我正在尝试使用添加.swf &lt;spring:url var="flashy" value="/resources/images/flash.swf"/&gt; 我的web.xml的ResourceServlet看起来像 &lt;servlet-name&gt;Resource Servlet &lt;/servlet-name&gt; &lt;url-pattern&gt;/resources/*&lt;/url-pattern&gt; 但是不幸的是我遇到了这个错误: WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed. 我发现这很奇怪,因为images访问了该文件夹中的所有图像,但是为什么.swf受到了“保护”? 之后,我决定将更/resources/*改为/resources/**,终于可以了。我的问题是...为什么?


4
如何使用Spring Boot和Spring Security保护REST API?
我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否现实。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不需要身份验证, 某些资源仅对具有管理员权限的用户可用, 授权所有用户后,即可访问其他资源。 我不想使用基本身份验证 Java代码配置(非XML) 当前状态 我的REST API运作良好,但现在我需要保护它。当我寻找解决方案时,我创建了一个javax.servlet.Filter过滤器: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN); Account account = accountDao.find(accessToken); if (account == null) { throw new UnauthorizedException(); } chain.doFilter(req, res); } …


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.