Spring里的坑
Spring里的坑
1. 配置文件配置controller,在Controller中使用注解配置的bean,会出现获取不到bean的情况
步骤一:使用在配置文件 springmvc.xml 中配置的方式配置controller
<bean name="login.action" class="com.orderonline.controller.admin.LoginController"></bean>
步骤二:在controller中获取 Automired 自动注入的bean
public class LoginController implements Controller{
@Autowired
private UserService userService;
@Override
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
System.out.println(userService); //这个将会打印 null
ModelAndView mav = new ModelAndView();
mav.setViewName("/admin/success.jsp");
return mav;
}
}
总结:要么都使用配置文件的方式配置bean,要么都使用注解的方式。
2. web.xml文件中的<welcome-file>配置springmvc的action
<welcome-file-list>
<!-- 访问项目的时候,如果不加具体的页面地址,默认访问的页面 -->
<welcome-file>index.action</welcome-file>
</welcome-file-list>
问题:
<welcome-file> 里面配置一个html页面或者jsp页面都没有问题,但是如果配置一个action就会出现访问不到的情况。 解决方法:
新建一个与action同名的 空文件。例如我这里的 action 是 index.action,Action代码如下:
@Controller
public class IndexController { @Autowired
private IndexService indexService; @RequestMapping("/index.action")
public ModelAndView initPage(){
ModelAndView mav = new ModelAndView();
// ... ...
mav.setViewName("/WEB-INF/index.jsp");
return mav;
} }
那我就要在webapp下新建一个 index.action 文件,如下图:

3. Spring不引入 commons-logging.jar,报错:java.lang.NoClassDefFoundError: Lorg/apache/commons/logging/Log;
在使用Spring的时候,如果不导入 commons-logging.jar 就会报错;提示导入这个jar包。但是疑惑的是,我的项目中没有使用到这个jar包啊。
那么就只能是一个原因了。既然我们自己没有使用这个jar包的日志功能,那么就一定是Spring使用了这个jar包的日志功能。
所以当我们使用Spring的时候,我们的项目也就依赖commons-logging.jar了。 Spring依赖Commons-loggin.jar的原因:
我们都知道,使用了Spring的项目在添加日志打印功能的时候,只需要很简单的几个配置,就能把第三方的日志打印框架整合进来,例如强大的Log4j。(这里不讲Log4j的导入)。
那么为什么Spring对这些第三方日志打印框架有这么好的整合呢?
原因就是,给这些第三方日志框架提供了日志打印接口。而Spring实现这些日志打印接口的方法就是通过Commons-loggin.jar实现的。
Commons-loggin.jar的目的是为“所有的Java日志实现”提供一个统一的接口,它自身的日志功能平常弱,所以一般不会单独使用它。
在这里可以类比于JDBC的API接口:java提供操作数据库的接口,而操作数据库的驱动和api的实现由各个数据库的厂商来做。开发者只需要调用java的api即可,不用管各个数据库访问的实现。
Spring里的坑的更多相关文章
- spring cloud feign 坑
feign是啥? 很多人可能对于feign 不是很熟悉,可以看一下其他网友的实例分享:spring cloud feign简介 如果觉得上面这个比较难的话,还有一个简单入门的:spring cplou ...
- spring里的事物设置
有的人说事物在spring里设置有两种,其实事物设置在spring配置文件中共有五种方式:第一种方式:每个Bean都有一个代理第二种方式:所有Bean共享一个代理基类第三种方式:使用拦截器第四种方式: ...
- 记一次spring里bean无法注入的历程
应用启动的时候失败,看了下异常,是这个---NoUniqueBeanDefinitionException. 大家都知道,这是因为有俩个类型相同的实例,在被注入的时候,spring不知道该用哪个. 但 ...
- Spring WebSocket踩坑指南
Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...
- 在普通Java类里使用spring里注入的service、dao等
版权声明:本文为博主武伟峰原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu. 在spring管理的web项目里,譬如Struts和spring的项目,配 ...
- spring里面的ioc的理解?
spring里面的ioc就是控制反转,其实现核心是DI(依赖注入),控制反转不向以前java代码里面,通过new关键字来实现创建对象,这样每段代码之间的耦合度就比较高,为了降低每个小模块之间的耦合度, ...
- Spring里的Ant Pattern
Spring里的Ant Pattern用于匹配URL 可以参考官网:https://docs.spring.io/spring/docs/current/javadoc-api/org/springf ...
- 关于如何使用Spring里@AliasFor注解进行注解的封装
不知道大家每次使用Spring boot的时候有没有看过它启动类里 @SpringBootApplication这个注解呢?众所周知,这个注解是一个复合注解,但是注解是不能继承元注解的属性的,也就是说 ...
- Spring @Transactional踩坑记
@Transactional踩坑记 总述 Spring在1.2引入@Transactional注解, 该注解的引入使得我们可以简单地通过在方法或者类上添加@Transactional注解,实现事务 ...
随机推荐
- 使用网易云web 版外部链接
右击打开控制台,找到音乐列表 ——> 点开详情 -------> 生成外部链接器 ,如: outchain/0/3073492173 ,这是每一个音乐的编号. 然后拼接上它的官网域名 ...
- rpmgraph - 显示 RPM 软件包依赖关系图
SYNOPSIS rpmgraph PACKAGE_FILE ... DESCRIPTION rpmgraph 使用 PACKAGE_FILE 参数来产生一个软件包依赖关系图.每个 PACKAGE_F ...
- EAN13条码的校验位的Excel算法
校验位原公式: 单元格=10-RIGHT(SUM(MID($B3,{1;2;3;4;5;6;7;8;9;10;11;12},1)*{1;3;1;3;1;3;1;3;1;3;1;3})) 简化公式: 单 ...
- Linux命令(干货)
@ vim 编辑快捷键 ctrl + n 是自动补齐 ctrl + p 是往上选择 ctrl + f 是下一屏幕 ctrl + b 是上一屏幕 w:是移动一个单词 b:是向前一个单词 d^:当前行中, ...
- 初学Java 九九乘法表
public class MultiplicationTable { public static void main(String[] args) { System.out.println(" ...
- egrep 或 多个连续字符测数字
.TXT 4-6是ABC 或者 4-6是 0-9
- linux学习-常用文本处理命令
1.文本处理命令 (1) tr 转换或删除字符 tr [OPTION]...SET1 SET2 选项: -c 取SET1字符串的补集 -d 删除属于SET1中的字符 -s 把连续重复出现的字符以单独一 ...
- Android SDK的下载与安装*(PC版)
Android SDK的下载与安装 一.Android SDK简介下载地址:https://www.androiddevtools.cn/ 将下载后的安装包解压到相应的目录下,如下图: 三.安装A ...
- codeforces 848A - From Y to Y(构造)
原题链接:http://codeforces.com/problemset/problem/848/A 题意:让我们构造一个字符串.这里有一种操作:取走这个字符串的若干部分,分成两部分,然后将这两部分 ...
- 【SPOJ8222】Substrings (后缀自动机)
题意: 给一个字符串S,令F(x)表示S的所有长度为x的子串中,出现次数的最大值. 求F(1)..F(Length(S)) Length(S) <= 250000 思路:板子中st[x]定义为r ...