Ваша интерпретация неверна. В 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 .
Что-то как...
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"));
Это мне тоже очень помогло. Используйте конкретный класс в конструкторе, который, в свою очередь, получает другую строку подключения в своем конструкторе в зависимости от того, какой «родительский» класс его использует. Спасибо.
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>();
});