spring
文章平均质量分 88
苍鹰蛟龙
这个作者很懒,什么都没留下…
展开
-
浅谈spring中@Conditional(条件注解)
通过@Conditional注解可以根据代码中设置的条件装载不同的bean,在设置条件注解之前,先要把装载的bean类去实现Condition接口,然后对该实现接口的类设置是否装载的条件,下面通过代码演示。演示之前先说下,示例先创建一个接口,然后创建两个实现该接口的类,通过条件注解去实现在容器中到底装载哪个实现类,即在spring容器中装载那个bean。1、创建服务接口在该示例接口中,创建一个人的接原创 2017-08-01 20:03:08 · 13292 阅读 · 2 评论 -
资源之访问Resource(三)
4.3.1 ResourceLoader接口 ResourceLoader接口用于返回Resource对象;其实现可以看作是一个生产Resource的工厂类。 java代码:查看复制到剪贴板打印public interface ResourceLoader { Resource getResource(Str转载 2017-12-13 19:57:46 · 954 阅读 · 0 评论 -
资源Resource通配符路径(四)
4.4.1 使用路径通配符加载Resource 前面介绍的资源路径都是非常简单的一个路径匹配一个资源,Spring还提供了一种更强大的Ant模式通配符匹配,从能一个路径匹配一批资源。 Ant路径通配符支持“?”、“*”、“**”,注意通配符匹配不包括目录分隔符“/”: “?”:匹配一个字符,如“config?.x转载 2017-12-13 19:59:06 · 3442 阅读 · 0 评论 -
资源——关于Spring加载classpath与classpath*的过程剖析(五)
本篇文章是由朋友的一篇博客引出的,博客原文地址:http://jinnianshilongnian.iteye.com/blog/1416322 他这篇博客比较细的讲解了classpath与classpath*,以及通配符的使用,那些配置能成功加载到资源,那些配置加载不了资源。但是我相信仍然有很多同学不明白,为什么是这样的,知其然,不知其所以然,那么本篇文章将慢慢为你揭开神秘的面纱,转载 2017-12-13 20:02:53 · 653 阅读 · 0 评论 -
Bean的作用域
默认情况下,注入到IOC容器中的bean都是单例的,当从容器中多次获取bean时,获取到的都是同一个bean的对象。因为,在bean注入到IOC容器中时,scope属性默认为singleton的,即单例的,同时,scope还可以指定prototype、request、session类型的。 1、singleton类型的<!--scope="singleton"属性指定注入的bean为单例的-->原创 2017-11-24 22:43:27 · 271 阅读 · 0 评论 -
静态工厂方法和实例工厂方法注入bean
一、静态工厂方法注入bean利用静态工厂方法可以把bean注入到IOC容器中。在XML文件中配置bean时,要指定class的属性为工厂的类;factory-method属性指定工厂类中工厂方法,用于创建bean;constrctor-arg用于给工厂方法传递参数。实例如下:1、创建Car类public class Car { private String brand; private原创 2017-11-26 17:41:24 · 8008 阅读 · 6 评论 -
泛型依赖注入
定义父类时,使用泛型指定某种类型,并在父类中使用依赖注入,在子类继承父类后,在子类中指定具体的泛型的具体类型,并且子类会继承父类的依赖注入。如果父类依赖注入的是某个接口或父类,那么在子类继承父类的依赖注入后,会自动注入接口的实现类或父类的继承子类;如果父类依赖注入的是某个独立的类,那么子类继承父类的依赖注入后,也会注入这个独立类。下面示例演示1、创建两个父类BaseDao和BaseService,两原创 2017-12-16 16:54:20 · 973 阅读 · 0 评论 -
AOP使用方法
一、AOP的概念1、什么是面向切面编程呢?听起来很抽象,举个例子:假设我们要执行一个核心交易,但是我想打印核心交易前和交易后的日志,最简单的办法就是在核心交易的程序的前面和后面分别加上打印日志的程序。是的,很正确,但是我如果有成千上个这样的程序都要打印日志呢?如果你在每个核心的程序里面都加上打印日志的程序,核心程序和非核心的程序相互交错,不利于程序的维护,费时费力。 So,此时我们的面向切面编程原创 2017-12-16 21:10:53 · 1943 阅读 · 0 评论 -
AspectJ 切面注解中五种通知注解:@Before、@After、@AfterReturning、@AfterThrowing、@Around
要在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理。 在切面类中需要定义切面方法用于响应响应的目标方法,切面方法即为通知方法,通知方法需要用注解标识,AspectJ 支持 5 种类型的原创 2017-12-16 23:52:27 · 168274 阅读 · 16 评论 -
切面优先级设置
前面博客中已经介绍切面的使用方法,但是都是介绍的只有一个切面类的情况,如果同时存在多个切面的话,多个切面之间的执行顺序如何设置呢?示例如下一、多个切面,无优先级设置首先建立一个目标接口ArithmeticCalculator:package lzj.com.spring.aop;public interface ArithmeticCalculator { int add(int i, in原创 2017-12-17 23:49:54 · 1951 阅读 · 0 评论 -
@Pointcut——切点表达式重用
关于切面的五种通知方法,这篇博客中已经介绍了,但是若几种切面方法用的切面表达式都是相同的情况下,此时没必要在每个切面通知方法上面标识重复的切面表达式,可以选择重用切面表达式。示例如下:LogProxy 为这篇博客中切面。下面通过重用切面表达式的方法重新定义了切面——使用 @Pointcut 来声明切入点表达式.。package lzj.com.spring.aop;import java.util原创 2017-12-18 23:04:54 · 6390 阅读 · 0 评论 -
Spring配置文件中jdbc:initialize-database标签应用以及PropertyPlaceholderConfigurer配置的应用
一、在Spring配置文件中配置PropertyPlaceholderConfigurer1、在Spring中,使用PropertyPlaceholderConfigurer可以在XML配置文件中加入外部属性文件,当然也可以指定外部文件的编码,如:<bean id="propertyConfigurer" class="org.springframework.beans.factory.config原创 2018-01-12 22:09:42 · 1003 阅读 · 0 评论 -
<context:annotation-config/>配置的作用
最近在研究Spring中配置的作用,现记录如下:的作用是向Spring容器注册以下四个BeanPostProcessor:AutowiredAnnotationBeanPostProcessorCommonAnnotationBeanPostProcessorPersistenceAnnotationBeanPostProcessorRequ转载 2018-01-15 11:12:27 · 304 阅读 · 0 评论 -
@Resource注解用法
@Resource用法与@Autowired 用法 用法相似,也是做依赖注入的,从容器中自动获取bean。但还是有一定的区别。在启动spring的时候,首先要启动容器;启动spring容器时,会默认寻找容器扫描范围内的可加载bean,然后查找哪些bean上的属性和方法上有@Resource注解;找到@Resource注解后,判断@Resource注解括号中的name属性是否为空,如果为空:看s原创 2018-01-02 11:12:43 · 58031 阅读 · 16 评论 -
Spring之事务使用
本文以声明式事务为例 只需要在spring的配置文件中配置需要的数据源和事务管理器,然后在需要用到事务的方法上加注解@Transactional 即可。下面以买书为例,如果用户的账户里面有足够的金额,可以买书,减少属书的库存,如果不够,进行事务回滚。书的单价表 书的库存表 用户账户表 一、步骤1、配置spring的配置文件beans xmlns="ht原创 2018-01-31 23:01:19 · 228 阅读 · 0 评论 -
资源之内置Resource实现(二)
4.2 内置Resource实现4.2.1 ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个ByteArrayInputStream。首先让我们看下使用ByteArrayResource如何处理byte数组资源: java代码:查转载 2017-12-13 19:55:41 · 891 阅读 · 0 评论 -
资源之基础知识(一)
4.1.1 概述 在日常程序开发中,处理外部资源是很繁琐的事情,我们可能需要处理URL资源、File资源资源、ClassPath相关资源、服务器相关资源(JBoss AS 5.x上的VFS资源)等等很多资源。因此处理这些资源需要使用不同的接口,这就增加了我们系统的复杂性;而且处理这些资源步骤都是类似的(打开资源、读取资源、关闭资源),因此如果能抽象出一个统一的接口来对这些底层转载 2017-12-13 19:52:35 · 255 阅读 · 0 评论 -
spring-AOP通过注解@DeclareParents引入新的方法
一、应用背景在看此文章之前,你可能已经知道了,spring是通过Before、After、AfterRunning、AfterThrowing以及Around 共5中通知方式为目标方法增加切面功能,比如一个需要在目标类执行一个目标方法之前和之后分别打印一份日志,就可以建立一个切面在这个方法前后打印日志。但是如果我想在此目标类中再增加一个目标方法是,该怎么办呢? 最简单的办法就是在建立此目标类的时候原创 2017-08-08 22:23:16 · 13149 阅读 · 19 评论 -
Spring中Bean装配的歧义性
Primary注解表示优先装载Bean。例如有一个服务接口A,该接口有3个实现类,在容器中就会生成3个A的实现类的Bean,当对A进行装载时,容器不会判断装载哪一个,就会报一个没有唯一的一个Bean。要想解决此问题,最简单的方法就是用Primary注解。下面用代码演示 1、服务接口package com.spring.primary.annotation;public interface Anim原创 2017-08-02 00:16:35 · 719 阅读 · 0 评论 -
初窥AOP实例
一、AOP的概念1、AOP解释为面向切面编程,是OOP面向对象编程的补充。什么是面向切面编程呢?听起来很抽象,举个例子:假设我们要执行一个核心交易,但是我想打印核心交易前和交易后的日志,最简单的办法就是在核心交易的程序的前面和后面分别加上打印日志的程序。是的,很正确,但是我如果有成千上个这样的程序都要打印日志呢?如果你在每个核心的程序里面都加上打印日志的程序,核心程序和非核心的程序相互交错,不利于原创 2017-08-06 23:00:30 · 447 阅读 · 0 评论 -
AOP切点的合并
继续以上一篇文章的例子来演示。 上篇文章中创建了两个切点(但两个切点是相同的“execution(* lzj.com.spring.aop.ArithmeticCalculator.*(..))”),如果以后,创建的切点越来越多的话,在做切点时,势必会增加程序的负担,下面就显示合并切点的例子。代码实例本次实例核心人物是计算两个数字的加减乘除,但是我要在计算的前后分别打印日志,把打印日志放在切面程序原创 2017-08-06 23:21:33 · 592 阅读 · 0 评论 -
spring的属性注入和构造器注入
spring在向IOC容器中注入Bean的时候,有三种注入方式:属性注入构造器注入工厂方法注入 平常中用到的前两种方法较多,下面对前两种方法举例。一、属性注入1、创建一个car类,作为注入的beanpackage com.lzj.spring;public class Car { private String brand; private float price; p原创 2017-11-19 22:19:12 · 9253 阅读 · 0 评论 -
用注解形式装配Bean
一、spring可以component-scan标签自动扫描指定包下的类,然后把扫描到的类自动注入到IOC容器中,自动注入到IOC容器中的类的实例一般为类名的第一个字母小写(如不特殊指定),一般需要注入的类需要4中方式的注解进行标注:@Component、@Respository、@Service、@Controller。@Component: 基本注解, 标识了一个受 Spring 管理的组件@原创 2017-11-29 22:54:47 · 504 阅读 · 0 评论 -
Bean注入
1、通过构造器注入字面常量值 定义一个Person类public class Person { private String name; private int age; private String sex; public Person(String name, int age, String sex, Car car) { super();原创 2017-11-20 23:50:35 · 292 阅读 · 0 评论 -
@Autowired 用法
在spring的配置文件中,如果 标签,则在代码应用中,可以自动装配具有 @Autowired 和 @Resource 、@Inject注解的属性。因为元素自动注册了AutowiredAnnotationBeanPostProcessor 实例,该实例可以自动装配@Autowired 和 @Resource 、@Inject注解的属性。@Autowired 和 @Resource 、@Inject实原创 2017-12-01 21:48:14 · 2942 阅读 · 0 评论 -
自动装配bean
spring可以把注入到IOC容器中的bean自动装配到指定的属性上。下面通过XML的方式进行自动装配需要的bean。 一、通过XML的方式进行自动装配 假设有两个类,Person和Car,现在需要把Car的bean装配到Person中的car属性上。在xml的配置中需要用到autowire属性。类Carpackage com.lzj.spring;public class Car { p原创 2017-11-22 23:15:52 · 291 阅读 · 0 评论 -
Bean的继承配置
1、spring允许bean之间的配置继承,被继承的bean为父bean,继承父bean的bean称为子bean。注意配置的继承与java中类的继承不同,只是子bean的配置继承了父bean的配置,不是类上的继承关系。看一个示例Person类:package com.lzj.spring;public class Person { private String name; privat原创 2017-11-23 21:21:31 · 534 阅读 · 0 评论 -
Bean之间的依赖配置
在实际应用中实例化某个bean时,经常要在实例化该bean之前实例化另外一个bean,因此产生了依赖关系,下面通过实例演示bean之间如何依赖。 假设有一个Person类和一个Car类,在实例化Person类之前要先实现Car的类。Person类:package com.lzj.spring;public class Person { private String name; pr原创 2017-11-23 22:01:36 · 2639 阅读 · 0 评论 -
在spring中使用外部属性文件
1、连接数据库时经常用到c3p0数据源,下面以数据源为例。如果要在java程序中配置数据源,我们经常写成如下形式: ComboPooledDataSource dataSource = new ComboPooledDataSource(); dataSource.setUser("root"); dataSource.原创 2017-11-25 11:08:33 · 439 阅读 · 0 评论 -
IOC容器中bean的生命周期
一、bean的声明周期IOC容器在管理bean时,是遵循一整套流程的,bean在IOC容器中从创建到销毁流程如下: - 初始化IOC容器 - 通过构造器或工厂方法创建bean的实例 - 为bean的属性设置值或者对其它bean的引用 - 调用bean设置的初始化方法 - 使用bean - 容器关闭时,调用bean的销毁方法,然后关闭容器下面通过简单实例演示下: 1、首先创建一个bean的原创 2017-11-25 15:50:35 · 2423 阅读 · 1 评论 -
JdbcTemplate的使用
下面介绍用spring中的JdbcTemplate操作数据库一以mysql为例,employee表信息如下 1、首先创建employee表对应的实体beanpackage com.lzj.spring.jdbc;public class Employee { //注意:定义的变量名字一定要与数据库中的变量一致 private Integer id;原创 2018-01-29 22:34:48 · 309 阅读 · 0 评论