<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
正常情況下,spring整合mybatis的組態檔的dataSource部分如下
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/ssm"></property> <property name="username" value="root"></property> <property name="password" value="123456"></property> </bean>
可以將資料庫的連結資訊寫到屬性檔案中,如下。
jdbc.url=jdbc:mysql://localhost:3306/ssm jdbc.driver=com.mysql.jdbc.Driver jdbc.username=root jdbc.password=123456
在spring組態檔中,就可以用${}的形式獲取屬性資訊,但需要加入 <context:property-placeholder />標籤設定屬性檔案的路徑。即
<context:property-placeholder location="classpath:db.properties"/> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"/> </bean>
但是由此會引發另一個問題,自動載入的優先順序特別高(就是先範例化)
若org.mybatis.spring.SqlSessionFactoryBean的id為sqlSessionFactory,當自動注入時,org.mybatis.spring.mapper.MapperScannerConfigurer類下的SqlSessionFactory屬性會自動注入,然後org.mybatis.spring.SqlSessionFactoryBean也會範例化,而org.mybatis.spring.SqlSessionFactoryBean中含有dateSourse,所以org.springframework.jdbc.datasource.DriverManagerDataSource也會範例化,但是這時屬性檔案還沒有載入,造成程式出錯Error setting property values,總而言之就是在屬性檔案載入之前,類範例化了,結果得不到屬性檔案中的值。
解決辦法
第1步,更改org.mybatis.spring.SqlSessionFactoryBean的id名稱,例如factory
第2步,將org.mybatis.spring.mapper.MapperScannerConfigurer中加入<property name="sqlSessionFactoryBeanName" value="factory"></property>,如果用<property name="sqlSessionFactory/>標籤同樣出現以上的問題。
因為自動注入隻影響ref的,而sqlSessionFactoryBeanName的值的型別時string,用value賦值,所以不受影響
以下是完整的spring整合mybatis的組態檔
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" default-autowire="byName"> <context:property-placeholder location="classpath:db.properties"/> <!-- 資料來源封裝類,資料來源:獲取資料庫連線,spring-jdbc.jar中 --> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${jdbc.driver}"></property> <property name="url" value="${jdbc.url}"></property> <property name="username" value="${jdbc.username}"></property> <property name="password" value="${jdbc.password}"/> </bean> <!-- 建立SqlSessionFactory物件 --> <bean id="factory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 資料庫連線資訊來源於dataSource --> <!-- <property name="dataSource" ref="dataSource"></property> --> <!-- 相當於mybatis中別名預設包 --> <property name="typeAliasesPackage" value="com.lee.pojo"></property> </bean> <!-- 掃描器相當於mybatis設定介面繫結時xml的mappers下的package標籤 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 掃描哪個包 --> <property name="basePackage" value="com.lee.mapper"></property> <!-- 和factory產生關係 --> <property name="sqlSessionFactoryBeanName" value="factory"></property> </bean> </beans>
使用註解方法時,需要新增標籤,這裡的包名指的是含有註解的類所在包
<context:component-scan base-package="com.lee.service.impl"></context:component-scan>
測試的properties
my.value=hello
測試類
public class Demo{ @Value("${my.value}") private String test; }
這樣就可以範例化Demo時給test注入值
先建立上下文物件servletcontext,再載入監聽器,然後去載入攔截器,最後載入servlet
路徑問題:Spring MVC靜態資源攔截(No mapping found for HTTP request with URI in DispatcherServlet with name ’ ')問題
/ 是載入檢視設定的目錄下的檔案,前提是webapp下沒有預設檔案;如果有檔案就存取預設檔案
/* 我的測試是都報404
啟動先載入web.xml(包含:載入applicationContext.xml、listener:contextloadlistener、:DispatcherServlet),通過applicationContext.xml載入介面及java實現類、載入config.properties檔案、載入資料庫驅動等、載入mybatis.config檔案(SqlSessionFactoryBean:載入xml檔案)、載入資料庫的介面和mapper.xml、載入springmvc檢視等。
要保證install後mapper.java、mapper.xml要在同一檔案下
如果用EL表示式(ModelAndView)時表示式出現問題解決如下:(搜尋:SpringMVC中JSP頁面不顯示EL表示式的原因)
提高web.xml最上面dtd的版本
在jsp頁面新增<%@ page isELIgnored=“false” %> ,新增head裡就行
名稱空間
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45