学习笔记

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>元素还会自动注册

 

 

 

 

 

 

 

posted @ 2019-11-25 18:49  Amber-  阅读(192)  评论(0编辑  收藏  举报