springframework

本文深入探讨了Spring框架的核心概念——控制反转(IOC)和依赖注入(DI)。通过XML配置文件,解释了如何创建bean、设置bean的依赖、配置bean的作用域以及管理bean的生命周期。此外,还介绍了Spring的注解开发,包括@Component及其衍生注解,以及@Autowired、@Value等注解的使用。最后,讨论了如何通过@Configuration和@Bean注解进行纯注解开发,并管理第三方bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.核心思想

IOC:控制反转

控制反转:使用对象时,从主动的new对象转化为IOC容器去提供对象,被创建和管理的对象在IOC容器中被统称为“bean”。

IOC容器:可以管理service和dao,可以将有依赖关系的bean进行关系绑定也叫依赖注入 (DI)。

目标:充分解耦

二.使用spring

1.用maven在pom中导入spring的坐标

2.在resources中编写配置项

3.配置bean 

<bean id="这个bean的名称,自己取" class="给bean定义类型,此处填类型的路径" /bean>

3.1配置两个bean的依赖关系

<bean id="bean1" class = "xxx" /bean>

<bean id="bean2" class = "xxx" >

//property标签表示配置当前bean的属性,name表示配置哪一个具体的属性,ref属性表示参照哪一个bean

<property name="此处是set方法里面的变量名" ref="bean1">

</bean>

3.2 bean起别名:多个别名中可以用逗号,空格,分号分隔

<bean id="bean的名字" name="bean的别名1  bean的别名2   ..." class="bean的类型,即bean类型的路径">

3.3 bean中的单例对象和非单例对象怎么配置(bean的作用范围)

在配置xml中定义bean时,加上scope="prototype"  prototype:非单例  ;  singleton:单例

如:

<bean id="bean2" class = "xxx" scope="prototype">

单例模式:两次getbean时地址均是一样的。

非单例模式:多次getbean时地址不是一样的

3.4 bean的生命周期

定义初始化方法和结束方法,在bean中配置上对应的初始化方法和结束方法。

如:<bean id="xxx" class="xxx" init-method="定义的初始化方法" destroy="定义的结束方法" /bean>

4.依赖注入方式:

1.setter注入:1.1简单类型    ;1.2引用类型

2.构造器注入: 1.1简单类型;1.2 引用类型

构造器注入:

在实现类中提供一个构造方法用来传值。

在bean配置中构造器注入格式(引用类型的):

<bean id ="xx" class="xxx">

<constructor-arg name="构造方法中的形参" ref="构造方法的类型"/>

</bean>

简单类型的:

<bean id ="xx" class="xxx">

<constructor-arg name="构造方法中的形参" value="要给改类型传的值"/>

</bean>

数组集合的注入:

<bean id="xxx" class="xxx">

        <property name="注入的类型:集合,数组等 如:array"

                <array>

                        <value></value>

                </array>

        </property>

<property name="list"

                <list>

                        <value></value>

                </list>

        </property>

</bean>

Spring加载properties配置文件:

如:

 ioc容器总结:

注解开发:

注解开发定义bean:
第一步:@Component("要配置的bean的名称,可以理解为id")    :定义bean的注解,放在对应的类型上面。

第二步:核心配置文件通过组件扫描bean

<context: component-scan base-package="bean定义的路径"/>

@Component中又衍生出:@Service业务层 @Repository数据层  @Controller表现层

这三个注解作用和Component的作用一样,只是为了方便理解。

纯注解开发:

@Configuration :配置类注解,用于设定当前类为配置类

@ComponentScan :扫描Component文件的注解,用于设置扫描路径,只能添加一次,多个数据用数组格式

@Scope("xx"):切换bean的单例,非单例模式

bean的生命周期:

@PostConstruct:在构造方法后运行

@PreDestroy:在容器销毁前运行

@Autowired:自动装配,会自动根据类型或者名字自动装配

@Qualifier("注入的对象的名称"):指定名称注入   注:该注解依赖于@Autowired注解,不能单独使用。

@Value(""):简单类型的注入,放在简单类型的上面。

@PropertySource("要加载的properties配置文件"):写在配置类上,可以使用{}来取值,在加载多个配置文件的时候使用数组格式,也就是{配置文件a,配置文件b,配置文件c}

管理第三方bean管理:

定义一个管理的对象,然后手动写配置,然后将方法的返回值声明为bean。

@Bean("bean的名称"):添加一个bean,将该方法的返回值声明为bean

@Impoet(xxx配置类.class):导入其它配置类,导入多个配置了要使用{}

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值