
Spring
lichuangcsdn
这个作者很懒,什么都没留下…
展开
-
对Spring IOC和AOP的理解
Spring主要分为控制反转(IOC)和面向切面编程(AOP)1、控制反转(IOC)a.如果不使用Spring,我们一般是通过new关键字实现一个对象的初始化,比如我们如果在多个业务逻辑(Service)中要使用一个Dao对象,那么我们必须在每个业务逻辑处理类种都通过new的方式去生成Dao对象(确切的说,对象的生成是由程序员进行控制的),如下:public class ServiceA {pr...原创 2018-07-06 22:47:09 · 478 阅读 · 0 评论 -
关于spring中的BeanDefinitionRegistryPostProcessor和ImportBeanDefinitionRegistrar接口
这两个接口都可以用于动态注册bean到容器中。BeanDefinitionRegistryPostProcessor实现了BeanFactoryPostProcessor接口,是Spring框架的BeanDefinitionRegistry的后处理器,用来注册额外的BeanDefinition。postProcessBeanDefinitionRegistry方法会在所有的BeanDefini...原创 2019-05-07 22:49:21 · 6491 阅读 · 2 评论 -
创建动态代理对象bean,并动态注入到spring容器中
使用过Mybatis的同学,应该都知道,我们只需要编写mybatis对应的接口和mapper XML文件即可,并不需要手动编写mapper接口的实现。这里mybatis就用到了JDK动态代理,并且将生成的接口代理对象动态注入到Spring容器中。这里涉及到几个问题。也许有同学会有疑问,我们直接编写好类,加入@Component等注解不是可以注入了吗?或者在配置类(@Configuration)...原创 2019-04-30 00:48:19 · 37216 阅读 · 11 评论 -
java扫描包(包含自己写的包或者jar中的包)及子包下的所有类
不管是在Spring还是Mybatis中,我们都需要配置一个包路径进行扫描类对象。在Spring中,我们需要配置包路径,让Spring容器能扫描包下面的Bean组件。在mybatis中,我们需要配置mapper包路径,以扫描mapper接口,并生成对应的Bean实例。现在,我参照spring的部分源码,来写一个工具类扫描包及子包下的所有类。package com.company.ha...原创 2019-05-04 22:06:20 · 1770 阅读 · 0 评论 -
用动态代理给接口写默认实现,并手动注入到Spring容器中
我们大家都知道,mybatis的mapper接口,我们并没有手动编写实现代码,但仍然能在程序中注入到Spring容器并使用。这里面就用到了动态代理的原理。下面,我也编写一个接口,代码未给出实现,通过动态代理进行接口的默认实现,通过FactoryBean方式注入到容器中(当然,我们也可以通过在一个用@Configuration声明的配置类中,通过@Bean注解,手动编写该实例的生成过程)。下面是...原创 2019-04-15 00:15:18 · 4227 阅读 · 0 评论 -
事务和事务隔离级别,Spring事务传播和隔离级别
一、事务有四大特性,也即原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability)1、原子性即不可分割,事务要么全部被执行,要么全部不执行。如果事务的所有子事务全部提交成功,则所有的数据库操作被提交,数据库状态发生变化;如果有子事务失败,则其他子事务的数据库操作被回滚,即数据库回到事务执行前的状态,不会发生状态转换2、一...原创 2019-03-06 20:39:09 · 237 阅读 · 0 评论 -
Spring AOP 切面@Around注解的具体使用
@Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务。比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助于@Around注解来实现;再比如我们想在执行方法时动态修改参数值等类似功能的注解还有@Before等等,用到了Spring AOP切面思想,Spring AOP常用于拦截器、事务、日志、权限验...原创 2019-02-19 23:21:36 · 167542 阅读 · 22 评论 -
cxf整合Spring框架进行服务端开发,并且通过cxf生成客户端代码进行调用
1、服务端: a. 以Tomcat发布WebService服务为例,首先添加jar包,这里我使用的maven,所以添加maven依赖就好了 <dependency> <groupId>org.apache.cxf</groupId> <artifactId>c...原创 2017-09-10 11:18:23 · 2437 阅读 · 0 评论 -
cxf调用WebService时出现No operation was found with the name {http://impl.server.test.com/}helloWorld
cxf调用WebService时出现No operation was found with the name {http://impl.server.test.com/}helloWorld错误。下面提供2中解决方法一种是在服务端指定命名空间,即在服务端接口的实现类添加targetNamespace = “http://server.test.com/”;注意这里是接口的倒序,而不是实现类...原创 2017-09-10 17:33:45 · 3160 阅读 · 0 评论 -
Spring容器启动 Bean的3种初始化方式
通常我们创建一个Bean的时候,可能有这样的需求,比如我创建了一个连接数据库的Bean类,我希望在Spring容器创建的时候,就检查下是否能正常访问数据库。这时候我们可以借助于以下方式进行实现。1、如果是通过XML配置文件进行Bean的生成,我们可以在配置Bean的时候,加下init-method=“initMethod1”属性,这样在当前Bean实例化完成后,就会自动 initMethod1 。...原创 2018-07-06 22:49:51 · 5300 阅读 · 0 评论 -
spring中的RuntimeBeanReference的使用
当我们需要动态注入Bean,并给该Bean的属性注入其他Bean时,比如在Mybatis和Spring的整合中,我们需要动态注入Mapper到spring容器中,而该Mapper如果需要执行SQL语句,还需要持有SqlSessionFactory的引用。但是我们注入时,可能对应的Bean还没有准备好,这时,我们就可以使用RuntimeBeanReference,以保持对实际Bean的引用。在Spr...原创 2019-05-07 22:58:13 · 3713 阅读 · 0 评论