美文网首页
MY_Java_成长笔记

MY_Java_成长笔记

作者: _Weak | 来源:发表于2017-01-05 09:21 被阅读21次

    异常日志

    1. proxy: no session
      懒加载错误 四种 解决方法: 1. 用一下 2. 强迫对象初始化 3. 关闭lazy="false" 4. openSessionInView
    1. org.springframework.validation.BeanPropertyBindingResult
      JavaBean属性类型不匹配

    Spring 框架 ------ 程序员的春天

    为什么要使用AOP?

    实现程序中的关注点代码与业务代码分离
    关注点代码: 重复的代码
    AOP变成的实现: JDK代理 或者 cglib代理
    程序中的"事物控制"重复代码, 可以用AOP实现! 即只需要写一次, 运行时候动态注入业务方法上.

    事物的管理

    Jdbc技术: DataSourceTrancscationManager
    Hibernate技术: HibernateTrancecationManager

    编程式事务管理

    jdbc代码:
    Conn.setAutoCommit(false); //设置手动控制事物
    hibernate代码:
    session.beginTransaction; //开启一个事物
    [细粒度事物控制, 可以对指定的方法, 指定的方法的某几行添加事物控制]
    (比较灵活, 但开发起来比较繁琐, 每次都要开启, 提交, 回滚)

    Spring 提供了声明式事务管理

    Spring提供了对事物的控制的实现, 用户如果想用Spring的声明式事务管理, 只需要在配置文件中配置即可, 不想使用时直接移除配置. 这个实现了对控制的最大程度的解耦
    Spring声明式事务管理, 核心实现就是基于Aop
    粗力度的事物控制: 只能给整个方法应用事物, 不可以对方法的某几行应用事物

    c3p0连接池, 编码方式实现, 方便理解xml配置

    @Repository
    @Resource
    @Transactional
    
    // 1. 硬编码方式实现连接池
        @Test
        public void testDbcp() throws Exception {
            // DBCP连接池核心类
            BasicDataSource dataSouce = new BasicDataSource();
            // 连接池参数配置:初始化连接数、最大连接数 / 连接字符串、驱动、用户、密码
            dataSouce.setUrl("jdbc:mysql:///jdbc_demo");            //数据库连接字符串
            dataSouce.setDriverClassName("com.mysql.jdbc.Driver");  //数据库驱动
            dataSouce.setUsername("root");                          //数据库连接用户
            dataSouce.setPassword("root");                          //数据库连接密码
            dataSouce.setInitialSize(3);  // 初始化连接
            dataSouce.setMaxActive(6);    // 最大连接
            dataSouce.setMaxIdle(3000);   // 最大空闲时间
            
            // 获取连接
            Connection con = dataSouce.getConnection();
            con.prepareStatement("delete from admin where id=3").executeUpdate();
            // 关闭
            con.close();
        }
    

    Springmvc

    Springmvc工作流:

    1. request(请求)
    2. Handler Mapping(映射器BeanNameUrlHandlerMapping)
    3. Controller(适配器SimpleServletHandlerAdapter)
    4. ModelAndView(Action)
    5. ViewResolver(视图解析器InternalResourceViewResolver)
    6. view(视图)
    springmvc工作流.png

    SpringMVC配置自定义格式处理器 如:处理日期时间

    /**
         * 自定义类型转换器, 将String->Date类型(格式yyyy-MM-dd) short full long 中间 default
         */
        @Override
        protected void initBinder(HttpServletRequest request,
                ServletRequestDataBinder binder) throws Exception {
            //向SpringMvc内部注册一个自定义的类型转化器
            //参数一:将String转换成什么类型的字节码
            //参数二:属性编辑器,自定义转换规则
            binder.registerCustomEditor(
                    Date.class,
                    new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));//true 可以为空
            }
    

    相关文章

      网友评论

          本文标题:MY_Java_成长笔记

          本文链接:https://www.haomeiwen.com/subject/ktaavttx.html