1,aop
    暂时只介绍注解模式的aop,日志案例
    第一种

    1. @Aspect
    2. public class Log {
    3. //在方法里指定调用位置,然后execution指定具体执行哪个方法时候执行
    4. @Before("execution(* com.xkcoding.properties.dao.UserServiceImp.getUser(..))")
    5. public void before(){
    6. System.out.println("-----方法执行前------");
    7. }
    8. }
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    5. <bean id="userDAOImp" name="userDAOImp" class="com.xkcoding.properties.dao.UserDAOImp"></bean>
    6. <!-- constructor-arg 构造方法来配置资源-->
    7. <bean id="UserServiceImp" name="userServiceImp" class="com.xkcoding.properties.dao.UserServiceImp" scope="singleton" autowire="byName">
    8. <!-- <property name="userDAO" ref="userDAOImp"></property>-->
    9. </bean>
    10. <bean id="Log" class="com.xkcoding.properties.proxy.Log"></bean>
    11. //自动注入
    12. <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
    13. </beans>

    第二种
    在beans里面通过xml宏观管理组件的方式

    1. <aop:config>
    2. <aop:aspect ref="Log">
    3. //第一个*是返回值
    4. <aop:pointcut id="pointcut" expression="execution(* com.xkcoding.properties.dao.UserServiceImp.getUser(..))"/>
    5. <aop:before method="before" pointcut-ref="pointcut"/>
    6. </aop:aspect>
    7. </aop:config>
    1. 2mybatisxml注入,一步步利用容器创建想要的实例<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/750718/1599722930735-16628fbd-163d-4557-807e-9355146c3911.png#align=left&display=inline&height=383&margin=%5Bobject%20Object%5D&name=image.png&originHeight=383&originWidth=849&size=403634&status=done&style=none&width=849)<br />2, bean的缓存<br />[https://zhuanlan.zhihu.com/p/186212601](https://zhuanlan.zhihu.com/p/186212601)<br />在