javaweb学习路线 测试 dao出错

作为一名做 Web 开发的 Java 工程师,算法在工作中基本不怎么用到,但为什么面试总会问算法的问题?
我工作也有四五个年头了,个人觉得算法在工作中基本不怎么用到,也可能是因为我工作内容的原因,我主要做web开发,请问大家对这个问题怎么看?
按投票排序
公司刚招了两个人,一个搞图像处理,一个搞音频处理的。而我现在在公司搞搞界面。。。。薪资差距可想而知。你可能用不到,但也仅能这样了。
关于这个问题,我很想告诉lz一个残酷、有趣而又有些玄妙的事实。告诉你算法没用的人,很多都是拿着高薪,并且懂一定算法的。告诉你算法是cs科学的灵魂的人,未必是这方面的大牛。你去问算法牛人,算法有多重要,他们多半会强调算法只是理论,工程性才重要。但如果你去问一个工程做的比较深,算法学的比较浅的哥们,他们很多会说算法NB才是真正NB。(也不排除有些2方面都不算很懂,但喜欢站队发表自己观点的)这种答案究竟是出于什么情感?说不太清,多半是对于自己不熟悉的领域有所敬畏。对于自己熟悉的东西比较谦虚。但看到这类回答的时候,你需要多分析一下他们的答案。
Web 开发啊?不如我问你一个很简单的问题啊。现在大家用 JavaScript 都讲求模块化,例如 AMD、CMD 之类的。假设网站上要用到的功能都是 JavaScript 模块,它们的依赖关系也是已知的,页面对这些模块的依赖关系也是已知的,例如页面 X 需要模块 A、B,页面 Y 需要模块 B、C。我们也知道通常网站在发布时会把非常多的 JavaScript 源文件打包成少数几个文件,这样可以减少对每一个源文件独立请求一次的开销,但又能保证几个文件能够并行下载。简化的问题是这样子的:假设只考虑上面提到的页面 X 和 Y,模块 A、B、C,请问该如何打包?说得直白点,应该分两个打包 [A, B] 和 [B, C] 还是就一个打包 [A, B, C]?假设我们已知页面 X 和 Y 的流量,也有数据能够表明多少访问页面 X 的用户会点击打开 Y 的链接,或者是反向。假设我们也有 TCP/HTTP 性能开销的数据。如何计算以便作出判断?真实存在的问题其实是这样子的:对于好像 Facebook 这样复杂的网站,如此之多的页面和模块以及如此复杂的依赖关系,如何打包模块才能使得用户在下载 JavaScript 文件资源时的时间开销尽可能小?Facebook 是有专门一套概率模型来解决这个问题的,感兴趣的话可以自行搜索 Velocity 相关视频。你只看着你手头上的问题和工具,当然说不需要扩充工具包了,因为你没想过要去解决更大的问题。你要敢去想象那些看起来无法解决的问题,然后才知道自己缺了什么。
作为一名面试官,我很少面试语言的细节,这些都是可以通过看书或者手册学习到的。我比较喜欢看应聘者解决问题的能力。原文太长,就不贴出来了。。很多毕业生都把计算机学成了文科,他们不是在学习理论知识,而是被动接受/背诵记忆这些知识。他们来公司,编程只是他们的工作而已,聘用他们的真正目的是解决问题,用程序解决很多人共性的问题。我面试时,他们可以使用任何工具甚至Google,当然,我出的题目一般都不能直接个Google到,虽然网上没有现成的答案,但是可以总结出答案。我的观点是,如果你的任何问题都可以用Google直接解决,你不可能成为一名特别优秀的程序员。你搜索到的是数据,即使你保存在了evernote,说白了就是01串,你阅读了,思考了,这些数据就变成了信息,101 编程了 int a = 4; 你再继续思考,使用,深化,这些信息就变成了知识。 你会说:『哦,这不是李氏代换原则吗?』最后重申一下:学历代表过去,能力代表现在,学习能力代表将来
怎么说呢。你看google也招web程序员吧,facebook也招web程序员吧,那他们难道就不面试算法吗?他们为什么要面试算法,难道仅仅是为了减少candidate人数?人家系统那么大,谁知道哪个环节会出性能问题,那个时候你如果只会web,还不如干掉两个你换一个更牛逼的做事情比你快三倍的人而且还不用花你两倍的钱。你们千万不要想【卧槽我去的又不是facebook】。其实你们颠倒了因果关系,你应该说【所以我才去不了facebook】。
眼界问题啊,你知道了才可能会去用。
普通公司面试算法不是因为工作需要,而是为了筛掉脑袋不灵光,学习能力差的人。一般也就搞搞排序,遍历之类最基础的。比如最烂大街的冒泡排序,即使你忘了n年前学得东西,也应该能根据“冒泡”“排序”的字面意思现场写出一段思路正确的程序来。如果写不出来,真的有理由怀疑脑袋不太灵光。比如你收到某公司的面试邀请,网上一搜发现这个公司喜欢面算法,临阵抱佛一晚上把数据结构和算法过一遍。好了,差距出来了,一个晚上,有的人能把20来个最重要的算法重新理解记住,第二天应对自如,有的人则根本想不到这样做,或者抱了一晚佛脚仍然稀里糊涂,面试时脑袋一片空白。这里体现了积极主动性,对公司的兴趣程度,心理素质,快速学习能力,记忆力。有的时候职位不怎么需要算法而面试官出比较深得算法题,这是装逼,或者面试官也不知道怎么出题,网上随便搜几道题对付,这种公司不去也罢。而google,facebook这个级别的公司,要得是最聪明的人,工作中要能解决挑战性的新问题。搞定动态规划红黑树这些中等难度算法题只是最基本挑战。
到今天为止,其实还有很多人没有理信息解科技的发展一日千里。其实20年前,问这些问题是很靠谱的,因为当年电脑的知识就只是这些,学校和行业并没有脱节,公司想知道的只有两件事:一、你在学校里面有没有学习;二、你这个人够不够聪明。但信息行业经过这20多年的发展,学校和行业已经脱节,行业里面最顶尖的人物因为收入关系,并没有意愿回学校教书的。所以很多人在面试的时候眼光仍然停在了学校教育上面。所以我每次出去面试以前,都会花大概三个月时间准备一下,把以前学校里面的算法复习一遍,写一下算法的代码,有些代码确实平时不写,要从头写出来 是肯定不记得了。但是我如果碰到全都考算法的面试,就算过了,我可能也会不去了,因为我觉得这样的组是有问题的,居然问不出实质的问题来。我上一次一轮面试大概是在三年前,面试了谷歌、苹果、推特和Netflix。基本上这些公司多数人已经都不会停留在问算法上面了,一般来说总会有一两个人问些算法(如果碰到问算法问得太多的人,我会直接问该面试人员为什么要找我这样的人来面试,找一些新毕业的学生不是更熟悉算法吗)。但好的面试总是会问设计问题的,比如谷歌问了我一题如何把一段javascript object改写成Java的问题(关键在于javascript是dynamic typed,但Java是strong typed)、如何写一个iterator(design pattern,以及Java的固有API要熟悉)、如何为gmail节省存图像的空间(完全是个设计问题)、以及如果维护一个高效的load balancer(一半设计、一半算法),这轮面试很有意思,因为在各个公司的面试中,最"恶名昭著"的谷歌给了我最少的算法问题,并且问题都让我很喜欢,所以我对谷歌的印象比以前更好了。这一轮面试最恶劣一个的面试其实是我来的苹果,当时分几天来了好几个组面试,地图组问了我整整八小时的算法问题,让我顿时觉得这帮人地图是做不好的(当时地图还没有发布,我熟悉这个行业因为我以前的公司是做导航的),所以最后我接的offer不是地图组的,我现在这个组问了我不少大数据的设计问题(虽然不怎么着调,因为明显经验不够),但是团队的诚意让我产生了很多好感,事实也证明在这个团队合作比较愉快(so far so good)。基于我的个人经验,我的看法是,对一个有多年经验的信息科技工作人员,如果面试公司的问题多数只是算法问题,你应该忽略这样的公司,因为这其实是暴露出了这个公司的运营管理上对软件工程不熟悉,也没有意愿在这方面作提升,对从业人员的能力范围没有宏观透视,请几百个一拍脑袋写3000行代码的程序员,效率是很低的。但好的面试至少也应该有一到两个人问一些算法问题,这样可以测试你知识的全面性,你作为一个Java的程序员,虽然很多算法是已经写好了,但你应该对使用哪一个的理由是什么应该非常熟悉,这类问题还是应该有一些的,好的面试有算法问题、有宏观的设计问题、有程序的设计问题和有团队合作的问题,有这么多问题的集合的团队比较靠谱。
我总结为:大多数公司的技术面试官都不是专职面试官,除了面试,他还有很多研发工作要做。我们可以换位思考一下:答题费时间、费脑子,出题难道不费时间、不费脑力吗?算法题都是前辈们花了多少心血总结出来的题目并且有很多标准答案在那里,挑一挑总比自己重新设计新题目要省力省心吧?工程师何苦为难工程师,程序猿何必刁难程序媛。面试者不容易,面试官也不是那么好当的,特别是大家基本都是兼职面试官的情况下。哦对了,工程师面试前狂背算法题的过程就和我当年学数学分析准备这门课程的考试时,苦背《吉米多维奇数学分析习题集解》一样一样的。想不想过?想过就去死记硬背吧。
找一名做WEB开发的JAVA男性工程师来说,你会发现,丁丁在他的生活中很少用到,但是如果他没有丁丁就很难找到女盆友。
Web开发用算法的场景相对于图像处理这些领域确实少,但不代表用不到,就算现在有很多现成的封装可以让你调用,但高并发大数据的场景下,还是需要你对算法有深刻的理解才能得到更优的性能。殊途同归,无论什么领域精耕下去都会触及到计算机的底层和实现原理,所以楼主说的有点偏颇。至于面试官为什么会问算法,可能是出于工作需要,但最终还是会到关注工作主要的技术上。但是有时候面试官在简历上确实没有亮点的情况下,最后只能问数据结构了这些了。
这个应该这么解释。某公司招驾驶员,面试需要B1的驾照,但是目前只需要让你开小车,然后,谁也不知道,什么时候让你开大车呢?
在某手机公司工作,在功能机上做软件开发。个人觉得算法是程序员唯一的直接为公司创造价值的工具。设想一下你改进了算法,让以前无法实用的算法能够进入实际应用,或者在低端硬件上实现了同高端硬件一样的运行速度,或者节约了大量的服务器。这些都是能够直接为公司带来价值的。而不是你做了一个多么好看的界面或者按照业务流程对数据库增删查改。
学习算法实际只是学习一种思维方式,或者说学习一种眼界,就如排名第一的答主回答的,没学过算法的人,遇到这样的问题的时候,根本就不会想到可以利用概率模型来实行最优配置。这样的问题其实有很多很多很多很多,一般的工程师都知道函数调用需要压栈,压栈需要时间,如何分块一个大项目可以将效率和可读性或者可扩展性取得一个平衡?这其实也是一个算法问题。
吐糟下有些公司装逼的厉害,明明招的是初级程序员,却要问一些 垃圾回收机制,新生代旧生代,然后什么常量池的。。。。还有很多死记硬背的题目,就是不考解决问题的思路,方法。。欢迎折叠
我的经验是,算法对工作不重要,但对找工作很重要。我算法和数据结构不行,这让我错过了很多机会。还好安卓给了我机会,用户不在乎什么算法,他们只关心自己需求。如果你能够自己设计开发测试推广运营维护一款成功的产品,算法算老几呢?
1. 你迟早会遇到用if-else搞不定的问题,或者即使搞定了看上去也是一团糟。2. 没有人一辈子做Web &Java,多学点东西是有好处的3. 觉得web&java用不到算法,多半因为你对算法不熟悉,你不知道该怎么用。
说个最近碰到的情况吧 有个需求是用户每天上传10W条数据 然后跟数据库里面200W条数据做对比 上传这一部分没什么好说的 鉴于server上不能装excel所以只能用openxml读excel然后sqlbulkinsert到数据库 但是在做数据对比的时候就需要有基本的算法思想了 一般的思维就是循环两个表 嵌套循环的时间复杂度是N*M 考虑到这个数据量这么做对比估计用户能等死 这个时候就考虑用哈希表 重写相关方法(GetHashCode,Equles) 然后直接取两个的交集,补集, 基本上也就是一眨眼功夫就搞完了 时间复杂度为线性(通过重写GetHashCode可以确保哈希值不会重复)这只是个一个人月都不到的小项目熟练掌握基本数据结构和基本算法 就是为了跳出只有if else, for, while这些东西 给程序更多的可能
因为不会 所以永远用不到。因为用不到,所以永远不会。无解。泪。
如果不是想看看你的逻辑思维能力问这种问题除了装逼和网上抄题目之外没有多大意义。开始时间: 09:25:00 共需查询:716条 HTTP/1.1 200 OK
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.&init&(Unknown Source)
at java.net.URL.&init&(Unknown Source)
at java.net.URL.&init&(Unknown Source)
at org.cyberneko.html.HTMLScanner.setInputSource(HTMLScanner.java:860)
at org.cyberneko.html.HTMLConfiguration.setInputSource(HTMLConfiguration.java:478)
at org.cyberneko.html.HTMLConfiguration.parse(HTMLConfiguration.java:451)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at com.rensanning.M1Job.getHiddenValue(M1Job.java:215)
at com.rensanning.M1Job.execute(M1Job.java:78)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
public class BaseServelet extends HttpServlet {
public void init() throws ServletException {&&
super.init();
M1Job.ROOT_PATH = getServletContext().getRealPath("/");
System.out.println(M1Job.ROOT_PATH);
System.out.println(M1Job.ROOT_PATH+"html");
File file = new File(M1Job.ROOT_PATH+"html");
if (!file.exists()) {
file.mkdirs();
}
__startJob();&&
}
private void __startJob() {
try {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
//每天7点钟扫描一次
String sconf1m = "0 25 9 * * ?";
M1Job m1job = new M1Job();
JobDetail job1m = new JobDetail("job1m", "group1m", m1job.getClass());
CronTrigger trigger1m = new CronTrigger("trigger1m", "group1m", "job1m", "group1m", sconf1m);
sched.addJob(job1m, true);
sched.scheduleJob(trigger1m);
sched.start();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class M1Job implements Job {
public static String ROOT_PATH = "";
private static final String HTML_TACK_HTML = "html\\tack.html";
private static final String HTML_DETAIL_HTML = "html\\detail.html";
private static String url1 = "/WebTracking/track?HTMLVersion=5.0&loc=zh_CN&Requester=UPSHome&WBPM_lid=homepage%2Fct1.html_pnl_trk&trackNums=#TRACK_NUM#&track.x=%E8%BF%BD%E8%B8%AA";&
private static String url2 = "/WebTracking/detail";&
public final void execute(JobExecutionContext context)
throws JobExecutionException {
System.out.println("开始时间:"+getCurrentTime());
UpsDao upsdao = new UpsDao();
TdmxDao tddao = new TdmxDao();&&
List&Tdmx& listtd = tddao.searchTdmx();&&
for(int i=0; i&listtd.size();i++){&&
Tdmx td = listtd.get(i);&&
System.out.println("共需查询:"+listtd.size()+"条");
String url1new = url1.replace("#TRACK_NUM#", td.getBl1().trim()); //URL替换的运单参数
String jbno = td.getJbno(); //工作编号&&
//如果upstrac表有相对记录,先执行删除
if(upsdao.DeleteUpstrace(jbno)&0)
{
upsdao.DeleteUpstrace(jbno);
}&&
//抓取追踪信息页面HTML&&
getHtml(url1new, ROOT_PATH+HTML_TACK_HTML, null);&&
//获取 抓取运输进程页面HTML时 需要的参数&&
Map&String, String& data = getHiddenValue(ROOT_PATH+HTML_TACK_HTML);&&
if (data.get("trackNums") == null) {
//抓取运输进程页面HTML&&
getHtml(url2, ROOT_PATH+HTML_DETAIL_HTML, data);&&
//获取运输进程&&
List&DetailBean& list = getDetailList(ROOT_PATH+HTML_DETAIL_HTML);&&
//打印详细的运输进程&&
DetailBean bean =&&
System.out.println("地点" + "\t" + "日期" + "\t" + "当地时间" + "\t" + "处理");&&
for (int j = 0; j & list.size(); j++) {&&
bean = list.get(j);&&
System.out.println(bean.getLocation() + "\t" + bean.getDate() + "\t" + bean.getTime() + "\t" + bean.getOperation());&&
DetailBean db = new DetailBean();&&
db.setJbno(jbno);
db.setBl1(data.get("trackNums"));&&
db.setLocation(bean.getLocation());&&
String str =bean.getDate()+" "+bean.getTime();&&
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");&&
Date date = sdf.parse(str);&&
java.sql.Timestamp sqlDate = new java.sql.Timestamp(date.getTime());&&
db.setDate1(sqlDate);&&
db.setOperation(bean.getOperation());&&
upsdao.AddUpstrace(db);&&
String[] trackinfo = getTrackInfo(ROOT_PATH+HTML_TACK_HTML);
Tdmx uptd = new Tdmx();
String str = trackinfo[0];
String[] strs = str.split("[:]");
String strj = trackinfo[1];
String[] strjs = strj.split("[:]");
uptd.setBlagent(strs[1].replaceAll("/^&$/", ""));
uptd.setSjage(strjs[1]);
uptd.setBl1(data.get("trackNums"));
if(trackinfo[1]==null)
{
System.out.println("没有签收人,未执行更新");
}
System.out.println(strs[1].replaceAll("/^&$/", "")+"运送日期");
System.out.println(strjs[1]+"签收人");
tddao.UpdateTdmx(uptd);
System.out.println("执行更新");
System.out.println("结束时间:"+getCurrentTime());
} catch (Exception e) {&&
e.printStackTrace();&&
private static List&DetailBean& getDetailList(String html) throws Exception {
List&DetailBean& list = new ArrayList&DetailBean&();
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();
Node tb = XPathAPI.selectSingleNode(node, "//TABLE[@class='dataTable']");
if (tb == null) {
NodeList tdlist = XPathAPI.selectNodeList(tb, "//TR/TD");
int line = 0;
while (line & tdlist.getLength() / 4) {
DetailBean bean = new DetailBean();
bean.setLocation(deleteSpace(tdlist.item(line * 4 + 0).getTextContent()));
bean.setDate(deleteSpace(tdlist.item(line * 4 + 1).getTextContent()));
bean.setTime(deleteSpace(tdlist.item(line * 4 + 2).getTextContent()));
bean.setOperation(deleteSpace(tdlist.item(line * 4 + 3).getTextContent()));
list.add(bean);
}
private static String removeSpace(String in) {
char[] charArray = in.toCharArray();&&
for (int i = 0; i & charArray. i++) {
if (charArray[i] == (char)160) {
charArray[i] = (char)32;
}
}
return new String(charArray);
}
private static String[] getTrackInfo(String html) throws Exception {&&
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();&&
NodeList dllist = XPathAPI.selectNodeList(node, "//DL");&&
String[] result = new String[5];&&
//--运送日期
result[0] = removeSpace(deleteSpace(dllist.item(2).getTextContent()));
// result[0] = deleteSpace(dllist.item(2).getTextContent());
//--签收人
if(dllist.getLength() == {
result[1] = deleteSpace(dllist.item(4).getTextContent());
} else {
result[1] = deleteSpace(dllist.item(3).getTextContent());
}&&
}
private static Map&String, String& getHiddenValue(String html) throws Exception {
Map&String, String& data = new HashMap&String, String&();
List&String& params = new ArrayList&String&();
params.add("loc".toLowerCase());
params.add("USER_HISTORY_LIST".toLowerCase());
params.add("progressIsLoaded".toLowerCase());
params.add("refresh_sii".toLowerCase());
params.add("showSpPkgProg1".toLowerCase());
params.add("datakey".toLowerCase());
params.add("HIDDEN_FIELD_SESSION".toLowerCase());
params.add("trackNums".toLowerCase());
DOMParser parser = new DOMParser();
parser.parse(html.replaceAll("/", "\\\\"));
Node node = parser.getDocument();
NodeList nodeList = XPathAPI.selectNodeList(node, "//INPUT");
for (int i = 0; i & nodeList.getLength(); i++) {
Element e = (Element) nodeList.item(i);
if ("hidden".equalsIgnoreCase(e.getAttribute("type"))
&& params.contains(e.getAttribute("name").toLowerCase())) {
data.put(e.getAttribute("name"), e.getAttribute("value"));
}
}
System.out.println("运单编号:" + data.get("trackNums"));
不知道到底哪里错了 求解决
配置里面的路径问题吧。。。
看看有没有中文,然后c:\\是不是写成了c://之类的
已解决问题
未解决问题Javaweb 测试 dao出错_百度知道
把错误信息帖上来,这个不是错误信息。
控制台没有错误
其他类似问题
为您推荐:
其他1条回答
CustomerDaoImpl这个类第三十九行你去看看。报错误都已经提示你了。
javaweb的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁当前访客身份:游客 [
当前位置:
这两天一直在搞SpringMVC、Spring3,MyBatis整合,在过程中,启动Tomcat7时有一个问题一直出现,
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.share.persistence.mybatis.mapper.UserMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:920)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:789)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:474)
... 69 more
软件环境:Spring 3.1.1、MyBatis 3.1.1、MyBatis-Spring 1.1.1 、Maven构建
Spring 相关配置如下:
&context:annotation-config/&
&context:property-placeholder location=&classpath:jdbc.properties& /&
&!-- 配置DataSource数据源 --&
&bean id=&dataSource& class=&org.springframework.jdbc.datasource.DriverManagerDataSource&&
&property name=&driverClassName& value=&com.mysql.jdbc.Driver&/&
&property name=&url& value=&jdbc:mysql://localhost:3306/test&/&
&property name=&username& value=&root&/&
&property name=&password& value=&root&/&
&bean id=&transactionManager& class=&org.springframework.jdbc.datasource.DataSourceTransactionManager&&
&property name=&dataSource& ref=&dataSource& /&
&bean id=&sqlSessionFactory& class=&org.mybatis.spring.SqlSessionFactoryBean&&
&property name=&dataSource& ref=&dataSource& /&
&property name=&typeAliasesPackage& value=&com.share.persistence.domain& /&
&!-- scan for mappers and let them be autowired --&
&bean class=&org.mybatis.spring.mapper.MapperScannerConfigurer&&
&property name=&basePackage& value=&com.share.persistence.mybatis.mapper& /&
&/bean& Dao层的代码:
public class SampleDaoImpl implements SampleDao {
@Autowired
private UserMapper userM
public void queryUsers() {
// TODO Auto-generated method stub
System.err.println( & querying users... & );
} 奇怪的是,我自己写了java 方法,直接调用applicationContext.xml,反而能取到userMapper对象。
测试SpringMyBatisInvokeTestCase代码:
public class SpringMyBatisInvokeTestCase {
public static void main(String[] args) {
System.out.println( &Hello &);
ApplicationContext ac = new ClassPathXmlApplicationContext(&spring/applicationContext.xml&);
UserMapper sd = (UserMapper)ac.getBean(&userMapper&);
sd.queryUsers();
这里面我个人感觉是不是Web启动中,Dao层使用注解注入userMapper的时候,Spring还没有初始化好userMapp接口对应的Bean对象啊?
望大家指教。搞了很久。。。真心不懂为什么?
共有7个答案
<span class="a_vote_num" id="a_vote_num_
应该跟配置文件有关 把配置文件发出来看看
<span class="a_vote_num" id="a_vote_num_
大哥,测试里面没有web环境。。。
<span class="a_vote_num" id="a_vote_num_
Showcase里面有mybatis的演示
<span class="a_vote_num" id="a_vote_num_
引用来自“Cray”的答案
应该跟配置文件有关 把配置文件发出来看看
您说的没错,我后来又重新搞了一遍,发现classpath后的配置文件位置写错了。
&servlet-name&springMVC&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&!--Be careful of the spingmvc folder
spring/springMVC.xml is classpath*:*/springMVC.xml
springMVC.xml
is classpath*:springMVC.xml
&init-param&
&description&SpringContext&/description&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:*/applicationContext.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springMVC&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:*/springMVC.xml&/param-value&
&/context-param&
&servlet-name&springMVC&/servlet-name&
&servlet-class&org.springframework.web.servlet.DispatcherServlet&/servlet-class&
&!--Be careful of the spingmvc folder
spring/springMVC.xml is classpath*:*/springMVC.xml
springMVC.xml
is classpath*:springMVC.xml
&init-param&
&description&SpringContext&/description&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:*/springMVC.xml&/param-value&
&/init-param&
&load-on-startup&1&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&springMVC&/servlet-name&
&url-pattern&/&/url-pattern&
&/servlet-mapping&
&listener&
&listener-class&org.springframework.web.context.ContextLoaderListener&/listener-class&
&/listener&
&context-param&
&param-name&contextConfigLocation&/param-name&
&param-value&classpath*:*/applicationContext.xml&/param-value&
&/context-param& 汗。。。这个错误。。。
<span class="a_vote_num" id="a_vote_num_
解决没 &大哥...求一份整合好的代码!!!
我也不会整合这几个!!!
邮箱yidongnan
<span class="a_vote_num" id="a_vote_num_
<span class="a_vote_num" id="a_vote_num_
我也遇到了同样的问题,但是我已经解决了:
expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.annotation.Resource(shareable=true, mappedName=, description=, name=, type=class java.lang.Object, authenticationType=CONTAINER, lookup=)}
看了看源码,@Resource依赖于name和type。默认name.都有时name。出现bean&不唯一要么是dao层没有&extends HibernateDaoSupport或者@Repository(&XXX&)注解,要么是没有接口有两个或以上的实现但是没有@Service注解或者是@Service注解超过两个
有什么技术问题吗?

我要回帖

更多关于 javaweb压力测试 的文章

 

随机推荐