• 学习笔记


    1、缓存Mybatis:

    a.一级缓存:(本地缓存),与数据库同一次会话期间查询的数据库会放在本地缓存中,以后需要获取相同的数据,直接从缓存中拿,没必要再去查数据库,也称为sqlsession级别的缓存,一级缓存是一直开启的。

    b.一级缓存有实效的情况(也就是没有使用到当前一级缓存的情况,效果就是还需要再想数据库发出查询):1.sqlsession变了,2.sqlsession相同,查询条件不同(当前一级缓存中还没有这个数据),3.两次查询之间执行了增删改查数据操作。

    c.二级缓存:(全面缓存),基于namespace级别的缓存,一个namespace对应一个二级缓存,正常机制:1.1个会话,查询一条数据,这个数据就会被放在当前的缓存里面。

    2.如果会话关闭,一级缓存中内容会被保存到二级缓存中,新的会话查询信息。3.sqlsession==EmployeeMapper==Employee   departmentMapper==DepartMent

    注意:只要第一次查询的都是一级缓存,当缓存关闭后会保存在二级缓存中。

    和缓存有关的设置/属性:acheEnabled=true/false;false是关闭缓存。

    2、mybatis-spring整合

    springMvc其实是spring的一个web模块,可以去spring管网下载spring的jar包

    3、插件:利用插件为我们的目标对象产生动态代理,目标对象的目标方法要执行的时候都会来到代理对象的方法        

    4、mybatis的分页插件PageHelper,可以去gitHub上面搜

    5、Alt+/自动补全

    6、New-----other-----spring下面对应的springBean Configuration File-----写配置文件XXX.xml;想要spring的ioc容器和web工程一起启动,要加上contextloaderlistener-contextloaderlistener

    7、spring是一个开源框架,spring为简化企业级应用开发而生,使用spring可以使简单的JaveBean实现只有EJB才能实现的功能,spring是一个IOC控制反转(DI依赖注入)和AOP容器框架

    有代码:ApplicationContext ctx=new ClassPathXmlApplicationContext("XXX.xml"); HelloWorld helloworld=(HelloWorld类名)ctx.getbean("helloWorld"); helloworld.hello();

    (ApplicationContext代表的是IOC容器,ClassPathXmlApplicationContext代表的是接口实现类,该实现类从类路径下来加载配置文件)

    (第一步创建IOC容器后会调用构造器,也就是构造函数,会对配置文件里面的内容进行初始化并且赋值)

    (第二步从IOC容器中获取Bean实体)

    (第三步调用hello方法)

    8、Spring的属性注入:是通过setter方法注入Bean的

         构造方法注入:构造器注入在<conStructor-arg>元素里声明属性,使用构造器注入属性值可以指定参数的位置index和参数的类型type,以区分重载的构造器,例如:

    <bean id="类名"  class="类路径">

      <constructor-arg value="Baoma" type="java.lang.string"></constructor-arg>

      <constructor-arg type="int">

        <value>250</value>

      </construcor-arg>

    </bean>

    属性值也可以使用value直接进行配置。

    也可以使用ref="id的名字也就是<property name="car类名">找到内容

    null值和级联属性

    <constructor-arg ref="car"></constructor-arg>

    <constructor-arg><null></constructor-arg>

    相当于把car里面值都赋为null;

    9、为级联属性赋值。spring框架的属性需要先初始化后才可以为级联属性赋值,否则会有异常,而struct2框架可以自动创建级联属性

    <constructor-arg ref="car"><constructor-arg>

    <property name="car.maxspeed' value="250"></property>

    以上的是对car类里面的属性赋值为250;

    如果是集合属性该如何赋值呐?

    <property name="properties">

    <!--使用props和prop子节点来为Properties属性赋值-->

    <props>

            <prop key="user">root</prop>

            <prop key="password">123</prop>

            <prop key="jdbcURL">jdbc:mysql://test</prop>

            <prop key="driverclass">com.mysql.jdbc.Driver</prop>

    </props>

    </property>

    未完待续。。。。。。

    1、使用Bean的scope属性来配置bean的作用域,singleton:默认值,容器初始时创建bean实例,在整个容器的生命周期内只创建这一个bean,他是单例的

         prototype:原型的容器,初始化时创建bean实例,而在每次请求时都创建一个新的bean实例并返回。

    使用外部属性文件

          可以使用BeanFactory后置处理器,这个处理器允许用户将Bean配置的部分内容外移到属性文件里,可以在Bean配置文件里使用形式为${Var}的变量

    2、 SPEL:一般引用Bean,属性和方法,下面还有其他情况

         1)、引用其他对象:通过value属性和SPEL配置Bean之间的应用关系

               <Property name="prefix" value="#{prefixGenerator}"></property>

         2)、引用其他对象的属性

               SPEL:调用静态方法或静态属性,通过T()调用一个类的静态方法,他将返回一个Class Obese,然后再调用相应的方法或属性;

              <property name="initValue" 

                                           value="{T(java.lang.Math).PI}"></property>

    3、New-----Class-----Name:起名字,同时在这里有一个Add可以添加想要的接口

    4、通过静态工厂方法来配置bean,注意不是配置静态工厂实法实例,而是配置bean实例

         class属性:指向静态工厂方法的全类名

         factory-method:指向静态工厂方法的名字

         factory-arg:如果工厂方法需要传入参数,则使用配置参数

    <!--通过实例工厂方法来配置bean-->

    factory-bean属性:指向实例工厂方法的全类名

    factory-method:指向静态工厂方法的名字

    factory-arg:如果工厂方法需要传入参数,则使用他来配置参数

    5、配置bean如何来配置

    1).通过工厂方法(静态工厂方法或者实例工厂方法)

    2).FactoryBean方法:

    <bean id="car" class="com.XXX.XXX">

    <property name="brand" value="BMW"></property>

    </bean>

    6、在classPath中扫描组件

    <context:component-scan>:方法

    例如:<context:component-scan:

               base-package="属性指定一个需要扫描的基类包,spring容器将会扫描这个基类包以及其子包里面所有的类"

              resource-pattern="希望扫描特定的类而非基包下的所有类,过滤特定的类,例如:

    <context:component-scan:

    base-package="com.atguigu.spring.beans"

    resource-pattern="autowire/*.class"/>

     7、<context:include-filter>子节点表示要包含的目标类

    <context:exclude-filter>子节点表示要排除在外的目标类

    组件装配<context:component-scan>元素还会自动注册

  • 相关阅读:
    Function overloading and return type
    Function overloading and const keyword
    Function Overloading in C++
    web安全测试相关内容(三)
    web安全测试相关内容(二)
    web安全测试相关内容(一)
    CDNDrive 第一个版本发布 & 布客新知第二次备份完成
    PyTorch 1.4 中文文档校对活动正式启动 | ApacheCN
    布客&#183;ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.2
    计算机电子书 2019 BiliDrive 备份
  • 原文地址:https://www.cnblogs.com/almm/p/11929568.html
Copyright © 2020-2023  润新知