![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
文章平均质量分 88
忆亦何为
这个作者很懒,什么都没留下…
展开
-
(十九)Spring中的八大模式
Spring 中配置 DataSource 的时候,这些dataSource可能是各种不同类型的,比如不同的数据库:Oracle、SQL Server、MySQL等,也可能是不同的数据源:比如apache 提供的org.apache.commons.dbcp.BasicDataSource、spring提供的org.springframework.jndi.JndiObjectFactoryBean等。策略模式是行为性模式,调用不同的方法,适应行为的变化 ,强调父类的调用子类的特性。原创 2022-11-29 17:08:32 · 372 阅读 · 0 评论 -
(十八)Spring6集成MyBatis3.5
放在类的根路径下,有些系统级配置spring配置文件没办法完成,可以在mybatis核心配置文件配置,例如懒加载等。一定要注意,创建这个目录。并且要和Mapper接口包对应上。接口叫做AccountMapper,配置文件必须是AccountMapper.xml。事务管理器DataSourceTransactionManager:注入数据源。这里只开启日志,其他配置到spring.xml中。Mapper扫描配置器:指定扫描的包。启用事务注解:注入事务管理器。数据库数据:转账成功。原创 2022-11-28 16:14:47 · 655 阅读 · 1 评论 -
(十七)Spring6整合JUnit
我们发现每次单元测试都要new一个ApplicationContext,并且根据getBean获取bean,这显然代码重复,没有得到复用。在JUnit5当中,可以使用Spring提供的以下两个注解,标注到单元测试类上,这样在类当中就可以使用@Autowired注解了。依赖:spring context依赖、spring对junit的支持相关依赖、junit4依赖、junit5依赖。在单元测试类上使用这两个注解之后,在单元测试类中的属性上可以使用@Autowired。spring6里程碑版本的仓库。原创 2022-11-27 13:57:29 · 431 阅读 · 0 评论 -
(十六)Spring对事务的支持
在一个业务流程当中,通常需要多条DML(insert deleteupdate)语句共同联合才能完成,这多条DML语句必须同时成功,或者同时失败,这样才能保证数据的安全。多条DML要么同时成功,要么同时失败,这叫做事务。事务:Transaction(tx)第一步:开启事务 (start transaction)第二步:执行核心业务代码第三步:提交事务(如果核心业务处理过程中没有出现异常)(commit transaction)原创 2022-11-26 22:58:45 · 773 阅读 · 0 评论 -
(十五)Spring之面向切面编程AOP
一般一个系统当中都会有一些系统服务,例如:日志、事务管理、安全等。交叉业务这些交叉业务几乎是通用的,不管你是做银行账户转账,还是删除用户数据。日志、事务管理、安全,这些都是需要做的。第一:交叉业务代码在多个业务流程中反复出现,显然这个交叉业务代码没有得到复用。并且修改这些交叉业务代码的话,需要修改多处。第二:程序员无法专注核心业务代码的编写,在编写核心业务代码的同时还需要处理这些交叉业务。使用AOP可以很轻松的解决以上问题。原创 2022-11-25 21:33:34 · 607 阅读 · 0 评论 -
(十四)Spring之回顾代理模式
在CGLIB当中不是InvocationHandler接口,是方法拦截器接口:MethodInterceptor。CGLIB既可以代理接口,又可以代理类。所以被代理的目标类不能使用final修饰。在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。intercept有一个目标对象的值,所以这个类不需要依赖目标对象了。这个对象是CGLIB库当中的核心对象,需要依靠它来生成代理类。实现的不是invoke方法了,是intercept方法。methodProxy:代理方法。原创 2022-11-24 16:39:48 · 408 阅读 · 0 评论 -
(十三)Spring之JdbcTemplate
JdbcTemplate是Spring提供的一个JDBC模板类,是对JDBC的封装,简化JDBC代码。当然,也可以不用,可以让Spring集成其它的ORM框架,例如:MyBatis、Hibernate等。先使用JdbcTemplate完成增删改查。原创 2022-11-23 20:18:38 · 643 阅读 · 0 评论 -
(十二)Spring之IoC注解式开发
注解使用@interface定义,注解中的属性与接口的方法的定义一样。自定义一个注解Component}@Autowired注解可以出现在:属性上、构造方法上、构造方法的参数上、setter方法上。注解如果声明在属性上可以不提供setter方法,当带参数的构造方法只有一个,@Autowired注解可以省略。@Autowired注解默认根据类型注入。如果要根据名称注入的话,需要配合@Qualifier注解一起使用。原创 2022-11-22 22:48:46 · 573 阅读 · 0 评论 -
(十一)手写简单的Spring框架
Spring IoC容器的实现原理:工厂模式 + 解析XML + 反射机制。原创 2022-11-21 18:45:51 · 496 阅读 · 0 评论 -
(十)Spring之回顾反射机制
通过getDeclaredConstructor获取构造方法,然后直接使用newInstance方法获取实例化对象,当然也可以直接使用newInstance方法调用类的构造订单,这个方法是过期了,但是现在也可以使用,当然直接使用的话是调用类的无参构造方法,要确保这个类有无参构造方法。如果不是直接使用,并且类有有参构造方法,当然有传参数。通过反射机制的getDeclaredMethod方法获取类的方法。通过forName方法,传一个类的全限定类名获取类。需求:假设知道以下信息。原创 2022-11-20 23:51:48 · 243 阅读 · 0 评论 -
(九)Spring之Bean的循环依赖问题
A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。原创 2022-11-19 15:12:28 · 464 阅读 · 1 评论 -
(八)Bean的生命周期
Spring其实就是一个管理Bean对象的工厂。它负责对象的创建,对象的销毁等。所谓的生命周期就是:对象从创建开始到最终销毁的整个过程。Bean生命周期的管理,可以参考Spring的源码:AbstractAutowireCapableBeanFactory类的doCreateBean()方法。原创 2022-11-18 14:02:22 · 356 阅读 · 0 评论 -
(七)Bean的实例化方式
java.util.Date在Spring中被当做简单类型,简单类型在注入的时候可以直接使用value属性或value标签来完成。但我们之前已经测试过了,对于Date类型来说,采用value属性或value标签赋值的时候,对日期字符串的格式要求非常严格,必须是特殊格式的。其他格式是不会被识别的。所以我们可以使用FactoryBean接口对Bean的创建进行增强操作。定义一个学生类:Student} }创建一个工厂Bean:DateFactoryBean类,实现FactoryBean。原创 2022-11-17 17:22:09 · 366 阅读 · 0 评论 -
(六)Spring之回顾工厂模式
客户在点披萨时,可以点不同口味的披萨,例如北京的奶酪披萨、伦敦的奶酪披萨等,这时候可以创建不同的简单工厂类,从当前来说也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性就不是特别好。抽象工厂模式相对于工厂方法模式来说,就是工厂方法模式是针对一个产品系列的,而抽象工厂模式是针对多个产品系列的,即工厂方法模式是一个产品系列一个工厂类,而抽象工厂模式是多个产品系列一个工厂类。当你扩展一个产品的时候,符合OCP原则,因为只需要添加两个类,一个类是具体产品类,一个类是具体工厂类。原创 2022-11-16 13:07:26 · 124 阅读 · 0 评论 -
(五)Spring之Bean的作用域
接下来自定义一个Scope,线程级别的Scope,在同一个线程中,获取的Bean都是同一个。跨线程则是不同的对象:(以下内容作为了解)第一步:自定义Scope。(实现Scope接口)spring内置了线程范围的类:org.springframework.context.support.SimpleThreadScope,可以直接用。注意:如果自己实现这个类的话就需要实现Scope接口第二步:将自定义的Scope注册到Spring容器中。第三步:在对应bean中使用Scope。原创 2022-11-15 14:18:08 · 244 阅读 · 0 评论 -
(四)Spring对IoC的实现
必须提供set方法,Spring就会调用这个set方法,给userDao属性赋值,这里的set的方法可以随意,只需要以set开头即可,但是之后在spring配置文件配置set注入的时候就不能随便写了。但是这个格式是外国人看得比较舒服的格式,中国人看不习惯,所以,在实际开发中,不会把这个Date当作简单类型,一般采用ref进行赋值。它可以根据名字进行自动装配,也可以根据类型进行自动装配。注意:根据类型自动装配的使用,在有效的配置文件当中,某种类型的实例只能有一个,也就是说某种类型的bean只能有一个。原创 2022-11-14 19:01:55 · 355 阅读 · 0 评论 -
(三)简单使用Spring
第一步:添加spring context和Junit的依赖,我们使用Spring6的里程碑版,想要设置spring6里程碑版本的仓库,pom.xml配置如下。spring首先会解析spring的xml配置文件,获取到bean标签的class属性的全限定类名,然后通过反射机制调用无参构造方法创建对象。执行完这行代码,相当于启动了Spring容器,解析spring配置文件,并且实例化所有的bean对象,放到Spring容器当中。2.spring配置文件的文件名是随意的,自定义,但是要放在类的根路径下。原创 2022-11-13 14:52:43 · 359 阅读 · 0 评论 -
Spring启用Log4j2日志框架
第二步:在类的根路径下提供log4j2.xml配置文件(文件名固定为:log4j2.xml,文件必须放到类根路径下。第一步:引入Log4j2的依赖。原创 2022-10-31 19:53:32 · 905 阅读 · 0 评论 -
Spring学习笔记目录
Spring框架学习原创 2022-11-12 15:13:17 · 265 阅读 · 0 评论 -
(二)Spring概述
Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring最初的出现是为了解决EJB臃肿的设计,以及难以测试等问题。Spring为简化开发而生,让程序员只需关注核心业务的实现,尽可能的不再关注非业务逻辑代码(事务控制,安全日志等)。原创 2022-11-12 15:01:04 · 136 阅读 · 0 评论 -
(一)Spring启示录
如果把这个Test看成一个Servlet,显然,具体需要用哪一个实现类,还是需要开发人员自己去new,如果这些实现类相当多,那么new的这个操作会相当复杂,可读性就会变差。控制反转:Ioc(Inversion of Control),是一种新型的设计模式,由于比较新,没有被纳入到GoF23种设计模式之中。当进行系统功能扩展的时候,如果修改了之前稳定的程序,那么之前所有的程序都要进行重新测试,这是非常麻烦的。OCP:开闭原则,对修改关闭(使用方),对扩展开放(提供方)。最重要、最核心、最基础的原则。原创 2022-11-11 17:13:00 · 828 阅读 · 0 评论