spring的部分配置

这个是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"/>

```

猜你喜欢

转载自www.cnblogs.com/lxx-1843693653/p/10921652.html