这个是Spring的配置
配置可以自动扫描下面这个包中的注解
例如: @Controller @Service @Repository @Component 这四个注解
一个类该是哪层的bean就是用哪个注解来配置.
controller层: Controller
service层: Service
dao层: Repository
如果一个bean不属于上述三层中的任意一个, 那么就使用Component注解.
这个四个注解都可以注解到类上 -->
下面的这个配置实际上就是在扫描被上面的注解所注解的类 ,把这些类直接配置为bean
例
写你要扫描的包
<context:component-scan base-package="com.lanou.demo"/>
是SpringMVC的配置
这个注解直接开启了@RequestMapping的HandlerMapping和HandlerAdapter
例:
<mvc:annotation-driven/>
配置拦截器
<mvc:interceptors>
<mvc:interceptor>
<!--配置哪些地址需要走拦截器, 这个配置可以同时写多个-->
<!--
例:
/book/create
/book/delete
/book/update
/book/list
-->
<mvc:mapping path="/book/*"/>
<mvc:mapping path="/category/*"/>
<!--排除哪些地址-->
<mvc:exclude-mapping path="/book/list"/>
<mvc:exclude-mapping path="/category/view"/>
<!--配置上面的地址映射会走哪个拦截器-->
<ref bean="testInterceptor"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/login.do"/>
<mvc:exclude-mapping path="/category/view"/>
<ref bean="permissionInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
``
配置视图解析
例:
</bean>
webapp目录下的静态资源会使用默认的Servlet来处理
否则静态资源也会走Controller,就会出现找不到的情况
配置可以根据注解自动加切面的功能
第一种:在xml中只写这个,在实体类中写剩下的
第二种:在xml中直接写全
<aop:config>
<aop:pointcut id="service" expression="execution(* com.lanou.demo.service.impl.*.*(..))"/>
<aop:aspect ref="logAspect" order="1">
<aop:before method="before" pointcut-ref="service"/>
</aop:aspect>
</aop:config>
为对象赋值
默认情况下,由Spring 容器中创建的都是单例模式,
也就是说,不论容器中取出几次,取出的都是一个对象
例:
<!--如果修改此行为,那么需要为该bean设置一个scope属性,值为prototype
这样的话,每次从容器中取出的对象都是单独的-->
<bean class="co.lanou.bean.BookBean" id="book1" scope="prototype"/>
<!--初建一个对象的同时,把该对象的属性进行赋值-->
<!--能赋值的属性的前提,是该属性有setter方法,或者该属性是public的-->
<bean class="co.lanou.bean.BookBean" id="book2">
<property name="bookId" value="1"/>
<property name="bookName" value="aaaa"/>
<property name="price" value="99"/>
</bean>
<!--通过构造方法给对象里面的属性赋值-->
<bean class="co.lanou.bean.BookBean" id="book3">
<!--为构造方法中的bookId这个参数复制为2-->
<constructor-arg name="bookId" value="2"/>
<constructor-arg name="bookName" value="西游记"/>
<constructor-arg name="price" value="88"/>
</bean>
<bean class="co.lanou.bean.BookBean" id="book4">
<!--为对象中的集合类型的属性赋值-->
<property name="fzb">
<list>
<value>李忠仁</value>
<value>麻辣小龙虾</value>
<value>郭敬明</value>
</list>
</property>
</bean>
<!--为对象中的Map的属性赋值 第一种 方式-->
<bean class="co.lanou.bean.BookBean" id="book5">
<!--为对象中的Map的属性赋值 第一种 方式-->
<property name="fieds">
<map>
<entry key="1" value="陈鑫源的诞生"/>
<entry key="2" value="陈鑫源的灭亡"/>
</map>
</property>
</bean>
<!--为对象中的Map的属性赋值 第二种 方式-->
<bean class="co.lanou.bean.BookBean" id="book6">
<!--为对象中的Map的属性赋值 第二种 方式-->
<property name="fieds">
<props>
<prop key="1">陈鑫源的复活</prop>
<prop key="1">陈鑫源的崛起</prop>
</props>
</property>
<!--在一个Bean中引用另一个bean对象,使用ref赋值-->
<property name="categoryBean" ref="category1"/>
</bean>
<!--给分类对象赋值-->
<bean class="co.lanou.bean.CategoryBean" id="category1">
<property name="cid" value="1"/>
<property name="cname" value="武侠"/>
</bean>
<bean class="co.lanou.bean.CategoryBean" id="category2">
<property name="cid" value="2"/>
<property name="cname" value="玄幻"/>
</bean>
配置处理器,映射器 HandlerMapping
他的作用
根据前端请求地址(url)来找处理器(Handler)
处理器(Handler)是用来处理用户发送过来的请求
<!--这个处理器映射是根据Handler的bean的名字(也就是id)来进行映射的-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--简单url映射 按映bean名字来进行映射-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!-- key 访问地址 value用的映射器-->
<prop key="/book/1">/book1</prop>
<prop key="/book/2">/book1</prop>
<prop key="/order">orderServlet</prop>
<prop key="/user">userHandler</prop>
</props>
</property>
</bean>
<!--根据处理器定义的请求进行映射-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
处理器适配器 HandlerAdapter
不同的适配器用来处理不同的 Handle
handler可能是什么
1.可能是Controller实现的接口-> BookController
2.可能是被RequestMapping所注解的方法 -> CategoryController中的list和create
3.可能是一个Servlet
4.可能是HttpRequestHandler的实现类
<!--处理Controller实现类型的handler-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--处理的是RequestMapping注解形式的handler-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--处理HttpRequestHandler实现类类型的handler-->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
```
原文:https://www.cnblogs.com/lxx-1843693653/p/10921652.html