При настройке mybatis весной вам необходимо загрузить несколько связанных файлов конфигурации mybatis.xml, соответствующий мапперу mybatis, обычно помещается в другие пакеты jar.файл mybatis-conf обычно находится в текущем проекте, поэтому он также ведет к сегодняшней встрече На вопрос, в чем разница между classpath* и classpath?
Плохая конфигурация и замеченные исключения
-
Конфигурация в файле конфигурации выглядит нормально
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSourceM"/> <property name="mapperLocations" value="classpath*:/mappings/*.xml"/> <property name="configLocation" value="classpath*:/spring/mybatis-config.xml"></property> </bean>
-
Исключение после запуска сервера
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/classpath*:/spring/mybatis-config.xml] at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358) at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624) ... 61 more
-
Анализировать исключения и решать проблемы
Как видно из приведенного выше исключения, файл явно не найден, но почему?
Как вы можете видеть из исключения, путь, который ищет Spring:
然而这个路径根本不是我们想要的路径,显然是找错了地方。
但是我们配置文件给出的路径是:``` classpath*:/spring/mybatis-config.xml
Мы немного изменим следующую конфигурацию в файле конфигурации, удалим * после пути к классам
<property name="configLocation" value="classpath*:/spring/mybatis-config.xml"></property>
Измените его на:
<property name="configLocation" value="classpath*:/spring/mybatis-config.xml"></property>
После этого запуск проходит нормально, об ошибках не сообщается, и проблема решена. Некоторые студенты здесь могут сказать, почему<property name="mapperLocations" value="classpath*:/mappings/*.xml"/>
Можно использоватьclasspath*
Шерстяная ткань? См. ниже причины
Разница между classpath* и classpath:
-
classpath*
Он просматривает все пути к классам, чтобы найти все подходящие файлы, включая файлы конфигурации в файлах jar, от которых зависит текущий проект. иclasspath
Он не будет искать файлы jar, от которых зависит текущий проект. -
classpath* имеет проблемы с переносимостью, когда вы сталкиваетесь с проблемами, вы должны использовать classpath.
-
В общем, нам вообще не нужно использовать путь к классам*, просто используйте путь к классам напрямую.
Дополнительный
Арендодатель построил колесо. LIGHTCONF — это платформа управления конфигурацией, основанная на Netty. Ее основная цель — «предоставить унифицированную услугу управления конфигурацией для бизнеса», которую можно использовать «из коробки».