121.Springz中,根據實現類找不到bean。
UserImpl implements User{
}
XmlWebApplicationContext context;
context.getBean(User.class);√
context.getBean(UserImpl.class);獲取不到
沒有使用Cgilib庫!
--------貌似也不行------------
由於spring的bean都是作了包裹的。因此你用 ServiceImpl 創建了一個bean,實際上他是新建了一個相似於 ServiceImplWrapper的繼承 Service的接口的類來封裝的,這樣才能作到AOP的效果。
因此新建的Bean,其實是Spring新建的那個類型的,而不是ServiceImpl類型。所以只能用 Service接口尋找。
但若是使用cglib的話,包裹類是直接繼承ServiceImpl的,所以就能夠找到了。
--------------------
按照類型找bean好像有專門的配置。 先看看文檔吧。--------------------
綜上所述,目前沒有找到緣由。css
122.SpringMVC 使用實體類User{Date date}不能接收「2013-7-24」這樣的日期,
類型轉換會失敗。只能使用String接收,手動進行類型轉換。前端
像 2013-09-31 這種字符串 把它parse爲日期的時候,parse成 2013-10-01比較好,仍是拋異常比較好?
simpledateformat 會將它parse成2013-10-01java
public static Date parseDate(String date) {
if(StringUtils.isEmpty(date)){
return null;
}
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-HH");
Date d = null;
try {
d = format.parse(date);
} catch (ParseException e) {
e.printStackTrace();
}
return d;
}mysql
123.
按名稱搜索,須要使用 like '%aa%',而aa是Mybatis動態得到的。linux
##不對
<select id="searchBrand" parameterType="string" resultType="Integer">
select id from organization where englishName like '%#{agencyName}%'
and orgTypeId = 50004
</select>
##官方例子,bind不識別,多是 Mybatis新增的
<select id="selectBlogsLike" parameterType="Blog" resultType="Blog">
<bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
SELECT * FROM BLOG
WHERE title LIKE #{pattern}
</select>web
只能在Java中設置了,agencyName="%"+agencyName+"%";spring
124.界面自適應寬度
大屏幕,普通筆記本 sql
3個大屏幕合成1個超級大的「虛屛」數據庫
125.ssh 配置
我想經過Windows的Putty,配置ssh key來訪問遠程主機,沒有配好。
最後,實在Linux下配了個,而後訪問的。json
126. 防火牆
Java經過 http鏈接 linux C++程序,失敗。
防火牆 屏蔽了 端口。
127. 上傳圖片
我在使用阿里雲上傳,圖片的時候,老是上傳失敗,提示"失敗信息"。
連續2天都這樣,我想阿里雲的網站不可能一直出問題,因此我懷疑本身的圖片出問題了。
通過分析和判斷,最終發現 圖片太大,有2M。
這讓我想到Struts2和Spring中配置上傳文件的最大值。
128. 日誌性能
程序運行時,打印日誌會下降程序的性能麼?
把日誌級別設置爲error,info,debug,trace,對程序的性能有影響麼?
打印日誌太多了必然會下降性能啊
由於打印日誌是IO操做,因此寫程序時必定要注意好是 info仍是debug。
線上運行的通常都是info。
129. 讀取Excel文件
個人筆記本和公司的Linux服務器,讀取1個具備8個sheet的Excel文件,須要6到11s。
而公司的1個項目,須要下載這種報表,後臺數據計算就須要5到10s,客戶要求總共時間在10s。
因此,只能提升前端的效率。
最終的解決方法:在系統初始化時,預先建立N個Workbook對象,緩衝起來。
啓動1個定時器,檢查Workbook對象個數,當達到最低值時,就再建立若干個,達到最大值。
有2點說明:
1.該項目的併發量很小,只要求20個,因此預先建立N個對象,是夠用的。
空間換時間,在這種狀況下是可行的。
2.Workbook對象,每用1個,就須要刪掉。裏面的數據已經變了,不能再次使用了。
130.SpringMVC使用 Map和實體類接收參數 各有千秋。
實體類編寫比較繁瑣,好處是 接收到參數後,類型已經轉換成功了。
131.SpringMVC 處理全局異常。
@Component(提示:須要掃描這個異常所在的包)
public class OurException implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
}
也能夠經過在xml文件中註冊bean。
<bean class="××.exception.OurException"> </bean>
http://fuliang.iteye.com/blog/947191
132.嚴格按照順序 構造SQL語句。
select
from
where
group by
having
order by
limit
133.mysql字符串比較時,不區分大小寫
binary char,能夠區分大小寫
或者設置數據庫的collate。
create database FansUnion default character set utf8 collate utf8_general_ci
SELECT * FROM User WHERE loginName = #{loginName} COLLATE utf8_bin
134.檢驗一個名字等是否重複時,須要排除自身這個實體。
好比有個叫 name的用戶,修改name的時候,須要檢驗數據庫是否存在重名,
這個時候應該排除name這個用戶。
135.DateFormat setLenient
以前都沒注意過有這麼個方法,不然判斷日期格式就太不靠譜了。
又是晦澀的單詞:setLenient(false),嚴格匹配日期格式
136.json轉換
JSON字符串轉換object錯誤:MorphDynaBean cannot be cast to com.softright.bean.TestBean,類中有集合類型的屬性 由於JSONObject.toBean()把JSON字符串轉換爲一個本身定義的類,當其中屬性有相似List , Map ,ArrayList的時候,麻煩就來了。
錯誤:MorphDynaBean cannot be cast to com.softright.bean.TestBean
解決方法:
在JSONObject.toBean的時候
若是轉換的類中有集合,能夠先定義Map<String, Class> classMap = new HashMap<String, Class>();
在classMap中put你要轉換的類中的集合名,像:classMap.put("data", StoDataInfo.class);
固然也能夠put一個集合類("data",Map.class)
而後在toBean()的時候把參數加上, 像:ShenTongInfo stInfo=(ShenTongInfo) JSONObject.toBean(o, ShenTongInfo.class, classMap);
http://www.111cn.net/jsp/Jsp-Servlet/41930.htm
137.Mybatis 原樣輸出${status} string類型的參數,會報 no getter方法,換成Map就沒問題。
138.Spring解析${jdbc.driverClass}失敗。
Could not load driverClass ${jdbc.driverClass} java.lang.ClassNotFoundException: ${jdbc.driverClass}
在spring裏使用org.mybatis.spring.mapper.MapperScannerConfigurer 進行自動掃描的時候,設置了sqlSessionFactory 的話,可能會致使PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}這樣之類的表達式,將沒法獲取到properties文件裏的內容。 致使這一緣由是由於,MapperScannerConigurer實際是在解析加載bean定義階段的,這個時候要是設置sqlSessionFactory的話,會致使提早初始化一些類,這個時候,PropertyPlaceholderConfigurer還沒來得及替換定義中的變量,致使把表達式看成字符串複製了。 但若是不設置sqlSessionFactory 屬性的話,就必需要保證sessionFactory在spring中名稱必定要是sqlSessionFactory ,不然就沒法自動注入。又或者直接定義 MapperFactoryBean ,再或者放棄自動代理接口方式。
解決方法:Spring升級到3.1.1,Mybatis升級到3.1.1,mybatis-spring插件升級到1.1.1
使用"sqlSessionFactoryBeanName"而非"sqlSessionFactory"
<bean name="mapperScannerConfigurer_aa" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- <property name="sqlSessionFactory" ref="sqlSessionFactory_aa"/> -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory_aa"/>
<property name="basePackage" value="..." />
<property name="markerInterface" value="..." />
</bean>
http://www.oschina.net/question/188964_32305
139.縮小filter的過濾範圍。
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
/**
* 縮窄OpenSessionInViewFilter的過濾範圍,請求css、js、圖片等靜態內容時不建立Session鏈接.
* 在web.xml中可配置excludeSuffixs參數,多個後綴名以','分割.
*
*/
140.SpringMVC Controller方法接收Web請求參數。
使用@RequestParam這個註解。
讓人意外的是:Integer和User等實體類,能夠不使用這個註解。
而用Map接收參數時,必須使用@RequestParam這個註解。
默認使用@RequestParam Integer id,沒有接收到id,會報錯。
@RequestParam(required=false)表示id參數是可選的。
相關閱讀
工做問題 http://blog.csdn.net/FansUnion/article/category/1334371