zoukankan      html  css  js  c++  java
  • 【Spring学习笔记-3.1】让bean获取spring容器上下文(applicationContext.xml)

    让bean获取spring容器(applicationContext.xml)

    一、继承 ApplicationContextAware接口
    只需要让java类继承 ApplicationContextAware 接口,并实现方法setApplicationContext
    即可获取spring容器自身 ;


    Person.java
    1. package org.crazyit.app.service;
    2. import org.springframework.context.*;
    3. import org.springframework.beans.BeansException;
    4. import java.util.Locale;
    5. public class Person implements ApplicationContextAware
    6. {
    7. // 将BeanFactory容器以成员变量保存
    8. private ApplicationContext ctx;
    9. /* Spring容器会检测容器中所有Bean,如果发现某个Bean实现了ApplicationContextAware接口,
    10. Spring容器会在创建该Bean之后,自动调用该方法,调用该方法时,
    11. 会将容器本身作为参数传给该方法。*/
    12. public void setApplicationContext(ApplicationContext ctx)
    13. throws BeansException
    14. {
    15. this.ctx = ctx;
    16. }
    17. public void sayHi(String name)
    18. {
    19. System.out.println(ctx.getMessage("hello" , new String[]{name}
    20. , Locale.getDefault())); //使用spring容器获取国际化文件中"hello,{0}"
    21. }
    22. }



    配置文件beans.xml
    在该文件中配置了一个国际化资源文件message1 ==>message1_zh_CN.properities

    1. <?xml version="1.0" encoding="GBK"?>
    2. <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xmlns="http://www.springframework.org/schema/beans"
    4. xsi:schemaLocation="http://www.springframework.org/schema/beans
    5. http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">
    6. <!-- 加载容器国际化所需要的语言资源文件 -->
    7. <bean id="messageSource"
    8. class="org.springframework.context.support.ResourceBundleMessageSource">
    9. <property name="basenames">
    10. <list>
    11. <value>message1</value>
    12. </list>
    13. </property>
    14. </bean>

    15. <!-- Spring容器会检测容器中所有Bean,如果发现某个Bean实现了
    16. ApplicationContextAware接口,Spring容器会在创建该Bean之后,
    17. 自动调用该Bean的setApplicationContext()方法,调用该方法时,
    18. 会将容器本身作为参数传给该方法。-->
    19. <bean id="person" class="org.crazyit.app.service.Person"/>
    20. </beans>

    国际化资源文件



    测试代码:SpringTest.java

    1. package lee;
    2. import java.io.*;
    3. import org.springframework.context.*;
    4. import org.springframework.context.support.*;
    5. import org.crazyit.app.service.*;
    6. public class SpringTest
    7. {
    8. public static void main(String[] args)throws Exception
    9. {
    10. ApplicationContext ctx = new
    11. ClassPathXmlApplicationContext("beans.xml");
    12. Person p = ctx.getBean("person" , Person.class);
    13. p.sayHi("孙悟空");
    14. }
    15. }


    运行结果:






  • 相关阅读:
    测试计划
    团队项目需求分析
    团队成员分工及绩效评估
    结对项目之五子棋游戏
    .net web service 参数类型
    ipad webapp 左右分栏 webview的问题
    研究生阶段开始认真写Blog
    [小明学Shader]15.基于Grid的地形混合shader
    [Unity]浅谈AssetBundle的依赖关系打包与加载
    [小明学Shader]光栅化渲染器
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/4378135.html
Copyright © 2011-2022 走看看