Сначала просто ответьте на комментарий в ответе accept.
«Что делает привязка? Что делать, если у меня есть интерфейс и реализация?»
blockquote>Он просто читает
bind( implementation ).to( contract )
. Вы можете использовать альтернативную цепочку.in( scope )
. Область по умолчаниюPerLookup
. Поэтому, если вам нужен синглтон, вы можетеbind( implementation ).to( contract ).in( Singleton.class );
Также имеется
RequestScoped
Кроме того, вместо
bind(Class).to(Class)
вы также можетеbind(Instance).to(Class)
, который будет быть автоматически одиночным.
Для тех, кто пытается выяснить, как зарегистрировать реализацию
AbstractBinder
в ваш web.xml (т. е. вы не используетеResourceConfig
), похоже, связывание не будет обнаружено через сканирование пакетов, то есть
org.glassfish.jersey.servlet.ServletContainer jersey.config.server.provider.packages your.packages.to.scan Или это либо
jersey.config.server.provider.classnames com.foo.YourBinderImpl Чтобы заставить его работать, мне пришлось реализовать
Feature
:import javax.ws.rs.core.Feature; import javax.ws.rs.core.FeatureContext; import javax.ws.rs.ext.Provider; @Provider public class Hk2Feature implements Feature { @Override public boolean configure(FeatureContext context) { context.register(new AppBinder()); return true; } }
Аннотации
@Provider
должны позволять выбиратьFeature
путем сканирования пакета. Или без сканирования пакетов вы можете явно зарегистрироватьFeature
вweb.xml
Jersey Web Application org.glassfish.jersey.servlet.ServletContainer ... jersey.config.server.provider.classnames com.foo.Hk2Feature 1 См. Также:
- Пользовательский параметр метода [gg]
- Как правильно настроить EntityManager в jersey / hk2
- Запросить выделенную инъекцию в синглтоны
и для общей информации из документации Джерси
UPDATE
Заводы
от базовой привязки в принятом ответе, у вас также есть заводы, где вы можете иметь более сложную логику создания, а также иметь доступ к информации контекста запроса. Например
public class MyServiceFactory implements Factory
{ @Context private HttpHeaders headers; @Override public MyService provide() { return new MyService(headers.getHeaderString("X-Header")); } @Override public void dispose(MyService service) { /* noop */ } } register(new AbstractBinder() { @Override public void configure() { bindFactory(MyServiceFactory.class).to(MyService.class) .in(RequestScoped.class); } }); Затем вы можете ввести
MyService
в свой класс ресурсов.
Это файлы класса в качестве примера для различных языков, найденных в zip MediaInfo.dll
Действительно необходимо использовать interop, и я не знаю, можно ли отредактировать теги, я никогда не должен был делать этого, но это - в значительной степени швейцарский нож, по крайней мере, для того, чтобы получить информацию медиа из файлов.
Свяжитесь со страницей загрузок (SourceForge)
MediaInfo_0.7.7.4_DLL_Win32.zip
Я использую MediaInfo со своими приложениями C#, дает Вам большую информацию о медиа-файлах.
Я смотрел на проект NTag также, который обрабатывает MP3/WMA/OGG. Я не знаю о единственной библиотеке, которая обрабатывает звуковые файлы и видеофайлы, таким образом, Вам, возможно, придется использовать некоторых.
Можно пользоваться свободной библиотекой.NET UltraID3Lib к чтению-записи метаданные MP3.
Я недавно использовал Lib Тега Sharp для записи некоторых приложений C# для чистки и поддержания моей музыкальной библиотеки. Я нашел библиотеку очень простой в использовании и хотя я только использовал ее для MP3, это, кажется, поддерживает диапазон другой музыки/форматов видео.
Похож на MediaInfo, только для чтения в этой точке, между прочим: http://sourceforge.net/forum/message.php?msg_id=4241318&abmode=1
Очень прохладный проект, все же. Это - забавное обнаружение обо всем этом интересном материале здесь на ТАК.
Я использовал взаимодействующий с COM для доступа к функциональности Детектора Медиа DirectShow.
Это действительно работает вполне прилично, но это - правильная боль в задней стороне. Необходимо знать партии о COM, win32 interop, и так далее.
Можно также использовать DirectShowNet, который должен обработать большую часть из этого для Вас, я просто не хотел тащить ту целую вещь вокруг, когда я только интересовался частью MediaDetector