Spring(十一) 国际化
参考文献
Spring国际化使用场景
普通国际化文案
Bean Validation校验国际化文案
Web站点页面渲染
Web MVC错误消息提示
Spring国际化接口
核心接口: org.springframework.context.MessageSource
12345678910111213141516171819public interface MessageSource { /** * 获取国际化信息 * @param code 表示国际化资源中的属性名; * @param args用于传递格式化串占位符所用的运行期参数; * @param defaultMessage 当在资源找不到对应属性名时,返回defaultMessage参数所指定的默认信息; * @param locale 表示本地化对象 */ @Nullable String getMessage(String code, @Nullable Object[] args, @Nullable String defaultMessage, Locale locale); /* ...
Spring(十) Resource资源管理
参考文献
Java标准资源管理
Java标准资源定位
职责
说明
面向资源
文件系统,artifact(jar,war,ear文件)以及远程资源(HTTP,FTP等)
API整合
java.lang.ClassLoader#getResource,java.io.File或java.net.URL
资源定位
java.net.URL或java.net.URI
面向流式存储
java.net.URLConnection
协议扩展
java.net.URLStreamHandler或java.net.URLStreamHandlerFactory
Java URL 协议扩展
基于java.net.URLStreamHandlerFactory
基于 java.net.URLStreamHandlerFactory 扩展协议
基于java.net.URLStreamHandler
JDK 1.8内建协议实现
协议
实现类
file
sun.net.www.protocol.file.Handler
ftp
sun. ...
Spring(九) ConfigurationMetadata配置元信息
Spring配置元信息
Spring Bean 配置元信息 - BeanDefinition
Spring Bean 属性元信息 - PropertyValues
Spring 容器配置元信息
Spring 外部化配置元信息 - PropertySource
Spring Profile 元信息 - @Profile
Spring Bean 配置元信息
GenericBeanDefinition:通用型 BeanDefinition
RootBeanDefinition:无 Parent 的 BeanDefinition 或者合并后 BeanDefinition
AnnotatedBeanDefinition:注解标注的 BeanDefinition
Spring Bean 属性元信息
可修改实现 - MutablePropertyValues
元素成员 - PropertyValue
Bean 属性上下文存储 - AttributeAccessor
Bean 元信息元素 - BeanMetadataElement
Spring 容器配置元信息
Spring ...
Spring(七) Bean作用域
参考文献
Bean Scopes
作用域
来源
说明
singleton
默认 Spring Bean 作用域,一个 BeanFactory 有且仅有一个实例
prototype
原型作用域,每次依赖查找和依赖注入生成新 Bean 对象
request
将 Spring Bean 存储在 ServletRequest 上下文中; Only valid in the context of a web-aware Spring ApplicationContext.
session
将 Spring Bean 存储在 HttpSession 中 ; Only valid in the context of a web-aware Spring ApplicationContext.
application
将 Spring Bean 存储在 ServletContext 中; Only valid in the context of a web-aware Spring ApplicationContext.
websocket
将 Spring Be ...
Spring(四) IoC依赖来源
依赖查找的来源
查找来源
来源
配置元信息
Spring BeanDefinition
<bean id=“user” class=“…User”>
@Bean public User user(){…}
BeanDefinitonBuilder
单例对象
API实现
Spring 内建BeanDefinition
Bean名称
Bean实例
使用场景
org.springframework.context.annotation.internalConfigurationAnnotationProcessor
ConfigurationClassPostProcessor
处理Spring配置
org.springframework.context.annotation.internalAutowiredAnnotationProcessor
AutowiredAnnotationBeanPostProcessor
处理@Autowired以及@Value
org.springframework.contex ...
Spring(三) BeanDefinition
Spring BeanDefinition
BeanDefinition是SpringFramework中定义Bean的配置元信息接口,包含:
Bean的类名;
Bean行为配置元素,如作用域,自动绑定模式,生命周期回调等;
其他Bean引用,又可称为合作者(collaborators)或者依赖(dependencies);
配置设置,比如Bean属性(Properties);
BeanDefinition元信息
属性(Property)
说明
Class
Bean全类名,必须是具体类,不能用抽象类或接口
Name
Bean的名称或ID
Scope
Bean的作用域(如,Singleton,Prototype等)
Constructor arguments
Bean构造器参数(用于依赖注入)
Properties
Bean属性设置(用于依赖注入)
Autowiring mode
Bean自动绑定模式(如:通过名称byName)
Lazy initialization mode
Bean延迟初始化模式(延迟和非延迟)
Initializ ...
Linux-环境变量配置
参考文献
Linux环境变量配置全攻略
在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法.
下面所有例子的环境说明如下:
系统:Ubuntu 14.0
用户名:uusama
需要配置MySQL环境变量路径:/home/uusama/mysql/bin
Linux读取环境变量
读取环境变量的方法:
export命令显示当前系统定义的所有环境变量
echo $PATH命令输出当前的PATH环境变量的值
env 查看所有默认的环境变量
set |more 要查看所有环境变量,包括 shell 变量、本地变量和 shell 函数(如任何用户定义的变量和命令别名)
这两个命令执行的效果如下
123456789101112131415uusama@ubuntu:~$ exportdeclare -x HOME="/home/uusama"declare -x LANG="en_US.UTF-8"declare -x LANGUAGE="en_US:"declare ...
Java并发编程(十)-ThreadLocal
参考文献
【对线面试官】ThreadLocal
JAVA并发编程实战
Spring 4.3: Using a TaskDecorator to copy MDC data to @Async threads
从ThreadLocal到InheritThreadLocal再到阿里的TransmittableThreadLocal,吊打面试官
ThreadLocal
它运行你将每个线程与持有数值的对象关联在一起.ThreadLocal提供了get与set访问器,为每个使用它的线程维护一份单独的拷贝.所以get总是返回由当前执行线程通过set设置的最新值.
一种解决多线程环境下成员变量的问题的方案,但是与线程同步无关.其思路是为每一个线程创建一个单独的变量副本,从而每个线程都可以独立地改变自己所拥有的变量副本,而不会影响其他线程所对应的副本
线程本地(ThreadLocal)变量通常用与基于可变的单体(Singleton)或全局变量的设计中,出现(不正确的)共享.
比如说,一个单线程的应用程序可能会维护一个全局的数据连接,这个Connection在启动时就已经被初始化了.这 ...
Java基础-基础理论
基础概念
Java和JVM的历史
1996年SUN JDK1.0 Classic VM
纯解释运行,使用外挂进行JIT
1997年 JDK1.1发布
AWT
内部类
JDBC
RMI
反射
1998年 JDK1.2 Solaris Exact VM
JDK1.2开始称为Java2,三个版本J2SE,J2EE,J2ME
JIT解释器混合
Accutane Memory Management 精确内存管理,数据类型敏感
提示GC性能
2000年 JDK1.3 Hotspot作为默认虚拟机发布
2002年 JDK1.4 Classic VM退出历史舞台
Assert
正则表达式
NIO
IPV6
日志API
加密类库
2004年 JDK1.5
泛型
注释
枚举
可变长的参数
装箱
Foreach循环
JDK1.6
脚本语言支持
JDBC4.0
Java解释器API
2011年 JDK7
延期项目推迟到JDK8
G1
动态语言增强
64位系统中的压缩指针
NIO2.0
泛型实例化简写
try-with-resource
2014年 JDK8
La ...
Spring(五) 依赖查找
依赖查找方式
单一类型依赖查找接口BeanFactory
根据Bean名称查找
getBean(String beanName)
Spring 2.5覆盖默认参数: getBean(String,Object...)
根据Bean类型查找
实时查找
Spring 3.0 getBean(Class)
Spring4.1覆盖默认参数: getBean(Class,Object...)
延迟查找
getBeanProvider(Class)
getBeanProvider(ResolvableType)
根据Bean名称+类型查找 getBean(String,Class)
集合类型依赖查找接口 ListBeanFactory
根据Bean类型查找
获取同类型Bean名称列表
getBeanNamesForType(Class)
Spring 4.2 getBeanNamesForType(ResolvableType)
获取同类型Bean实例列表
getBeansOfType(Class)以及重载方法
根据注解类型查找
Spring 3.0 获取标注 ...