• Spring学习日志二


    一、回顾  

      1.1 restful风格  GET(查找) POST(添加)  PUT(更新) DELETE(删除) 一定要使用springmvc中的过滤器,来把post提交转化为PUT,DELETE, _method:表示真正的提交方式】

      1.2 Springmvc如何进行异常处理。 1.局部  2.全局 @ControllerAdvice

      1.3 Spring框架。它就是一个容器,管理类对象的生命周期。

      1.4 IOCDI) 控制反转

        Class A中用到了Class B的对象b,一般情况下,需要在A的代码中显式的new一个B的对象。采用依赖注入技术之后,A的代码只需要定义一个私有的B对象,不需要直接new来获得这个对象,而是通过相关的容器控制程序来将B对象在外部new出来并注入到A类里的引用中

    二、Spring依赖注入的方式

      1.通过set方法

        <bean id="user1" class="com.zhiyou100.klb.bean.User">
            <!-- property:就是通过set方法来注入类的属性的值 -->
            <property name="name" value="${user.names}"></property>
            <property name="age" value="${user.age}"></property>
        </bean>

      2.通过构造方法

        <bean id="user2" class="com.zhiyou100.klb.bean.User">
            <!-- 
                constructor:构造方法的参数
                index:第几个参数,所应从零开始
                name:通过构造方法的参数名
            -->
            <constructor-arg index="0" value="${user.names}"></constructor-arg>
            <constructor-arg index="1" value="${user.age}"></constructor-arg>
        </bean>

    三、依赖注入的数据类型

      1.基本数据类型和字符串 使用value

      2.如果是指向另一个对象的引用 使用ref

      3.如果类对象注入的属性类型为list类型

      <property name="list">
                <list>
                    <bean class="com.zhiyou100.klb.bean.Student">
                        <property name="msg" value="${list.one}" ></property>
                    </bean>
                    <bean class="com.zhiyou100.klb.bean.Student">
                        <property name="msg" value="${list.two}" ></property>
                    </bean>
                    <bean class="com.zhiyou100.klb.bean.Student">
                        <property name="msg" value="${list.three}" ></property>
                    </bean>
                    <bean class="com.zhiyou100.klb.bean.Student">
                        <property name="msg" value="${list.four}" ></property>
                    </bean>
                </list>
            </property>

      4.如果类对象注入的属性类型为map类型。

        <property name="map">
                <map>
                    <entry key="key1" value="yi"></entry>
                    <entry key="key2" value="er"></entry>
                    <entry key="key3" value="san"></entry>
                </map>
            </property>

     四、bean的作用域

      Bean的作用域默认为单例模式

     五、自动注入

      <bean id="userDao" class="com.zhiyou100.klb.bean.UserDao"></bean>
        <!-- 
            autowire:自动注入的属性
            byType:根据useDao属性的类型,找与之匹配的bean
            byName:根据属性名,找与之匹配的bean的id
            no:需要手动注入
            default:采取全局的default-autowire设置
         -->
        <bean id="userServlet" class="com.zhiyou100.klb.bean.UserServlet" autowire="byType"></bean>

    六、在Spring配置文件中引入属性文件

      <context:property-placeholder file-encoding="utf-8" location="classpath:*.properties"/>
        
        <bean id="user2" class="com.zhiyou100.klb.bean.User">
            <!-- 
                constructor:构造方法的参数
                index:第几个参数,所应从零开始
                name:通过构造方法的参数名
            -->
            <constructor-arg index="0" value="${user.names}"></constructor-arg>
            <constructor-arg index="1" value="${user.age}"></constructor-arg>
        </bean>

    七、使用注解

    1. 引入jar包(aop的jar包)
    2. 配置文件中使用包扫描。
    3. 在相应的类上加上注解.

      @Repository   持久化注解。

      @Service 业务层注解

      @Controller 控制层注解

      @Autowired 自动注入 按照类型帮你自动注入,如果由多个类型相同的那么就会在按照名称注入。(建议使用这个)

      @Resouce  自动注入 按照名称注入,如果没有相同名称的bean那么会按照类型帮你注入。 它可以指定名称来注入。

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context="http://www.springframework.org/schema/context"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
    
        <!-- 包扫描:扫描 -->
        <context:component-scan base-package="com.zhiyou100.klb"></context:component-scan>
    
    </beans>
    package com.zhiyou100.klb.service;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import com.zhiyou100.klb.dao.UserDao;
    
    @Service
    public class UserServiceImp implements UserService {
    
        @Autowired
        private UserDao userDao;
    
        public void setUserDao(UserDao userDao) {
            this.userDao = userDao;
        }
        
        /* (non-Javadoc)
         * @see com.zhiyou100.klb.service.UserService#queryById(int)
         */
        @Override
        public void queryById(int id) {
            userDao.selectById(id);
        }
    }
    package com.zhiyou100.klb.dao;
    
    import org.springframework.stereotype.Repository;
    
    @Repository
    public class UserDaoImp implements UserDao {
    
        /* (non-Javadoc)
         * @see com.zhiyou100.klb.dao.UserDao#selectById(int)
         */
        @Override
        public void selectById(int id) {
            System.out.println("根据ID查询数据库数据");
        }
    }
    package com.zhiyou100.klb.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    
    import com.zhiyou100.klb.service.UserService;
    
    @Controller
    public class UserController {
        
        @Autowired
        private UserService userService;
    
        public void setUserService(UserService userService) {
            this.userService = userService;
        }
         
        public String findById(int id) {
            userService.queryById(id);
            return "update";
        }
    }
  • 相关阅读:
    用require.js封装原生js轮播图
    最全状态码
    常用DOM结构方法总结
    CSS浮动、绝对、相对定位
    盒模型
    构造函数、原型和实例的关系
    Android测试网络是否连接
    Android第一天
    JQuery图片切换动画效果
    Hibernate增删查改语句
  • 原文地址:https://www.cnblogs.com/kklb/p/11478568.html
Copyright © 2020-2023  润新知