`

Spring接口学习

 
阅读更多
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的视频教程,由尚硅谷出品,内容详实且易于理解,是学习SpringCloud的理想资料。 一、...

    详尽的Spring2.0学习提纲

    3. Spring与Spring Data JPA:使用Spring Data JPA简化JPA操作,通过Repository接口实现CRUD。 七、实战项目 1. 创建Spring项目:从零开始构建一个简单的Spring MVC应用,涉及配置、控制器、视图和数据库访问。 2. ...

    Spring3.3学习案例

    《Spring 3.3 学习案例:深度解析SpringMVC与Mybatis集成》 Spring框架作为Java领域中最为广泛使用的轻量级框架之一,深受开发者喜爱。Spring 3.3版本是其历史上的一个重要里程碑,它提供了丰富的功能和完善的服务...

    spring2.0学习的案例

    3. **Bean的生命周期**: Spring提供了对Bean生命周期的管理,包括初始化方法、销毁方法、作用域(如单例、原型等)、以及各种回调接口,如InitializingBean和DisposableBean。 4. **AOP(Aspect Oriented ...

    SpringCloud微服务接口这么多怎么调试

    本文来自程序猿,本文主要介绍了SpringCloud微服务下服务接口调试及管理,什么样方式可以让微服务的接口管理变得更加容易些,希望对您的学习有所帮助。我们知道在微服务架构下,软件系统会被拆分成很多个独立运行的...

    Spring学习指南

    Spring学习指南是一份提供Spring框架学习资料的文档,由夏昕编写。Spring是一个开源的Java平台,它提供了全面的编程和配置模型。该框架的主要特点是为Java平台提供了一个轻量级的、全功能的开源应用框架,目的是使得...

    Spring框架 学习手册

    Spring框架的学习手册 全面的概括了 spring 的各种接口和方法。各种经典实例帮你更快 个更便捷的学习spring

    cxf+spring接口实例

    在IT行业中,CXF是一个广泛使用的开源框架,用于构建和部署Web服务。它结合了Apache CXF和Spring框架,提供了一种...总之,"CXF+Spring接口实例"是一个很好的学习资源,可以帮助开发者提升在Web服务领域的专业技能。

    SpringCloud学习代码

    这个"SpringCloud学习代码"压缩包包含了多个关键组件的示例,让我们逐一深入探讨这些组件及其用法。 首先,Zuul是SpringCloud的一个边缘服务和API网关。它作为系统的统一入口,负责路由转发、动态过滤、安全控制等...

    发布webService服务接口与spring整合教程

    本教程将详细讲解如何将Web Service服务接口与Spring框架进行整合,以便在实际开发中实现高效、灵活的服务提供。 首先,让我们了解一下Web Service的基本概念。Web Service是一种软件系统,它通过使用开放标准(如...

    Spring核心学习IOC部分

    本学习资料主要聚焦于Spring的IOC容器,特别是从最基本的BeanFactory开始,逐步深入理解如何构建一个类似Spring功能的系统。 首先,BeanFactory是Spring的最基本容器,它负责管理对象(也称为Bean)。BeanFactory...

    spring 学习

    2. **BeanFactory**:这是Spring IoC容器的根接口,负责配置、管理各个Bean的实例化和依赖关系。 3. **ApplicationContext**:这是BeanFactory的扩展,除了BeanFactory的所有功能外,还增加了支持国际化、资源访问...

    Spring学习笔记+学习源码.zip

    这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...

    Spring框架学习.pdf

    此外,Spring强调面向对象的设计,并且支持面向接口编程,这样做可以降低编程的复杂度,尤其是接口的使用可以降低到零。 代码的可测试性在Spring框架中也得到了很大的重视。Spring通过依赖注入(DI)等机制帮助...

    Spring.MVC学习指南.pdf

    这份“Spring.MVC学习指南.pdf”很可能是为了帮助开发者深入理解和掌握Spring MVC的核心概念、工作原理以及实践技巧。下面将详细阐述Spring MVC的相关知识点。 1. **核心组件**: - **DispatcherServlet**:Spring...

    Java Spring学习路线.pdf

    - 接着是创建接口和类,将实现类交给Spring进行管理。 - IOC和DI(依赖注入)是Spring中密切相关的概念。通过XML配置和注解方式实现依赖注入。 #### Spring工厂类 Spring工厂类包括BeanFactory和ApplicationContext...

    spring2.0学习源码

    Spring 2.0支持了对构造器、setter方法和接口的自动装配,同时增加了@Required和@Autowired注解。@Required表示该属性必须通过DI进行设置,而@Autowired则可以根据类型或名称自动匹配依赖,极大地减少了手动配置的...

    Java Spring框架学习笔记(内附源码).pdf

    事务管理是企业级应用开发中的一个重要方面,Spring框架提供了统一的事务管理接口和多种事务管理实现。无论是使用声明式事务管理还是编程式事务管理,Spring都能够提供强大的事务支持,让开发者更加专注于业务逻辑的...

    Spring学习笔记(精华全记录)

    ### Spring学习笔记(精华全记录) #### Spring框架概述 Spring框架源自Rod Johnson的个人项目,最初于2002年末发布。Spring并非一开始就作为一个完整的框架出现,而是从一个项目逐步发展而来。随着项目的成熟,...

Global site tag (gtag.js) - Google Analytics