标签:glib 配置 poi cglib class 字符串 jdk 动态代理 调用 sage
#{}:解析为参数占位符,生成的SQL里对应的位置用?表示,值是当做字符串处理的,会加上‘‘。
使用#{}可以很大程度上防止sql注入(SQL拼接)。
${}:直接解析为相应的值。在动态生成SQL时,直接进行变量替换,不会自动加‘‘。
在动态表名和order by动态字段时,需使用${}。
#{}因为是替换成?,在初始化阶段就会生成SQL。${}是未知的,在初始化阶段不处理。
是通过JDK动态代理实现的。
IOC,控制反转(Inversion of Control),就是把对象的创建(即bean的new操作),交给Spring来实现。
DI,依赖注入(Dependency Injection),是spring IOC的具体实现,做的工作是Spring实例化bean对象后,对bean对象的属性信息进行赋值的操作。
AOP,面向切面编程(Aspect Oriented Programming),是一种编程范式,是OOP(面向对象编程)的延续,采用横向抽取机制,补充了OOP纵向继承体系无法解决的重复代码优化方式。
简单地说就是在不改变原程序的基础上为代码段增加新功能,对代码段进行增强处理。
譬如,假设有A,B有相同的逻辑,我们可以横向抽取相同的部分出来,通过AOP思想和业务串联起来,同时这是可插拔式的。
AOP思想的实现一般都是基于代理模式,给业务代码进行功能增强,将业务代码和系统代码解耦。
如果目标对象的实现类实现了接口,Spring AOP 将会采用 JDK 动态代理来生成 AOP 代理类;
如果目标对象的实现类没有实现接口,Spring AOP 将会采用 CGLIB 来生成 AOP 代理类。
增强方式:五种,分别为前置增强、后置增强、最终增强、异常增强、环绕增强。
https://www.cnblogs.com/scorpio-cat/p/12632063.html
(1)作用于属性上:
@Autowired:byType注入。
@Qualifier:对于同一接口有多个实现类时,需@Autowired+@Qualifier组合使用,byName注入。
@InJect:byType注入,可以通过@Qualifier显式指定byName注入。
@Resource:按byName注入。
(2)作用于类上
@Controller @Service @Respository @Compent:分别表示该类为控制层、业务层、持久层、比较中立的类,被Spring管理。
@ComponentScan:指定需扫描的包。
(3)作用于方法上
@Bean:一般用于导入第三方组件的类,如DataSource。
(4)AOP常用注解
作用于类上
@Aspect
作用于方法上
:
@Before:前置增强。
@After:后置增强。
@AfterRetruning:最终增强,在方法返回之前,获取返回值并进行记录操作。
@Around:环绕执行,@Before和@AfterRetruning的结合体。
@AfterThrowing:异常增强,在异常抛出前进行处理。
https://www.cnblogs.com/scorpio-cat/p/12719342.html
(1)用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
(2)DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
(3)DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法)
(4)提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作: HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息; 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等; 数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等; 数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中;
(5)Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
(6)根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
(7)ViewResolver 结合Model和View,来渲染视图;
(8)将渲染结果返回给客户端。
标签:glib 配置 poi cglib class 字符串 jdk 动态代理 调用 sage
原文地址:https://www.cnblogs.com/scorpio-cat/p/12818869.html