• 【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. }


    运行结果:






  • 相关阅读:
    dhcp服务配置
    配置一台时间服务器
    创建kvm虚拟机
    实现跳板机
    双向同步使用unison
    17、 Shell脚本题:编写个shell脚本将当前目录下大于10K的文件转移到/tmp目录下。
    find 命令
    权限管理:建立一个经理组
    使用sudo命令
    [转]tftp在put上传的时候显示File not found的解决办法
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/4378135.html
Copyright © 2020-2023  润新知