小编Meh*_*hdi的帖子

Spring启动性能问题

我正在尝试将Spring集成到一个包含数千个类的相当大的应用程序中,并且由于组件扫描,我在启动容器时遇到了巨大的延迟.

我已经收窄,以减少在扫描无关目录浪费的时间,在"基本包"规定,到最低目录的数量,但初始化的类路径扫描部分仍需要大约1-2分钟.

那么,有没有办法优化扫描过程?我曾想过将候选类路径存储在一个文件中,然后让容器从文件中获取它们,而不是每次启动都扫描类路径,但我真的不知道从哪里开始,或者甚至可能.

任何建议都非常感谢.提前致谢.

编辑:加载Bean定义形成自动生成XML文件,减少了弹簧引导时间9〜10秒这证实了各组分的类路径扫描使用由Spring反射API是启动延迟的主要来源.
至于生成xml文件,这里是代码,因为它可能对有相同问题的人有帮助.

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;


public class ConfigurationWriter {

    public ArrayList<String> beanDefinitions = new ArrayList<String>();

    public ConfigurationWriter() {

        // the context loaded with old fashioned way (classpath scanning)
        ApplicationContext context = SpringContainerServiceImpl.getInstance().getContext();
        String[] tab = context.getBeanDefinitionNames();
        for (int i = 0; i < tab.length - 6; i++) {
            Class clazz = context.getType(tab[i]);
            String scope = context.isPrototype(tab[i]) ? "prototype" : "singleton";
            String s = "<bean id=\"" + tab[i] + "\" class=\"" …
Run Code Online (Sandbox Code Playgroud)

java spring bootstrapping spring-mvc classpath

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

如何在不使用xml或注释的情况下使Spring识别bean?

我正在尝试将Spring框架集成到包含数千个pojos的现有项目中。
编写xml配置文件或遍历每个文件并为类添加注释将是一项艰巨的耗时任务,因此,有没有一种方法可以使Spring扫描程序包并仅基于名称约定来标识bean?

java xml spring annotations javabeans

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