喜欢研究技术的码农
15.4 @Qualifier 15.4.1 简介 @Qualifier通常是配合@Autowired的一起使用的。我们知道使用@Autowired进行注入时默认是按照类型进行注入的。
15 基于注解的配置 除了单独使用XML对Spring进行配置外,我们还可以使用注解的方式来配置对应的bean定义。如哪些class要被定义为bean,对应的bean需要注入哪些内容等。在Spring的配置中XML定义与注解定义是可以同时存在的。
14 PropertyOverrideConfigurer 14.1 简介 打个比方我们在bean容器中定义了一个beanA,其中有一个属性propB,对应值为valueB,但是我又希望在不更改bean定义的情况下希望Spring在实例化beanA时将对应的属性propB的值改为valueC,那么这个时候我们就可以使用PropertyOverrideConfigurer来实现这个效果了。
13.6 指定加载顺序 有的时候我们可能需要或者是希望定义多个PropertyPlaceholderConfigurer,这个时候我们可以通过setOrder()方法来指定PropertyPlaceholderConfigurer的处理顺序,值越小的越先处理。
13 PropertyPlaceholderConfigurer PropertyPlaceholderConfigurer是对BeanFactoryPostProcessor接口的一种实现,其允许我们在定义bean的时候将bean的某些属性定义为变量形式,然后由PropertyPlaceholderConfigurer在这些bean被实例化之前利用外部定义的属性文件或者其内部定义的属性等将这些变量替换成对应的属性值。
12 BeanFactoryPostProcessor 在上一篇文章中介绍了BeanPostProcessor,我们可以通过自定义BeanPostProcessor实现对实例化以后的bean在调用其初始化方法前后加上特定的逻辑,即所谓的回调。
11 BeanPostProcessor 11.1 简介 BeanPostProcessor是Spring中定义的一个接口,其与之前介绍的InitializingBean和DisposableBean接口类似,也是供Spring进行回调的。
10.7 自定义Scope 如果用户觉得Spring内置的几种Scope不能满足需求,则可以定制自己的Scope,即实现自己的org.springframework.beans.factory.config.Scope。
10 bean作用范围(scope) 在Spring中使用Scope来表示一个bean定义对应产生实例的类型,也可以说是对应实例的作用范围。Spring内置支持的scope严格来说默认是有五种,分别是: singleton:这是默认Scope,表示在整个bean容器中或者说是整个应用中只会有一个实例。
9 生命周期回调方法 对于Spring bean来讲,我们默认可以指定两个生命周期回调方法。一个是在ApplicationContext将bean初始化,包括注入对应的依赖后的回调方法;另一个是在ApplicationContext准备销毁之前的回调方法。
8方法注入之替换方法实现 Spring提供了一种替换方法实现的机制,可以让我们改变某个bean某方法的实现。打个比方我们有一个bean,其中拥有一个add()方法可以用来计算两个整数的和,但这个时候我们想把它的实现逻辑改为如果两个整数的值相同则把它们相乘,否则还是把它们相加,在不改变或者是不能改变源码的情况下我们就可以通过Spring提供的替换方法实现机制来实现这一要求。
7 单例注入多例之lookup-method Spring有一种机制,可以动态的实现或重写bean容器中指定bean的指定方法,然后将返回值指定为bean容器中的另一个bean。现针对前文提到的单例bean需注入多例bean的应用场景来谈谈如何使用这种机制。
6 单例注入多例之注入ApplicationContext Spring bean容器中的bean有单例bean,也有多例bean。当我们需要给一个单例beanA注入一个单例beanB,或者给一个多例beanA注入一个多例或单例beanB时,都可以通过配置让Spring的bean容器帮我们完成。
5 基于XML配置的自动注入(autoWire) 5.1 autowire 通常如果我们需要给一个bean注入另一个bean时都是通过set方法或者构造方法进行注入,其实Spring也支持bean的自动注入。
4p命名空间和c命名空间 在通过构造方法或set方法给bean注入关联项时通常是通过constructor-arg元素和property元素来定义的。在有了p命名空间和c命名空间时我们可以简单的把它们当做bean的一个属性来进行定义。
3依赖注入 Spring bean的依赖注入有两种形式,通过构造方法注入和通过set方法注入。构造方法注入是通过constructor-arg元素来指定的,而set方法注入是通过property元素来指定的。
2 bean的实例化 2.1 构造方法实例化 bean的实例化默认是通过构造方法进行的,在未指定构造方法参数的情况下,默认会通过无参构造方法来进行bean的实例化。如下这种就是通过无参构造方法进行实例化的。
1 bean定义 1.1 命名 给bean命名不是必须的,但是如果如果有其它bean需要引用该bean,那么就需要给该bean命名。当我们没有给bean命名时,Spring将自动为该bean生成一个唯一的名称。
基于大量数据的Excel生成方案 以往我们在基于POI生成Excel文件时,都是利用官方提供的HSSF或XSSF对应的系列API,它们操作简便,上手比较快。但是对于大数据量的Excel文件生成往往会比较耗时,这是我们利用标准的API进行开发的一个痛点。
推荐一款Mybatis分页插件 以前也写过一篇博文介绍Mybatis的插件,以及如何通过Mybatis的插件功能实现一个自定义的分页插件,但是那个插件的侵入性是比较大的。前段时间遇到了一款开源的Mybatis分页插件,叫PageHelper,github地址是https://github.com/pagehelper/Mybatis-PageHelper,其原理是通过ThreadLocal来存放分页信息,从而可以做到在Service层实现无侵入性的Mybatis分页。
RSA签名与验签 RSA算法除了可以进行加解密以外,还可以用来签名与验签。RSA用来进行签名与验签时是使用私钥进行签名,公钥进行验签的。这点与加解密的时候刚好相反。加解密时使用公钥加密,私钥解密。
RSA加密与解密 RSA算法的密钥由公钥和私钥组成,公钥用于加密,私钥用于解密。顾名思义,公钥就是可以进行公开的密钥,一般可以公开给你的合作伙伴;私钥就是私有的,也就是只有你知道的,你的合作伙伴通过你提供的公钥进行加密的内容只有你能进行解密,这样也就只有你知道他发的是什么内容。
Java使用AES加解密 目录 1.1生成密钥 1.2密钥的存储 1.3获取存储的密钥 1.4加解密 1.5使用存储的密钥进行加解密示例 AES是一种对称的加密算法,可基于相同的密钥进行加密和解密。
假设我们有如下这样一个switch语句: public static void test(int index) { switch (index) { case 1: System.
最近遇到一个问题,数据库存储的Date是包含时分秒的,数据库用的是Oracle,日期类型用的是date,数据库访问用的是Mybatis,对应的代码是通过Mybatis-Generator生成的。
10 Mybatis指定日志输出实现 在程序开发过程中,为了调试方便、了解程序的运行过程,进行必要的日志输出总是免不了的。对于使用Mybatis而言,我们常见的需求是希望可以在日志中打印出Mybatis执行过程中进行数据库操作的SQL语句及其传递的参数。
9 Mybatis介绍之参数传递 9.1 使用Mapper接口时参数传递方式 Mybatis在使用Mapper接口进行编程时,其实底层是采用了动态代理机制,表面上是调用的Mapper接口,而实际上是通过动态代理调用的SqlSession的对应方法,如selectOne(),有兴趣的朋友可以查看DefaultSqlSession的getMapper()方法实现,其最终会获得一个代理了Mapper接口的MapperProxy对象。
7 Mybatis结果集自动映射 在使用Mybatis时,有的时候我们可以不用定义resultMap,而是直接在语句上指定resultType。这个时候其实就用到了Mybatis的结果集自动映射。
6 Mybatis的Executor介绍(二)——批处理 在程序中,有时候我们需要批量的去操作一些数据,批量的新增、修改、删除,如果是通过for循环一条记录一条记录的去更新无疑效率会比较慢。
5 Mybatis的Executor介绍(一) 目录 5 Mybatis的Executor介绍(一) 5.1 SimpleExecutor 5.2 ReuseExecutor 5.3 BatchExecutor 5.4 Executor的选择 5.4.1 默认的Executor Mybatis中所有的Mapper语句的执行都是通过Executor进行的,Executor是Mybatis的一个核心接口,其定义如下。
Mybatis查询延迟加载 目录 1.1 启用延迟加载 1.2 分析 1.3 aggressiveLazyLoading 1.4 lazyLoadTriggerMethods 1.1 启用延迟加载 Mybatis的延迟加载是针对嵌套查询而言的,是指在进行查询的时候先只查询最外层的SQL,对于内层SQL将在需要使用的时候才查询出来。
Mybatis杂谈 目录 1.1 配置解析 1.2 全局配置简介 1.3 应用浅析 本文主要介绍Mybatis的配置解析对应的Class、Mybatis的全局配置等,每个点都不会讲太多细节的东西,只是提一下对应的点,更多细节的东西请有兴趣的读者自己去挖掘。
Mybatis表对象继承 我们一般用表来表现对象之间的继承关系时通常有三种方式。第一种是把所有对象包含的属性都存放在一张表中,然后用一个字段来区分当前记录对应的对象类型;第二种是每个子类型一张表,每张表都存该对象所有的属性;第三种是基类作为一张表进行存储,每个子类特性的属性都新建一张表进行保存,然后在基类对应的表里面通过一个字段来区分对象的类型。
Mybatis通过一条SQL查出关联的对象 以往在做对象的查询时如果需要把关联的对象一起查出来是通过resultMap的子查询来进行的,这种用法可以参考我之前写的一篇文章http://elim.iteye.com/blog/1337009。
笔者的一个项目是Maven项目,通过使用tomcat的Maven插件启动的时候抛出了这个异常,异常的完整信息是:org.apache.commons.discovery.
简介 Java的枚举类型用于在某些东西可以枚举出来的时候,我们可以把它定义为枚举类型,然后把其中包含的可选值一一枚举。打个比方,我们现在有一堆数字,大致可以分为四种类型,整型、浮点型、金额和百分比。
Java SPI机制简介 SPI是Service Provider Interfaces的简称。根据Java的SPI规范,我们可以定义一个服务接口,具体的实现由对应的实现者去提供,即Service Provider(服务提供者)。
Nginx搭建负载环境 Nginx的负载均衡支持4种算法,round-robin、least-connected、ip-hash、和weightd。 round-robin round-robin的意思是循环轮询。
Weblogic命令行更换控制台密码 1、 在对应域的管理server下的security目录下找到boot.properties文件,其内容形式如: password={AES}mslf4i31COfxJt45PZxZESyDDq6VSQ8KKpn+9+M...
Nginx代理应用端口丢失问题 最近使用Nginx代理weblogic的过程中发现访问了weblogic的console后,在应用跳转至登录界面时对应的端口号自动丢失了。
Weblogic多应用部署在一个域下导致session冲突问题解决办法 最近在Weblogic的一个域下面同时部署了多个应用,出现了session冲突的问题。其现象是这样的,访问A正常,但是从应用A跳转到应用B后,应用A的session立马就失效了。
最近在Linux上的Weblogic上创建自己的Machine时,发现监控的nodeManager的状态一直是异常的。经查找资料发现,在启动nodeManager时使用到的配置中默认是启用了安全访问协议的,即SecureListener=true。
整合Cas 目录 1.1 配置登录认证 1.1.1 配置AuthenticationEntryPoint 1.1.2 配置CasAuthenticationFilter 1.1.3 配置AuthenticationManager 1.2 单点登出 1.3 使用代理 1.3.1 代理端 1.3.2 被代理端 1.3.3 既为代理端又为被代理端 众所周知,Cas是对单点登录的一种实现。
对Acl的支持 目录 1.1 准备工作 1.2 表功能介绍 1.2.1 表acl_sid 1.2.2 表acl_class 1.
Log4j分级别记录日志文件 在记录日志的时候通常我们都希望不同级别的日志能够分别记录在不同的日志文件中,然后有一个汇总的日志文件记录所有的日志信息,因为在大多数情况下我们可能只会关注那些Error级别的日志信息。
Cxf拦截器中获取当前请求的参数 有的时候我们的工程里面会有很多的Webservice服务,我们可能出于某种原因可能需要对每个请求实现特定的逻辑,比如说对参数的有效性进行校验,这种逻辑往往是通过Cxf的拦截器来实现的,这个时候就需要获取Webservice服务的当前请求参数。
Cxf获取Http对象 目录 1.1 服务实现类中 1.1.1 通过MessageContext获取 1.1.2 通过Message获取 1.2 拦截器中 有的时候我们可能需要在Webservice中获取Http元素,包括HttpServletRequest和HttpServletResponse等。
Jsp标签 目录 1.1 authorize 1.2 authentication 1.3 accesscontrollist Spring Security也有对Jsp标签的支持的标签库。
基于方法的权限控制 目录 1.1 intercept-methods定义方法权限控制 1.2 使用pointcut定义方法权限控制 1.3 使用注解定义方法权限控制 1.
Web环境使用相对路径发布Webservice 通常我们的Webservice服务的发布地址都将是一个相对路径,在与Spring一起使用时我们需要引入Cxf配置Webservice的schema,如jaxws,用以定义对应的Webservice。