1.ApplicationContextAware的使用
实现ApplicationContextAware接口,实现setApplicationContext方法,就可以在程序中获取bean的一些基本信息。
1.1 实现ApplicationContextAware接口的工具类定义
package com.test.utils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Created by yangjianzhou on 7/2/15.
*/
@Component
public class SpringContextUtil implements ApplicationContextAware {
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*
* @param applicationContext
* @throws BeansException
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 获取对象
*
* @param beanClass
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(Class<?> beanClass) throws BeansException {
return applicationContext.getBean(beanClass);
}
/**
* 获取类型为requiredType的对象
* 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)
*
* @param name
* bean注册名
* @param requiredType
* 返回对象类型
* @return Object 返回requiredType类型对象
* @throws BeansException
*/
public static Object getBean(String name, Class<?> requiredType) throws BeansException {
return applicationContext.getBean(name, requiredType);
}
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
*
* @param name
* @return boolean
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
* 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
*
* @param name
* @return boolean
* @throws NoSuchBeanDefinitionException
*/
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
/**
* @param name
* @return Class 注册对象的类型
* @throws NoSuchBeanDefinitionException
*/
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
/**
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
*
* @param name
* @return 别名数组
* @throws NoSuchBeanDefinitionException
*/
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}
1.2 定义bean
package com.test.domain;
/**
* Created by yangjianzhou on 9/22/15.
*/
public class UserInfo {
private String name ;
private String password ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1.3 在XML中声明Bean
<bean id="userInfo" class="com.test.domain.UserInfo">
<property name="name" value="yangjianzhou"/>
<property name="password" value="123456"/>
</bean>
1.4 获取bean的基本信息
UserInfo userInfo = (UserInfo)SpringContextUtil.getBean("userInfo");
System.out.println(userInfo.getName());
2.InitializingBean的使用
实现InitializingBean接口,实现afterPropertiesSet方法,可以对bean的属性进行改变
2.1实现类
package com.test.domain;
import org.springframework.beans.factory.InitializingBean;
/**
* Created by yangjianzhou on 9/22/15.
*/
public class UserInfo implements InitializingBean{
private String name ;
private String password ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public void afterPropertiesSet() throws Exception {
this.name = "dbuser";
}
}
2.2 xml中定义Bean
<bean id="userInfo" class="com.test.domain.UserInfo">
<property name="name" value="yangjianzhou"/>
<property name="password" value="123456"/>
</bean>
2.3 测试
UserInfo userInfo = (UserInfo)SpringContextUtil.getBean("userInfo");
System.out.println(userInfo.getName());
3.TransactionSynchronizationManager的使用
在本事务结束之后开启一个事务,一般用一个异步线程开启一个事物,这样就不至于阻塞主线程
tradeRecordDao.queryById(0l);
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronizationAdapter() {
@Override
public void afterCommit() {
asyncEventBus.post(new FundSettleEvent(settleId));
}
});
4.在java代码和XML文件中声明Bean,则只使用XML中的Bean
4.1 java代码中声明Bean
package com.test.domain;
import org.springframework.stereotype.Component;
/**
* Created by yangjianzhou on 9/22/15.
*/
@Component
public class UserInfo {
private String name ;
private String password ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.2 xml中声明Bean
<bean id="userInfo" class="com.test.domain.UserInfo">
<property name="name" value="yangjianzhou"/>
<property name="password" value="123456"/>
</bean>
- 大小: 8 KB
分享到:
相关推荐
《SpringCloud视频学习》 SpringCloud作为微服务架构的重要实现框架,深受广大开发者的喜爱。本资源包含了两部关于SpringCloud的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...
3. Spring与Spring Data JPA:使用Spring Data JPA简化JPA操作,通过Repository接口实现CRUD。 七、实战项目 1. 创建Spring项目:从零开始构建一个简单的Spring MVC应用,涉及配置、控制器、视图和数据库访问。 2. ...
《Spring 3.3 学习案例:深度解析SpringMVC与Mybatis集成》 Spring框架作为Java领域中最为广泛使用的轻量级框架之一,深受开发者喜爱。Spring 3.3版本是其历史上的一个重要里程碑,它提供了丰富的功能和完善的服务...
3. **Bean的生命周期**: Spring提供了对Bean生命周期的管理,包括初始化方法、销毁方法、作用域(如单例、原型等)、以及各种回调接口,如InitializingBean和DisposableBean。 4. **AOP(Aspect Oriented ...
本文来自程序猿,本文主要介绍了SpringCloud微服务下服务接口调试及管理,什么样方式可以让微服务的接口管理变得更加容易些,希望对您的学习有所帮助。我们知道在微服务架构下,软件系统会被拆分成很多个独立运行的...
Spring学习指南是一份提供Spring框架学习资料的文档,由夏昕编写。Spring是一个开源的Java平台,它提供了全面的编程和配置模型。该框架的主要特点是为Java平台提供了一个轻量级的、全功能的开源应用框架,目的是使得...
Spring框架的学习手册 全面的概括了 spring 的各种接口和方法。各种经典实例帮你更快 个更便捷的学习spring
在IT行业中,CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它结合了Apache CXF和Spring框架,提供了一种...总之,"CXF+Spring接口实例"是一个很好的学习资源,可以帮助开发者提升在Web服务领域的专业技能。
这个"SpringCloud学习代码"压缩包包含了多个关键组件的示例,让我们逐一深入探讨这些组件及其用法。 首先,Zuul是SpringCloud的一个边缘服务和API网关。它作为系统的统一入口,负责路由转发、动态过滤、安全控制等...
本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中实现高效、灵活的服务提供。 首先,让我们了解一下Web Service的基本概念。Web Service是一种软件系统,它通过使用开放标准(如...
本学习资料主要聚焦于Spring的IOC容器,特别是从最基本的BeanFactory开始,逐步深入理解如何构建一个类似Spring功能的系统。 首先,BeanFactory是Spring的最基本容器,它负责管理对象(也称为Bean)。BeanFactory...
2. **BeanFactory**:这是Spring IoC容器的根接口,负责配置、管理各个Bean的实例化和依赖关系。 3. **ApplicationContext**:这是BeanFactory的扩展,除了BeanFactory的所有功能外,还增加了支持国际化、资源访问...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
此外,Spring强调面向对象的设计,并且支持面向接口编程,这样做可以降低编程的复杂度,尤其是接口的使用可以降低到零。 代码的可测试性在Spring框架中也得到了很大的重视。Spring通过依赖注入(DI)等机制帮助...
这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...
- 接着是创建接口和类,将实现类交给Spring进行管理。 - IOC和DI(依赖注入)是Spring中密切相关的概念。通过XML配置和注解方式实现依赖注入。 #### Spring工厂类 Spring工厂类包括BeanFactory和ApplicationContext...
Spring 2.0支持了对构造器、setter方法和接口的自动装配,同时增加了@Required和@Autowired注解。@Required表示该属性必须通过DI进行设置,而@Autowired则可以根据类型或名称自动匹配依赖,极大地减少了手动配置的...
事务管理是企业级应用开发中的一个重要方面,Spring框架提供了统一的事务管理接口和多种事务管理实现。无论是使用声明式事务管理还是编程式事务管理,Spring都能够提供强大的事务支持,让开发者更加专注于业务逻辑的...
### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...