小编Gan*_*er7的帖子

在Spring MVC应用程序中使用bean作用域的最佳实践

我已经看到它在很多地方都写过,应将Spring应用程序的DAO和Service类限制为单例范围。
在我的应用程序中,我具有以下服务类别

@Service
public class CustomerServiceImpl implements CustomerService {

    @Autowired
    private CustomerDAO customerDAO;

    .......
    parameterised methods only....
}  
Run Code Online (Sandbox Code Playgroud)

和DAO班

@Repository
public class CustomerDAOImpl implements CustomerDAO {

@Autowired
private SessionFactory sessionFactory;

...............
parameterised methods only....
}  
Run Code Online (Sandbox Code Playgroud)

由于我没有定义任何作用域,因此默认作用域是单例。因此,每个容器只将CustomerService和CustomerDAO实例化一次,而且DAO类在开始时仅自动连接到Service类一次。将成为一个繁重的请求 Web应用程序,这意味着(这意味着),数百个线程将使用两个类的相同实例。

那么在这种情况下如何保证线程安全
以及在xml中定义的hibernate sessionfactory bean的范围呢?

我对spring mvc应用程序中的bean作用域和线程安全性非常困惑。Springsource文档没有清楚地为Web应用程序解释这些内容。

谁能为我解释在请求繁重的Web应用程序中使用bean作用域(用于DAO,Service,Controller和其他bean)的最佳实践吗?
任何解释这些的链接都会令我感激。

感谢您的建议。

java model-view-controller spring scope javabeans

6
推荐指数
1
解决办法
2063
查看次数

在JUnit 4.11中找不到类

首先,我已经查看了有关堆栈溢出的所有类似问题,但对我来说还没有任何效果.试图让JUnit使用Peter Tahchiev撰写的JUnit in Action第二版中的一个简单例子.

Calculator.java

public class Calculator {
    public double add(double number1, double number2) {
        return number1 + number2;
    }
}
Run Code Online (Sandbox Code Playgroud)

CalculatorTest.java

import static org.junit.Assert.assertEquals;
import org.junit.Test;

public class CalculatorTest {

    @Test
    public void testAdd() {
        Calculator calc = new Calculator();
        double result = calc.add(1,1);
        assertEquals(2, result,0);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的文件夹: 当前文件夹

我编译:

javac -cp junit-4.11.jar *.java
Run Code Online (Sandbox Code Playgroud)

编译后我的文件夹: 编译后的当前文件夹

我尝试运行测试:

java -cp junit-4.11.jar;hamcrest-core-1.3.jar;. org.junit.runner.JUnitCore CalculatorTest
Run Code Online (Sandbox Code Playgroud)

这是我的输出:

产量

当我尝试运行各个类时,jre找到它们但抛出了一个没有主要的方法错误,这是预期的:

java Calculator
java CalculatorTest
Run Code Online (Sandbox Code Playgroud)

输出(这是预期的,但它找到了类): 错误1 错误2

任何想法我怎么能得到JUnit /无论它是什么行为?

[编辑]
我运行所有命令C:\Users\Zach\Documents\docs\Code\JUnit
上面的截图是相同的文件夹.
我使用的是jdk1.7.0_45jre7 …

java junit unit-testing java-7

6
推荐指数
1
解决办法
2862
查看次数

使用正则表达式从字符串中删除标点符号和空格

我试图取出一个字符串中的所有标点符号和空格,我将使用Playfair Cipher加密.我无法弄清楚为什么这条线不起作用.

s = Regex.Replace(s, @"[^\w\s]", string.Empty);
Run Code Online (Sandbox Code Playgroud)

c# regex string encryption

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

无法为整数生成全范围的随机数

我试图生成一个介于0和100 000之间的10000个整数的文件,所以我可以在以后对它们进行MergeSort.

当我使用fstream生成文件时,我从未得到超过32760的整数.

下面的方法生成文件,然后将其读回并检查32750以上的任何整数.我通常在32750和32760之间得到3-5个整数.为什么会发生这种情况,我该如何解决?是种子问题还是随机函数的实际使用?

// sizeOfArray = 10000
void generateFile() {
    ofstream fout("unsorted.txt");
    srand(time(NULL));

    // Generating the file
    int num;
    for(int i = 0; i < sizeOfArray; i++) {
         num = rand() % 100000;
         if(i < sizeOfArray-1)
            //fout << i+1 << ": " << num << endl;
            fout << num << endl;
         else
            //fout << i+1 << ": " << num;
            fout << num;
    }

    // Reading the File Back
    ifstream fin("unsorted.txt");
    for(int i = 0; i < sizeOfArray; i++) …
Run Code Online (Sandbox Code Playgroud)

c++ random file-io ifstream

3
推荐指数
1
解决办法
637
查看次数