GVKun编程网logo

使用Spring进行线程安全的无状态设计(使用spring进行线程安全的无状态设计程序)

29

本篇文章给大家谈谈使用Spring进行线程安全的无状态设计,以及使用spring进行线程安全的无状态设计程序的知识点,同时本文还将给你拓展HashMap是线程安全的吗?为什么不是线程安全的、HashM

本篇文章给大家谈谈使用Spring进行线程安全的无状态设计,以及使用spring进行线程安全的无状态设计程序的知识点,同时本文还将给你拓展HashMap 是线程安全的吗?为什么不是线程安全的、HashMap是线程安全的吗?有哪些线程安全的容器、java – Spring Data(JPA)存储库是否是线程安全的? (又名SimpleJpaRepository线程安全)、java – Spring安全无状态配置等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

使用Spring进行线程安全的无状态设计(使用spring进行线程安全的无状态设计程序)

使用Spring进行线程安全的无状态设计(使用spring进行线程安全的无状态设计程序)

我假设如果实例变量是由spring
IOC管理的,并且是单例的,则设计可以被称为无状态和线程安全的,因此这种设计可以扩展到集群服务器。我的假设是否正确?概述如下?

@Repository("myDao")public class MyDao implements Dao {    @Autowired    private JdbcTemplate jdbcTemplate;    @Value("${sqlFoo}")    private String foo;    @Override    public Integer getMyInt(String str) {      return jdbcTemplate.queryForInt(foo, str);    }

然后将其注入:

@Service("myService")public class MyServiceImpl {    @Resource(name = "myDao")    Dao dao;    @Override    @Transactional(readOnly = true)    public int getScore(String str) {      return dao.getMyInt(str);    }}

答案1

小编典典

Spring bean不是无状态的,因为它们具有状态(字段)。从技术上讲,它们甚至不是一成不变的,因为您可以随时更改注入的字段。

但是,您可以通过使用final字段和构造函数注入轻松地使Spring
bean不可变。从可伸缩性的角度来看,这种状态也不成问题。如果您的bean包含随时间变化的可变值,那么这是集群时的主要问题。但是在Spring服务中,通常仅包含在引导时注入的依赖项。因此,它们实际上是无状态且不可变的。

运行相同的Spring应用程序的服务器数量无关紧要-Bean和依赖项本身是安全的。 但是, 如果您的Spring bean包含计数器,缓存,可变映射等-
您需要考虑一下它们。

HashMap 是线程安全的吗?为什么不是线程安全的

HashMap 是线程安全的吗?为什么不是线程安全的

1.HashMap 不是线程安全的。
2.在put或resize时会发生,后一个线程操作的数据会把前一个线程操作的数据覆盖,或者数据丢失的情况。

 

解释来源于此处:https://www.cnblogs.com/FirstClass/p/6501290.html

 

HashMap是线程安全的吗?有哪些线程安全的容器

HashMap是线程安全的吗?有哪些线程安全的容器

HashMap不是线程安全的。

HashMap的扩容机制就是重新申请一个容量是当前2倍的桶数组,然后将原先的记录逐个映射到新的桶里,然后将原先桶逐个置为null使得引用失效。

在put或resize发生时,后一个线程的操作数据会将前一个数据覆盖,导致数据丢失。

线程安全的容器:

Vector、HashTable、concurrentHashMap、copyOnWriteArrayList

java – Spring Data(JPA)存储库是否是线程安全的? (又名SimpleJpaRepository线程安全)

java – Spring Data(JPA)存储库是否是线程安全的? (又名SimpleJpaRepository线程安全)

我使用Spring Data (JPA) repository来处理CRUD样板.

我这样定义我的存储库接口:

import org.springframework.data.repository.CrudRepository;

public interface FooRepository extends CrudRepository

Spring然后自动神奇地生成我所述接口的实现.我们得到的是代理,但我相信最终我们会得到一个org.springframework.data.jpa.repository.support.SimpleJpaRepository.

如果底层目标类是线程安全的,则JdkDynamicAopProxy是线程安全的.因此问题是:SimpleJpaRepository线程安全吗?

最佳答案
一般来说,是的.它假定一个托管的EntityManager,我们将从Spring的工厂类中获取(如果您使用Spring作为容器)或者作为CDI托管bean(通过@Producer方法声明).

java – Spring安全无状态配置

java – Spring安全无状态配置

我试图通过遵循文档 http://static.springsource.org/spring-security/site/docs/3.1.x/reference/security-filter-chain.html#filter-chains-with-ns来实现Spring的无状态身份验证

所以在我的spring-security.xml中,我有

<!-- Stateless RESTful service using Basic authentication -->  
<http pattern="/restful/**" create-session="stateless">  
  <intercept-url pattern='/**' access='ROLE_REMOTE' />  
  <http-basic />  
</http>

当我使用浏览器测试它时,需要对第一个请求进行身份验证.但随后不是.根据我的理解,我应该看到用户登录提示.有什么我想念的吗?

解决方法

在基本身份验证的情况下,浏览器会记住您输入的凭据,并自动发送后续请求.

为了确保您的配置确实是无状态的,您可以尝试使用命令行工具(wget,curl)发出一些请求(使用和不使用身份验证).

我们今天的关于使用Spring进行线程安全的无状态设计使用spring进行线程安全的无状态设计程序的分享已经告一段落,感谢您的关注,如果您想了解更多关于HashMap 是线程安全的吗?为什么不是线程安全的、HashMap是线程安全的吗?有哪些线程安全的容器、java – Spring Data(JPA)存储库是否是线程安全的? (又名SimpleJpaRepository线程安全)、java – Spring安全无状态配置的相关信息,请在本站查询。

本文标签: