1. 直接注入applicationcontext
@service
public class myservice {
@autowired
private applicationcontext applicationcontext;
public void dosomething() {
// 通过applicationcontext获取bean
userservice userservice = applicationcontext.getbean(userservice.class);
// 或者通过名称获取
userservice userservice2 = (userservice) applicationcontext.getbean("userservice");
}
}
2. 实现applicationcontextaware接口
@component
public class springcontextutil implements applicationcontextaware {
private static applicationcontext applicationcontext;
@override
public void setapplicationcontext(applicationcontext context) throws beansexception {
applicationcontext = context;
}
public static applicationcontext getapplicationcontext() {
return applicationcontext;
}
public static <t> t getbean(class<t> clazz) {
return applicationcontext.getbean(clazz);
}
public static <t> t getbean(string name, class<t> clazz) {
return applicationcontext.getbean(name, clazz);
}
public static object getbean(string name) {
return applicationcontext.getbean(name);
}
}
3. 通过springapplication.run()获取applicationcontext
@springbootapplication
public class application {
public static void main(string[] args) {
// 启动应用并获取applicationcontext
applicationcontext context = springapplication.run(application.class, args);
// 直接从context中获取bean
userservice userservice = context.getbean(userservice.class);
userservice.dosomething();
}
}
4. 通过beanfactory获取
@service
public class myservice {
@autowired
private beanfactory beanfactory;
public void dosomething() {
if (beanfactory.containsbean("userservice")) {
userservice userservice = (userservice) beanfactory.getbean("userservice");
// 使用userservice
}
}
}
5. 通过实现beanfactoryaware接口
@component
public class mycomponent implements beanfactoryaware {
private beanfactory beanfactory;
@override
public void setbeanfactory(beanfactory beanfactory) throws beansexception {
this.beanfactory = beanfactory;
}
public void dosomething() {
userservice userservice = (userservice) beanfactory.getbean("userservice");
// 使用bean
}
}
到此这篇关于spring boot中获取ioc容器的多种方式的文章就介绍到这了,更多相关springboot 获取ioc容器内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论