Spring 面試題 -Bean方向
1、什么是Spring,談談你對spring的理解
必須要有IOC和AOP;
2、談談你對Spring IOC和AOP的理解;
IOC:將創(chuàng)建對象的控制權交給Spring來進行管理。
AOP:面向切面編程。核心是代理
接下來就有兩個問的方向一個是bean,一個是AOP
3、bean有哪幾種使用(裝配)方式;
????1、xml直接配置Bean
????<bean id="xx"class="xx.xxx.x"></bean>
????2、@Component(@Controller,@Service,@Respository)等注解來
????3、基于類的java Config里面使用@Bean注解來配置
4、spring中Bean的作用域有哪些;*
????1、singleton:唯一bean實例,Spring中的bean默認都是單例的。
????2、prototype:每次請求都會創(chuàng)建一個新的bean實例。
????3、request:每一次HTTP請求都會產(chǎn)生一個新的bean,該bean僅在當前HTTPrequest內(nèi)有效。
????4、session:每一次HTTP請求都會產(chǎn)生一個新的bean,該bean僅在當前HTTPsession內(nèi)有效。
????5、global-session:全局session作用域,僅僅在基于portlet的web應用中才有意義,Spring5已經(jīng)沒有了
5、Spring的Bean是線程安全的嗎;
????Spring容器本身并沒有提供Bean的線程安全策略,基本是看bean是否是有無狀態(tài),(有狀態(tài)就是有存儲數(shù)據(jù)的功能)
????無狀態(tài)就是線程安全的;
????有狀態(tài)就是線程不安全的;(保證數(shù)據(jù)線程安全)
????對于有狀態(tài)的bean,Spring官方提供的bean,一般提供了通過ThreadLocal去解決線程安全的方法;
6、Spring中的bean生命周期;*
Spring啟動,查找并加載需要被Spring管理的bean,進行Bean的實例化
Bean實例化后對將Bean的引入和值注入到Bean的屬性中
如果Bean實現(xiàn)了BeanNameAware接口的話,Spring將Bean的Id傳遞給setBeanName()方法
如果Bean實現(xiàn)了BeanFactoryAware接口的話,Spring將調(diào)用setBeanFactory()方法,將BeanFactory容器實例傳入
如果Bean實現(xiàn)了ApplicationContextAware接口的話,Spring將調(diào)用Bean的setApplicationContext()方法,將bean所在應用上下文引用傳入進來。
如果Bean實現(xiàn)了BeanPostProcessor接口,Spring就將調(diào)用他們的postProcessBeforeInitialization()方法。
如果Bean 實現(xiàn)了InitializingBean接口,Spring將調(diào)用他們的afterPropertiesSet()方法。類似的,如果bean使用init-method聲明了初始化方法,該方法也會被調(diào)用
如果Bean 實現(xiàn)了BeanPostProcessor接口,Spring就將調(diào)用他們的postProcessAfterInitialization()方法。
此時,Bean已經(jīng)準備就緒,可以被應用程序使用了。他們將一直駐留在應用上下文中,直到應用上下文被銷毀。
如果bean實現(xiàn)了DisposableBean接口,Spring將調(diào)用它的destory()接口方法,同樣,如果bean使用了destory-method 聲明銷毀方法,該方法也會被調(diào)用。
記的時候,可以大致分成四大步; (基本都是會背會說)
Bean的實例化階段
Bean的設置屬性階段
Bean的 初始化階段
Bean的銷毀階段
7、BeanFactory和FactoryBean的區(qū)別;
????1、BeanFactory是個bean 工廠,是一個工廠類(接口), 它負責生產(chǎn)和管理Bean的一個工廠 是ioc 容器最底層的接口,是個IOC容器,是Spring用來管理和裝配普通Bean的IOC容器
????2、FactoryBean是個bean,在IOC容器的基礎上給Bean的實現(xiàn)加上了一個簡單工廠模式和裝飾模式,是一個可以生產(chǎn)對象和裝飾對象的工廠Bean;
8、Spring如何解決循環(huán)依賴問題;*
這個一般屬于高級開發(fā)面試題
以上內(nèi)容僅供參考,請合理利用搜索引擎!