springmvc通过xml启动组件扫描
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc通过xml启动组件扫描相关的知识,希望对你有一定的参考价值。
参考技术A #新建一个接口:#实现类:
#第一种方式:注解启用组件扫描
#测试文件:
#测试结果:
#第二种:通过xml启用组件扫描
##第二种方式的时候就出现问题了:
前面都是相同的步骤:
首先在web.xml中这样写:
#第二种方式:通过xml组件扫描的方式
注:spring-mvc.xml这个配置文件是写在resources目录下config下的.
然后测试:
因为书上没有说明,所以我只能自己摸索
第一种:
运行结果:
然后再去网上查各种资料,始络没有得到解决.这就是小白的烦恼
然后突然一下,灵光一闪就看到了篇博客解决了我的问题:https://www.cnblogs.com/usual2013blog/p/4051056.html这是他的地址.有兴趣的可以看看.
也许在别人看来是小问题,而对于我这种菜鸡来说就是大问题,能解决这个问题也是一种进步.
Spring基于注解及SpringMVC
1.使用注解
(1)组件扫描
指定一个包路径,Spring会自动扫描该包
及其子包所有组件类,当发现组件类定义前有
特定的注解标记时,就将该组件纳入到Spring
容器。等价于原有XML配置中的<bean>定义功能。
组件扫描可以替代大量XML配置的<bean>定义。
(2)如何使用
step1,在配置文件当中,添加
<context:component-scan base-package=""/>
让容器扫描指定的包及其子包下面的类。
step2,在类前面添加
@Component
注1:
默认情况下,bean的id是首字母小写之后
的类名,如果想重新命名id,可以使用
@Component()形式。
注2:
@Repository:用于持久层组件
@Service:用于业务层组件
@Controller:用于控制器组件
(3)生命周期相关的几个标注
@PostConstruct 初始化方法
@PreDestroy 销毁方法
(4)作用域
@Scope("prototype")
注: 缺省值是"singleton"
(5)延迟加载(了解)
@Lazy(true)
注: 缺省值是false。
在默认情况下,容器启动之后,会将所有
作用域为"singleton"的bean实例化。
如果延迟加载,则不会将这些bean
实例化。
(6)依赖注入相关的几个标注
@Autowired和@Qualifier
@Autowired可以用于构造器注入,
也可以用于set方式注入。
1)构造器注入
a. @Autowired加在构造器前面。
b. @Qualifier加在参数前面,用于
指定要注入的bean的id。
注:
注入的对象单例时,@Qualifier可省略。
此时,Spring按照类型匹配参数。
2)set方式注入
[email protected]加在set方法前面。
b. @Qualifier加在参数前面,用于
指定要注入的bean的id。
注:
注入的对象单例时,@Qualifier可省略。
此时,Spring按照类型匹配参数。
[email protected]也可以直接添加到属性前面,
此时,可以不写set方法。
@Resource
a.该标注只支持set方式注入
b.可以将该标注加到set方法前面,
name属性用于指定要注入的bean的id。
c.该标注也可以直接添加到属性前,
此时,可以不写set方法。
(7)使用spring表达式的标注
@Value
用法一
@Value("#{spring表达式}")
用法二
@Value("基本类型的值")
注:
@Value可以用在属性前,也可以用
在set方法前面。
2.spring mvc
(1)spring mvc简介
是一个mvc框架,简化基于mvc架构的
web应用的开发。
注:
a.不再需要写控制器了,spring mvc
提供了一通用的控制器。
b.可以将java类将交spring容器来管理,
方便解耦。
c.提供了很多有用的jsp标签。
(2)五大组件
a.DispatcherServlet(前端控制器):
接受请求,将请求分发给相应的
Controller来处理。
b.HandlerMapping
告诉DispatcherServlet,请求地址
与Controller的对应关系。
c.Controller(二级控制器)
负责处理业务逻辑。
d.ModelAndView
封装了处理结果和视图名。
e.ViewResolver(视图解析器)
依据视图名,返回真正的页面的名称。
注:
请求先发送给DispatcherServlet,
DispatcherServlet依据HanlderMapping
的指示,调用对应的Controller来处理。
Controller将处理结果封装成ModelAndView
并返回给DispatcherServle。
DispatcherServlet调用ViewResolver,
ViewResolver依据视图名返回真正的页面
的名称给DispatcherServlet。
最后,DispatcherServlet会调用真正的
页面(通常是jsp)。
(3)编程步骤
step1,将spring mvc相关的jar文件添加到
WEB-INF\lib下。
step2,添加spring的配置文件(
springmvc.xml)。
step3,配置DispatcherServlet(web.xml)
注:
DispatcherServlet的初始化方法在
执行时,会启动spring容器。
step4,Controller
step5,jsp
step6,完成springmvc.xml配置。
以上是关于springmvc通过xml启动组件扫描的主要内容,如果未能解决你的问题,请参考以下文章
spring mvc初次启动没啥问题,可启动并且使用,但重启服务后,扫描hbm文件卡住的现象项目就启动不了
Spring 通过注解定义Bean以及自动扫描注解定义的bean ComponentScan 自动扫描组件&指定扫描规则