对spring的ioc的理解及相关的注解整理

对spring的ioc的理解及相关的注解整理

1.聊聊你对spring框架的认识?

spring框架是一种轻量级的开源框架,也就是spring framework主要用于Java企业级应用的开发,其核心为Ioc控制反转和Aop面向切面编程。spring框架还支持很多第三方框架,让开发者能够方便地组合使用各种框架。

2.Ioc控制反转是什么意思?为什么要进行这样的“控制反转”?

控制反转:将对对象的创建的控制交给了ioc容器,而不是原先由代码写死到什么地方new某个对象。我们可以通过xml配置文件或者通过注解的方式来告诉容器,要创建怎样的对象。

进行控制反转的原因:为了降低代码的耦合。

3.详细说一说在实际中如何实现ioc?
(1)xml配置文件

a.创建一个配置文件,例如bean.ml文件

创建bean的第一种:指定id和class,利用该类的空参构造器创建:

<beans>
    <!-- 容器读完配置文件后,会以反射的方式调用Student类的空参构造器去创建bean -->
    <bean id = "student" class = "com.dao.Student"></bean>
</beans>

创建bean的第二种:指定工厂类,和工厂类中的方法来创建:

三要素:id,factory-bean,factory-method

<beans>
    <!--先指定一个工厂bean -->
    <bean id = "myFactory" class = "com.factory.myFactory"></bean>
    <!--再指定具体的bean -->
    <bean id = "fromFactoryBean1" factory-bean = "myFactory" factory-method = "getBean1"> 
    </bean>
</beans>

b.创建可以读该配置文件的容器—ClassPathXmlAplicationContext

ApplicationContext  context = new ClassPathXmlApplicationContext("bean.xml");

c.从容器中再去拿bean

Student student1 = (Student)context.getBean("student");

(2)通过注解

利用@Component,@Service,@Controller,@Repository基础注解,配合@Autowired,@Qualifier,@Value等等注解创建bean并为bean的属性赋值。

然后通过容器读这些注解:

Application context = new AnnotationConfigApplicationContext(配置类.class);

4.bean的作用范围有哪些?

默认情况下,bean的作用范围是单例的,也就是说该类的对象只会有一个,在各处调用时,使用的都是同一个对象。

也能通过配置文件 scope = "prototype"或者注解@Scope(“prototype”)改成多例的,也就是每次调用的时候都会重新创建一个对象。

还有基于每次request的,基于session的等等。

5.什么时候用单例什么时候用多例呢?

用单例的场景:

a.当某个对象的创建过程消耗很多,(耗时/耗资源)时;

b.当一个对象的属性需要被全局共享进行修改时;

用多例的场景:

a.每次使用时希望互相不产生干扰时;

6.单例模式具体怎么实现?有其他实现吗?

单例模式主要有两种实现:懒汉式、饿汉式

懒汉式:当调用时,进行对象的创建;

饿汉式:对象提前创建好,当调用时,立即返回该对象供使用;

7.bean的生命周期如何呢?

单例对象的生命周期是跟随容器的,只要容器在,单例对象就会在,当容器关闭时,单例对象就死亡;

多例对象在被使用时创建,由于不确定何时会再被使用,所以和容器是否开启没什么关系,多例对象的死亡时间由jvm的垃圾回收机制来确定。

原文链接:[https://blog.csdn.net/qq_39091292/article/details/103991097] (https://blog.csdn.net/qq_39091292/article/details/103991097)

发布了114 篇原创文章 · 获赞 16 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44026997/article/details/104387791
今日推荐