非注解方式获取spring bean对象以及配置值

0 概述

spring bean对象可以通过@Autowired 或者@Resource等注解方式获取;spring配置值可以通过@Value注解获取。通过注解方式获取很方便,但是有一定局限 。本文主要介绍通过非注解的方法获取bean对象以及配置方法。

1 获取bean 对象

获取bean 对象主要是获取Spring 容器的上下文

package com.hsc.spring.study.context;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * Created by hsc on 17/4/9.
 */
@Component
public class SpringContext implements ApplicationContextAware{
    //Spring应用上下文环境
    private static ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContext.applicationContext = applicationContext;
    }
    /**
     * 获取对象
     *
     * @param name
     * @return Object 一个以所给名字注册的bean的实例
     * @throws BeansException
     */
    public static Object getBean(String name) throws BeansException {
        return applicationContext.getBean(name);
    }
}

SpringContext 生成bean对象后,就可以使用静态方法获取bean对象了。

2 获取 配置值

package com.hsc.spring.study.context;

import org.springframework.context.EmbeddedValueResolverAware;
import org.springframework.stereotype.Component;
import org.springframework.util.StringValueResolver;

/**
 * Created by hsc on 17/4/9.
 */
@Component
public class PropertiesUtils implements EmbeddedValueResolverAware {
    private static StringValueResolver valueResolver;

    @Override
    public void setEmbeddedValueResolver(StringValueResolver stringValueResolver) {
        this.valueResolver = stringValueResolver;
    }

    public static String getPropertiesValue(String name) {
        return valueResolver.resolveStringValue(name);
    }

}

值得强调是:获取配置值键要使用如下写法${key}

3 实例

spring-test.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.hsc.spring.study"/>

    <bean id="cachePropertyConfigurer"
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="order" value="2" />
        <property name="ignoreUnresolvablePlaceholders" value="true" />
        <property name="locations">
            <list>
                <value>classpath*:config.properties</value>
            </list>
        </property>
    </bean>

</beans>

config.properties 配置文件

auth_key=hsc

测试程序

import com.hsc.spring.study.context.PropertiesUtils;
import com.hsc.spring.study.context.SpringContext;
import com.hsc.spring.study.entity.User;
import com.hsc.spring.study.service.test.UserService;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * Created by hsc on 17/4/9.
 */
public class Test {
    public static void main(String[] args) throws Exception {
        ApplicationContext context = new ClassPathXmlApplicationContext("spring-test.xml");
        UserService userService = (UserService) SpringContext.getBean("userService");
        User user = userService.getUserByName("test");
        System.out.println(user.getName());
        System.out.println(PropertiesUtils.getPropertiesValue("${auth_key}"));

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值