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里的坑的更多相关文章

  1. spring cloud feign 坑

    feign是啥? 很多人可能对于feign 不是很熟悉,可以看一下其他网友的实例分享:spring cloud feign简介 如果觉得上面这个比较难的话,还有一个简单入门的:spring cplou ...

  2. spring里的事物设置

    有的人说事物在spring里设置有两种,其实事物设置在spring配置文件中共有五种方式:第一种方式:每个Bean都有一个代理第二种方式:所有Bean共享一个代理基类第三种方式:使用拦截器第四种方式: ...

  3. 记一次spring里bean无法注入的历程

    应用启动的时候失败,看了下异常,是这个---NoUniqueBeanDefinitionException. 大家都知道,这是因为有俩个类型相同的实例,在被注入的时候,spring不知道该用哪个. 但 ...

  4. Spring WebSocket踩坑指南

    Spring WebSocket踩坑指南 本次公司项目中需要在后台与安卓App间建立一个长连接,这里采用了Spring的WebSocket,协议为Stomp. 关于Stomp协议这里就不多介绍了,网上 ...

  5. 在普通Java类里使用spring里注入的service、dao等

    版权声明:本文为博主武伟峰原创文章,转载请注明地址http://blog.csdn.net/tianyaleixiaowu. 在spring管理的web项目里,譬如Struts和spring的项目,配 ...

  6. spring里面的ioc的理解?

    spring里面的ioc就是控制反转,其实现核心是DI(依赖注入),控制反转不向以前java代码里面,通过new关键字来实现创建对象,这样每段代码之间的耦合度就比较高,为了降低每个小模块之间的耦合度, ...

  7. Spring里的Ant Pattern

    Spring里的Ant Pattern用于匹配URL 可以参考官网:https://docs.spring.io/spring/docs/current/javadoc-api/org/springf ...

  8. 关于如何使用Spring里@AliasFor注解进行注解的封装

    不知道大家每次使用Spring boot的时候有没有看过它启动类里 @SpringBootApplication这个注解呢?众所周知,这个注解是一个复合注解,但是注解是不能继承元注解的属性的,也就是说 ...

  9. Spring @Transactional踩坑记

    @Transactional踩坑记 总述 ​ Spring在1.2引入@Transactional注解, 该注解的引入使得我们可以简单地通过在方法或者类上添加@Transactional注解,实现事务 ...

随机推荐

  1. 使用form提交到搜狗浏览器示例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. C# 一个网站

    http://www.aizhengli.com/aspnet-mvc5/6/aspnet-mvc5-member-user-register.html

  3. JavaScript给动态插入的元素添加事件绑定

    由于实际的需要,有时需要往网页中动态的插入HTML内容,并在插入的节点中绑定事件处理函数.我们知道,用Javascript向HTML文档中 插入内容,有两种方法, 一种是在写HTML代码写入JS,然后 ...

  4. Python内置函数(19)-slice

    官方文档 class slice(stop) class slice(start, stop[, step]) Return a slice object representing the set o ...

  5. lambda 分组后的count

    var list = stuList.GroupBy(b => b.PersonalId).Select(g => (new { personalId = g.Key, count = g ...

  6. 金蝶KIS客户端修改IP连接服务器的方法

    问题现象:服务器IP变更后,金蝶KIS客户端打开时提示多个错误,并会自动关闭,无法联网登录 1. 到下面位置修改注册表 Windows Registry Editor Version 5.00 [HK ...

  7. Codeforces Round #392 (Div. 2) - A

    题目链接:http://codeforces.com/contest/758/problem/A 题意:给定N个城市的福利,国王现在想让每个城市的福利都一致.问最少需要花多少钱使得N个城市的福利值都一 ...

  8. jmeter 参数化3_User Defined Variables(用户自定义变量)

    User Defined Variables:  一般用于Test Plan中不需要随请求迭代的参数设置,如:Host.Port Number 操作路径:Thread Group-->Add-- ...

  9. AI比医生更好地发现皮肤癌,未来计算机技术可渗透医院

    未来机器人将取代医生?这可能是事实.为什么这么多年轻人选择计算机行业,因为这是一个趋势.据法新社报道,研究人员周二称,一项计算机技术比人类皮肤科医生在检测皮肤癌方面的表现要好得多,因为这项研究是为了寻 ...

  10. HttpClient之HttpContext使用

    Multiple request sequences that represent a logically related session should be executed with the sa ...