1.Bean概述(1)SpringIoC容器管理一个或多个bean,这些bean是根据我们所提供的配置元数据来创建的,在容器内部,BeanDefinition对象就代表了bean的配置元数据,它主要包含了如下几个方面的内容:属性说明Class全限定类名Namebean的名称Scopebean的作用域Constructorarguments构造函数参数Properties成员变量属性值AutowiringMode自动装配模式Lazyinitializationmode懒加载模式InitializationMethod初始化回调DestructionMethod销毁回调(2)一般情况下,Sprin
1.Bean概述(1)SpringIoC容器管理一个或多个bean,这些bean是根据我们所提供的配置元数据来创建的,在容器内部,BeanDefinition对象就代表了bean的配置元数据,它主要包含了如下几个方面的内容:属性说明Class全限定类名Namebean的名称Scopebean的作用域Constructorarguments构造函数参数Properties成员变量属性值AutowiringMode自动装配模式Lazyinitializationmode懒加载模式InitializationMethod初始化回调DestructionMethod销毁回调(2)一般情况下,Sprin
1.通过BeanPostProcessor来自定义bean(1)BeanPostProcessor用于在容器完成了对bean的实例化,配置及初始化后来实现一些自定义逻辑,它是用于操纵由容器创建的每个bean实例的,即在容器实例化了一个bean后以及该bean的初始化回调(如InitializingBean.afterPropertiesSet()等)被执行之前,会将这个bean交由BeanPostProcessor来进行处理。通过BeanPostProcessor,我们可以对bean实例进行任何操作,包括忽略掉后续的初始化回调等,BeanPostProcessor通常用来检查回调接口,或用来生
1.通过BeanPostProcessor来自定义bean(1)BeanPostProcessor用于在容器完成了对bean的实例化,配置及初始化后来实现一些自定义逻辑,它是用于操纵由容器创建的每个bean实例的,即在容器实例化了一个bean后以及该bean的初始化回调(如InitializingBean.afterPropertiesSet()等)被执行之前,会将这个bean交由BeanPostProcessor来进行处理。通过BeanPostProcessor,我们可以对bean实例进行任何操作,包括忽略掉后续的初始化回调等,BeanPostProcessor通常用来检查回调接口,或用来生
1.AOP简介(1)Spring的关键组件之一就是AOP框架,它是对SpringIoC的补充(这意味着如果我们的IOC容器不需要AOP的话就不用引入AOP),此外,AOP亦是对OOP的补充,OOP的关注点在于类,而AOP的关注点在于切面,它可以将分散在不同类不同方法中重复的代码逻辑抽取出来,称之为通知(Advice),然后在运行时通过动态代理技术将“通知”组合进原有对象中,这样就能在实现原有预期效果的情况下达到减少代码冗余的目的(2)在Spring中,AOP主要用于两大方面,一是提供了声明式服务(比如声明式事物管理:@Transactional注解),二是让用户实现自定义切面,实现代码解偶,用
1.AOP简介(1)Spring的关键组件之一就是AOP框架,它是对SpringIoC的补充(这意味着如果我们的IOC容器不需要AOP的话就不用引入AOP),此外,AOP亦是对OOP的补充,OOP的关注点在于类,而AOP的关注点在于切面,它可以将分散在不同类不同方法中重复的代码逻辑抽取出来,称之为通知(Advice),然后在运行时通过动态代理技术将“通知”组合进原有对象中,这样就能在实现原有预期效果的情况下达到减少代码冗余的目的(2)在Spring中,AOP主要用于两大方面,一是提供了声明式服务(比如声明式事物管理:@Transactional注解),二是让用户实现自定义切面,实现代码解偶,用
1.profiles(1)profiles提供了一种在不同环境(Environment)下注册不同的bean的机制,如下//假定现在我们存在开发和生产两个环境,每种环境下ExampleA所需的url都是不同的,那么我们就可以使用@Profile注解,来声明在哪种环境下该注入哪种bean@ConfigurationpublicclassConfig{//development环境下注入该bean@Bean@Profile("development")publicExampleAexampleAForDevelopment(){returnnewExampleA("http://127.0.0.1
1.profiles(1)profiles提供了一种在不同环境(Environment)下注册不同的bean的机制,如下//假定现在我们存在开发和生产两个环境,每种环境下ExampleA所需的url都是不同的,那么我们就可以使用@Profile注解,来声明在哪种环境下该注入哪种bean@ConfigurationpublicclassConfig{//development环境下注入该bean@Bean@Profile("development")publicExampleAexampleAForDevelopment(){returnnewExampleA("http://127.0.0.1
1.@Bean与@Configuration(1)标注于类之上的@Configuration注解与标注于方法之上的@Bean注解是支持基于Java的容器配置的核心,被@Bean注解标注的方法用于实例化bean并将其注入至容器中,它与基于xml配置中的标签起着相同的作用,@Bean可用在任何被@Component注解标注的类中,不过绝大部分情况下它们都被用于被@Configuration注解标注的类中;被@Configuration注解标注的类通常作为bean的定义源,如同基于xml配置中的标签,此外,还可在@Configuration标注的类中配置bean之间的依赖关系,如下//两个普通的类,
1.@Bean与@Configuration(1)标注于类之上的@Configuration注解与标注于方法之上的@Bean注解是支持基于Java的容器配置的核心,被@Bean注解标注的方法用于实例化bean并将其注入至容器中,它与基于xml配置中的标签起着相同的作用,@Bean可用在任何被@Component注解标注的类中,不过绝大部分情况下它们都被用于被@Configuration注解标注的类中;被@Configuration注解标注的类通常作为bean的定义源,如同基于xml配置中的标签,此外,还可在@Configuration标注的类中配置bean之间的依赖关系,如下//两个普通的类,