![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring
丨Q ,Q丨
这个作者很懒,什么都没留下…
展开
-
编程式事务管理
文章目录编程式事务管理事务管理器`DataSourceTransactionManager``TransactionTemplate.execute()`编程式事务管理1. 配置TransactionTemplate,并注入事务管理器2. 使用TransactionTemplate编程式事务管理事务管理器DataSourceTransactionManager事务管理器封装好了事务处理的一些过程,最主要的就是关闭自动提交、手动提交、回滚这三个操作。请看Spring提供的事务管理器的之间的关系:图1原创 2020-05-27 12:04:11 · 427 阅读 · 0 评论 -
基于注解配置的声明式事务控制
文章目录基于注解配置的声明式事务控制1. 配置事务管理器2. 注解事务支持``3. `@Transaction`注解标注事务示例基于注解配置的声明式事务控制要使用注解,就要导入xmlns:context的名称空间,以及配置包扫描的路径<context:component-scan>1. 配置事务管理器与基于XML的配置相同,第一步也是配置DataSourceTransactionManager <bean id="transactionManager" class="org原创 2020-05-27 01:17:49 · 155 阅读 · 0 评论 -
JdbcTemplate简介
JdbcTemplate简介JdbcTemplate和DBUtils一样,是对JDBC的简单封装。使用JdbcTemplate将jdbcTemplate注入到dao对象既然JdbcTemplate是对JDBC的简单封装,那么,它被用于持久化层的Dao对象。所以,第一步要将JdbcTemplate注入Dao对象 <bean id="userDao" class="com.test.dao.UserDaoImpl"> <property name="jdbcTe原创 2020-05-26 22:02:57 · 300 阅读 · 0 评论 -
小结:各种通知的运行顺序
文章目录小结:各种通知的运行顺序正常结束异常结束验证XML配置的AOP的运行顺序验证注解配置的AOP的运行顺序关于环绕通知小结:各种通知的运行顺序这篇博客主要是来总结一下基于注解配置的AOP,通知的执行顺序会有一些小问题。AOP是通过动态代理实现的,它的大致过程如下: advicer.before(); try{ target.foo(); advicer.afterReturning(); }catch(Exception e){ advicer.afterThrowing();原创 2020-05-26 01:24:26 · 618 阅读 · 0 评论 -
基于注解的AOP配置
文章目录基于注解的AOP配置1. 导入约束2. 配置包扫描3. 开启AOP注解支持4. 切面配置使用`@Aspect`指定一个切面(通知类)使用`@Pointcut`配置切入点配置通知方法环绕通知配置基于注解的AOP配置1. 导入约束与基于注解的Ioc容器配置相同,需要导入xmlns:context约束。2. 配置包扫描基于XML配置包扫描context:component-scan如果使用基于Java的配置,可以在配置类前加@ComponentScan配置包扫描3. 开启AOP注解支持基于原创 2020-05-26 00:56:42 · 173 阅读 · 0 评论 -
切入点表达式的细节
文章目录切入点表达式的细节标准写法访问修饰符可以省略使用通配符表示任意的返回值包名可以使用通配符表示任意包及其子包的通配符类名使用通配符方法名可以使用通配符参数列表普通类型:直接写类型引用类型:全限定类名使用通配符表示表示任意参数列表全通配写法:所有的方法都是切入点切入点表达式的细节标准写法execution(访问修饰符 返回值类型 全限定类名.方法名(参数列表))例:execution(public com.test.service.UserServiceImpl.addUser(com.tes原创 2020-05-26 00:04:23 · 385 阅读 · 0 评论 -
基于XML的AOP配置
基于XML的AOP配置导入XML的依赖<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:sche原创 2020-05-25 23:43:19 · 166 阅读 · 0 评论 -
举例:Spring整合连接池 + DBUtils,实现事务处理
文章目录举例:Spring整合连接池 + DBUtils,实现事务处理回顾事务处理的流程问题:多次数据库操作过程中,使用同一个Connection使用ThreadLocal保证事务没完成时每次获取的连接时同一个对象问题:Dao层执行完每个操作是否要关闭连接使用TrasactionManager关于Spring的XML配置举例:Spring整合连接池 + DBUtils,实现事务处理回顾事务处理的流程要实现事务的处理,直接使用JDBC提供的方法即可,回顾一下事务处理的步骤:将提交方式设置为手动con原创 2020-05-23 01:32:51 · 438 阅读 · 0 评论 -
基于Java配置的常量注入
文章目录基于Java配置的常量注入基于Java配置产生的新问题解决上述问题:通过@PropertySource加载配置常量setter注入构造器注入小结基于Java配置的常量注入基于Java配置产生的新问题在使用Spring时,会碰到给bean中注入常量的问题。在没有学习基于Java的配置时,通过XML注入常量是非常好的选择。现在回到基于Java的配置的问题,现在有这样一个需求,需要配置一个用于存储上传文件的JavaBean,这个JavaBean中有一个需要被注入的常量:文件的存储路径。我们可以按原创 2020-05-19 17:04:14 · 738 阅读 · 0 评论 -
基于Java的配置元数据
文章目录基于Java的配置元数据用配置类代替XML@BeanAnnotationConfigApplicationContext(Class<?>...)@Configuration兼容基于注解的配置元数据 @ComponentScan改变bean的Scope:@Scope再谈@ComponentScan和@Configuration基于Java的配置元数据有了基于XML的配置元数据和基于注解的配置元数据(还是依赖XML,需要配置容器扫描的包,以至于能够找到注解),再来了解一种脱离XML的形原创 2020-05-19 01:00:55 · 349 阅读 · 0 评论 -
多个配置元数据的合并
文章目录多个配置元数据的合并1.基于XML`import`标签多个XML传入构造器2.基于注解3.基于Java的合并通过@import注解@ComponentScan包扫描注解多个配置类传入构造器多个配置元数据的合并在实际开发中,一般不会将所有的配置元数据放到同一个XML(或基于Java的配置类)中。因为配置元数据也有主次(或称为父子)之分,这样结构分明,也便于管理,便于协同开发。举个例子,可以将MVC架构中,将Dao层和Service层的JavaBean配置在不同的配置元数据中,再使用一个总的配置原创 2020-05-19 00:25:08 · 247 阅读 · 0 评论 -
其他注解
其他注解@Scope、@PreDestory、@PostConstruct1. 用于指定作用范围@Scope属性:value常用取值:singleton:标识一个单例bean(默认值)prototype:标识一个原型bean2. 有关声明周期的两个注解@PostConstruct,用于指定初始化时的回调方法@PreDestroy,用于指定销毁时的回调方法在之前讨论singeton和prototype两种类型的bean时,其实已经使用到了上面的两个回调方法,在哪里使用的是基于XML的原创 2020-05-18 01:23:54 · 128 阅读 · 0 评论 -
基于注解的配置(二):注入类注解
@Autowired看这个注解的意思就很明白,它会自动装配。标注字段:如果一个字段被@Autowired标注,这表示这个字段通过自动装配的方式注入依赖。标注字段时,可以不用定义setter方法。(XML配置时,使用setter依赖注入必须定义setter方法)匹配被依赖bean的方式:首先,通过byType的方式,在容器中找出类型匹配的bean;如果找到的bean不唯一,则在这些类型...原创 2020-02-27 10:07:42 · 314 阅读 · 0 评论 -
基于注解的配置(一):用于定义bean的注解
配置扫描路径如果仅使用基于XML的配置元数据,创建容器时,所有的配置信息都在XML中;但是,如果使用注解,配置信息就会出现在Java代码中,因此,要给出一个路径,使得容器可以找到这些注解。通过使用<context:component-scan base-package=""/>注解,指定容器扫描的包;指定之后,容器就可以读取指定包内的基于注解的配置元数据。注意,要使用&l...原创 2020-02-24 19:10:21 · 480 阅读 · 1 评论 -
bean定义继承
bean定义也可以像类的定义一样,可以有一个父类模板,供子类继承。举一个例子:public class TestBean { private String str1; private String str2; public void setStr1(String str1) { this.str1 = str1; } publi...原创 2020-02-16 01:54:24 · 235 阅读 · 0 评论 -
Scope:request, session, application and websocke
1.上下文较为特殊请大致阅读一下官方的文档The request, session, application, and websocket scopes are available only if you use a web-aware Spring ApplicationContext implementation (such as XmlWebApplicationContext)....原创 2020-02-15 22:06:57 · 234 阅读 · 0 评论 -
singleton & prototype
官方给出了6种作用范围,其实做常用的就是singleton和prototype。而且在之前的例子中,也已经大致的介绍了它们,这篇博客其实更多的时扩展。singletonsingleton,被翻译作“单例”,也就是只有一个实例。对singleton的每一次请求(即通过ref注入或者通过getBean()获得实例时)都是请求的同一个对象。是不是很像设计模式的单例模式?其实还是有区别的...原创 2020-02-15 02:04:40 · 460 阅读 · 0 评论 -
作用范围(Scope)
作用范围(Scope)在bean定义时,可以指定<bean/>标签的Scope属性,来声明bean的作用范围。对于bean的作用范围(Scope),并不仅仅指的是作用域,对于不同Scope的bean,它们的生命周期也会有所不同。对于scope属性的取值,总共有以下六个:下表摘自官方文档,并稍作翻译Scope Description singleton...原创 2020-02-15 00:52:06 · 1107 阅读 · 0 评论 -
方法注入(Method Injection)
Method injection更容易理解的翻译方式是通过方法注入。先不说什么是method injection,先通过一个问题(从官方文档翻译而来),引入method injection。提出问题一个单例bean A,如果依赖非单例的bean B(B被注入到A中);对于A来说,B就是一个单例的bean。因为不论使用构造器、setter或工厂方法注入,只会注入一次,现在想要的结果就...原创 2020-02-12 19:53:15 · 1691 阅读 · 0 评论 -
设置autowire-candidate,解决byType和construcor多个同类bean的冲突
通过之前的例子,可以看到,使用byType和constructor进行自动装配时,如果匹配到的bean不唯一,就会出错,因此如果不解决这个冲突,byType和construcor是有局限性的。autowire-candidate属性candidate:候选者通过设置autowire-candidate="false",可以使一个bean脱离byType和construcor自动装配的...原创 2020-02-10 15:33:36 · 619 阅读 · 0 评论 -
自动装配举例:constructor
/** * * 通过constructor自动装配进行注入 * * collaboratorBean 单个bean,在配置元数据中不能有多个同类型的bean,否则会出错 * set 集合,将多个同类性的bean注入这个集合(array)中 */public class Dependent { private Collaborator collaboratorBea...原创 2020-02-10 14:15:21 · 379 阅读 · 0 评论 -
自动装配举例:byType
/** * * 通过byType自动装配进行注入 * * collaboratorBean 单个bean,在配置元数据中不能有多个同类型的bean,否则会出错 * set 集合,将多个同类性的bean注入这个集合(array)中 */public class Dependent { private Collaborator collaboratorBean; ...原创 2020-02-10 14:00:40 · 351 阅读 · 0 评论 -
自动装配(Autowiring Collaborators)
注:Collaborators指的是被依赖的bean(协作者),所以自动装配只针对于bean,而不针对简单数据类型或Spring类型。在没有学习自动装配进行依赖注入时,通常使用<ref/>或<bean/>的ref属性来指定被注入的bean。Spring容器可以通过检查配置元数据的内容,自动解析依赖关系。使用基于XML的配置元数据,可以指定通过<bean/&g...原创 2020-02-10 13:09:51 · 377 阅读 · 0 评论 -
depends-on
与dependency的比较在汉语的翻译中,也罢depends-on翻译为“依赖”。与dependency(依赖)不同,dependency,意味着有一个引用,依赖注入时,要给这个引用赋值。这种依赖是直接的。depends-on,表示bean之间的依赖并不直接。非直接依赖最常见的例子就是一个类的静态初始化程序需要被触发。(JDBC注册驱动时,需要使用类类加载来触发它的静态初始化程序,进而...原创 2020-02-09 11:24:36 · 1089 阅读 · 0 评论 -
lazy-initialized(延迟初始化)
默认情况下,bean都是单例的(除非设置了scope属性),单例bean会在容器启动时实例化(如果将scope设置为prototype,则在请求使用时才会实例化)这样做是有好处的,可以尽早(部署阶段)发现配置或环境错误。如果不想让bean在Spring初始化时就被创建,则可以使用<bean/>标签的lazy-init属性来关闭这个选项。<bean id="lazy...原创 2020-02-09 11:08:49 · 660 阅读 · 0 评论 -
更简洁的注入方式(P命名空间、C命名空间和复合属性名)
更简洁的注入方式(P命名空间、C命名空间和复合属性名)p命名空间(p-namespace)p命名空间:使用<bean/>标签的属性来代替子标签<property/>完成依赖注入。使用p命名空间,首先要引入p命名空间的XSD(XML Scheema Definition)xmlns:p="http://www.springframework.org/sche...原创 2020-02-07 18:16:49 · 458 阅读 · 0 评论 -
不同数据类型的依赖注入(二):Inner beans & Collections & 注入null或空字符串
不同数据类型的依赖注入(二):Inner beans & Collections & 注入null或空字符串内部bean(Inner Beans)即在,<property/>或<constructor-arg/>标签中,定义子标签<bean/>。举例:<bean id="outer" class="..."> ...原创 2020-02-07 17:14:01 · 298 阅读 · 0 评论 -
不同数据类型的依赖注入(一):value和ref
不同数据类型的依赖注入(一):value和ref1. 直接注入值 【Straight Values (Primitives, Strings, and so on)】直接值,常见的就是简单类型的值和字符串。<property/>标签的value属性用来指定一个“人可读”的字符串。通过Spring的转换服务,可以将这些字符串转换为Java规范的类型。<bean ...原创 2020-02-07 15:42:30 · 1068 阅读 · 0 评论 -
基于setter方法的依赖注入
基于setter方法的依赖注入基于setter方法的依赖注入,容器通过调用bean的setter方法完成注入,bean通过构造器或静态工厂方法完成实例化。<bean id="exampleBean" class="examples.ExampleBean"> <!-- setter injection using the nested ref element ...原创 2020-02-07 11:54:52 · 885 阅读 · 0 评论 -
基于构造器(或静态工厂方法)的依赖注入
基于构造器(或静态工厂方法)的依赖注入基于构造器的注入:容器通过调用指定参数的构造器完成bean的实例化,并且通过构造器的参数完成依赖注入。(静态工厂方法与构造器的行为基本一致)举例:public class SimpleMovieLister { // the SimpleMovieLister has a dependency on a MovieFinder ...原创 2020-02-07 02:45:59 · 477 阅读 · 0 评论 -
Bean以及bean的实例化
Bean什么是beanbean就是IoC容器托管的对象。引用自官方文档In addition to bean definitions that contain information on how to create a specific bean, the ApplicationContext implementations also permit the registrat...原创 2020-02-04 21:31:17 · 373 阅读 · 0 评论 -
Spring_目录
Spring IoC及IoC容器简介初始化IoC容器及IoC容器的使用原创 2020-02-03 14:43:24 · 190 阅读 · 0 评论 -
IoC容器的使用
IoC容器的使用通过之前的学习,了解了IoC容器、bean以及元数据metadata。使用IoC容器的顺序:编写Beans的类型及接口→配置元数据→启动IoC容器(同时IoC容器初始化bean)→从IoC容器中取出bean使用编写Beans的类型public interface IUserDao { public User getUser();}public cl...原创 2020-02-03 14:41:11 · 156 阅读 · 0 评论 -
Spring简介:IoC与IoC容器
Spring简介:IoC与IoC容器学习Spring,最主要的就是Spring的两大特性,控制反转(Inversion of Control,IoC)与面向切面/方面编程(Aspect-Oriented Programming,AOP)。这篇博客主要聊聊IoC。控制反转(IoC)首先来看一下官方文档对IoC的解读。引用自Spring官方文档→官方文档链接←IoC is...原创 2020-02-03 13:57:11 · 437 阅读 · 0 评论