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


    运行结果:






  • 相关阅读:
    ETL之Kettle
    java 之webmagic 网络爬虫
    【AC自动机】【树状数组】【dfs序】洛谷 P2414 [NOI2011]阿狸的打字机 题解
    【AC自动机】【字符串】【字典树】AC自动机 学习笔记
    【前缀和】【two-pointer】【贪心】洛谷 P3143 [USACO16OPEN]钻石收藏家Diamond Collector 题解
    【KMP】【矩阵加速】【递推】洛谷 P3193 [HNOI2008]GT考试 题解
    【KMP】洛谷P2375 [NOI2014]动物园 题解
    【KMP】【字符串】KMP字符串匹配算法 学习笔记
    【DP】+【贪心】【前缀和】洛谷P2893 [USACO08FEB]修路Making the Grade 题解
    【字典树】【树】【二进制】bzoj1954/POJ3764The xor-longest Path 题解
  • 原文地址:https://www.cnblogs.com/ssslinppp/p/4378135.html
Copyright © 2011-2022 走看看