Spring 扩展 - ApplicationContext注入
  h9htfs4cnhmS 2023年11月02日 22 0

@Autowired

使用@Autowired 标签注入ApplicationContext

package com.tntxia.bean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class User {
    @Autowired
    private ApplicationContext applicationContext;

    public void show() {
        System.out.println("User:"+applicationContext.getClass());
    }
}


实现ApplicationContextAware接口

package com.tntxia.bean;

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

@Component
public class Book implements ApplicationContextAware {
    private ApplicationContext applicationContext;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.applicationContext=applicationContext;
    }

    public void show() {
        System.out.println("book:"+applicationContext.getClass());
    }
}


Spring 4.3 新特性,直接在构造方法注入

package com.tntxia.bean;

import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;

@Component
public class Bank {
    private ApplicationContext applicationContext;
    //spring 4.3 提供,与构造方法调用有关
    public Bank(ApplicationContext applicationContext) {
        this.applicationContext=applicationContext;
    }
    public void show() {
        System.out.println("bank:"+applicationContext.getClass());
    }
}

测试

package com.tntxia;

import com.tntxia.bean.Bank;
import com.tntxia.bean.Book;
import com.tntxia.bean.User;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class App {

	public static void main(String[] args) {
		AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.tntxia.bean");

		User bean = (User) context.getBean("user");
		bean.show();
		Book bean2 = (Book) context.getBean("book");
		bean2.show();
		Bank bean3 = (Bank) context.getBean("bank");
		bean3.show();
		context.close();
	}

}

运行结果:

Spring 扩展 - ApplicationContext注入_spring

说明,三个Bean都可以取到ApplicationContext

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  2nTRIltqfA7y   2023年12月23日   27   0   0 MVCspringMVCspring
  MaQcYKL86nCD   2023年12月22日   44   0   0 springspring
h9htfs4cnhmS