Bean
?Предисловие: Эта статья предназначена только для новичков в отрасли, избегайте ее, если вы являетесь экспертом.
Когда мы используем Spring для разработки программ,Spring предоставляет очень удобный метод управления объектами.,Прямо сейчасIOC
,Он также предоставляет очень дружелюбный и удобный метод внедрения объектов.DI
,
Пока это класс, управляемый контейнером Spring.,ты можешь использовать@Resource
или@Autowired
Аннотации будутSpringКлассы, управляемые контейнером, внедряются в。
пока это называетсяBean
КлассSpring
Классы, управляемые контейнером。
Если не поняли, можете прочитать эту статью в сокращении: Несколько способов передать bean-компоненты в управление контейнерами Spring
Иногда нам просто нужно побывать в АфрикеSpring
Используется в управляемых классахBean
Что делать?
«Невозможно, редко» «Неприкасаемый»
Многие новые сотрудники могут так думать, но! Позвольте мне сказать вам, это используется во многих ситуациях.
Например, моя статья:
Объект внедрения @Autowired нельзя использовать в классе реализации WebSocket.
Мы определяем класс контекста,существоватьSpring
ВоляBean
После завершения всех сканирований,Давайте использовать классы для реализацииApplicationContextAware
интерфейс,переписатьsetApplicationContext
метод,ПолучатьApplicationContext
После данных,в статическое свойство.
package cn.donglifeng.shop.common.context;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
/**
* @author JanYork
* @date 2023/3/8 9:33
* @description Контекст SpringBean
*/
@Component
public class SpringBeanContext implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(@NonNull ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
/**
* Получить контекст
*
* @return контекстный объект
*/
public static ApplicationContext getContext() {
return context;
}
/**
* Получить компонент на основе имени beanName
*
* @param beanName имя компонента
* @return объект компонента
*/
public Object getBean(String beanName) {
return context.getBean(beanName);
}
/**
* Получить bean-компонент на основе beanName и типа
*
* @param beanName имя компонента
* @param clazz тип боба
* @param <T> тип боба
* @return объект компонента
*/
public <T> T getBean(String beanName, Class<T> clazz) {
return context.getBean(beanName, clazz);
}
/**
* Получите бобы в зависимости от типа
*
* @param clazz тип боба
* @param <T> тип боба
* @return объект компонента
*/
public <T> T getBean(Class<T> clazz) {
return context.getBean(clazz);
}
}
Код очень простой, изучите его самостоятельно.