Введите другой объект конструктору с StructureMap для определенного случая

Ваша интерпретация неверна. В JEP говорится:

Добавьте базовый набор микробенчмарков в исходный код JDK и упростите разработчикам запуск существующих микробенчмарков и создание новых.

blockquote>

т.е. это не обязательно что-то, что превращает его в дистрибутив JDK, просто что-то, что добавляется в репозиторий исходного кода, чтобы упростить запуск эталонных тестов в коде JDK. Хотя, честно говоря, тот факт, что он указан в списке как одна из «особенностей» JDK 12, кажется немного вводящим в заблуждение.

Тесты можно выполнить с помощью системы сборки OpenJDK. После того, как вы клонировали исходный код OpenJDK из http://hg.openjdk.java.net/jdk/jdk/ (или другого репозитория, включающего JEP), вы можете запустить тесты производительности, например. с помощью:

make test TEST="micro:java.lang.reflect"

Тесты расположены в каталоге \test\micro\. См. Также документацию: http://hg.openjdk.java.net/jdk/jdk/raw-file/ddfb658c8ce3/doc/testing.html#microbenchmarks

Также для этого требуется Вы должны указать JMH и его зависимости при создании конфигурации сборки:

bash configure --with-jmh="/path/to/jmh/jars"

Необходимые jar-файлы: commons-math3 , jmh-core , jmh -generator-annprocess и jopt-simple .

5
задан bendewey 27 March 2009 в 16:24
поделиться

2 ответа

Что-то как...

ForRequestedType<DataContext>()
    .CacheBy(InstanceScope.Hybrid)
    .AddInstances(inst => inst.ConstructedBy(() => 
        new SecondDataContext { Log = new DebuggerWriter() })
        .WithName("secondDataContext"))
    .TheDefault.Is
    .ConstructedBy(() => new FirstDataContext {Log = new DebuggerWriter()});

ForRequestedType<IRepository<SpecificObject>>()
    .TheDefault.Is
    .OfConcreteType<SqlRepository<SpecificObject>>()
    .CtorDependency<DataContext>()
    .Is(inst => inst.TheInstanceNamed("secondDataContext"));
4
ответ дан 14 December 2019 в 19:25
поделиться

Это мне тоже очень помогло. Используйте конкретный класс в конструкторе, который, в свою очередь, получает другую строку подключения в своем конструкторе в зависимости от того, какой «родительский» класс его использует. Спасибо.

            ObjectFactory.Initialize(x=>
                                     {
                                         // Different connection string for each usage
                                         // of the RelationalGateway class
                                         x.ForRequestedType<RelationalGateway>()
                                             .AddInstances(r =>
                                                 r.ConstructedBy(() => 
                                                     new RelationalGateway(ConfigRepository.DataSourceName))
                                             .WithName("config"))
                                             .TheDefault.Is.ConstructedBy(
                                             () => new RelationalGateway(OracleSpatialRepository.DataSourceName));

                                         // Inject the right RelationalGateway
                                         x.ForRequestedType<IConfigRepository>()
                                             .TheDefault.Is.OfConcreteType<ConfigRepository>()
                                             .CtorDependency<RelationalGateway>().Is(inst => 
                                                 inst.TheInstanceNamed("config"));

                                         x.ForRequestedType<ISpatialRepository>()
                                             .TheDefault.Is.OfConcreteType<OracleSpatialRepository>()
                                             .CtorDependency<RelationalGateway>().IsTheDefault();

                                         // Other simple types
                                         x.ForRequestedType<IIdGenerator>().TheDefaultIsConcreteType<IdGenerator>();
                                     });
1
ответ дан 14 December 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: