Sping学习笔记-IOC的配置

Spring实现IOC的方式有两种,一种是基于xml的方式,一种是基于注解的方式。

1. 基于xml配置文件的方式

这种方式需要熟悉spring xml配置。我们需要在spring官网找到spring基于xml的命名空间。进入spring core官方界面,在该界面搜索xmlns即可找到最基本的配置。如下图所示。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="..." class="...">  
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <bean id="..." class="...">
        <!-- collaborators and configuration for this bean go here -->
    </bean>

    <!-- more bean definitions go here -->

</beans>

然后再基于此配置修改。

2. 基于注解的方式

基于注解的方式有两种,一种是半配置文件方式,一种是无配置文件方式。

2.1 半配置文件方式

半配置文件方式顾名思义就是注解和xml配置文件相结合的方式。
此时的配置文件的格式和完全使用配置文件的格式不相同,我们同样需要去spring core中搜索xmlns:context关键字即可找到基本配置。如下图所示。
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="org.example"/>

</beans>

只需要配置扫描注解的包即可。

2.2 无配置文件方式

无配置文件方式顾名思义就是完全由注解完成,没有任何xml配置文件的方式。
此处需要仔细介绍spring中的常用注解。介绍之前,我们先看一下 曾经的xml配置:

 <bean id="accountDao" class="com.jinyuxin.spring051301.dao.impl.AccountDaoImpl" scope="" init-method="" destroy-method="">
	 <property name="" value="" | ref="" ></property>
 </bean>

Spring注解大致可以分为四类:
(1)用于创建对象的;
(2)用于注入对象的;
(3)用于改变作用范围的;
(4)和生命周期相关的;
(5)和配置文件相关的。
以下分别介绍四类注解。
(1)用于创建对象的
@Component @Service @Controller @Repository
这四个注解都是将当前类作为一个JavaBean注册到Spring容器中,和基于xml配置文件中的<bean>标签作用完全一样。只不过后面三个注解是为了区分表现层、业务层、持久层三层结构,使用起来项目层次能够更加明确。因为作用都一样,所以你也可以混着用,不过这样项目质量就…你懂的。
这四个注解都有一个value属性,表示当前bean的id。默认的话,bean的id就是当前类首字母改成小写。
(2)用于注入数据的
他们的作用和xml配置文件中的 <property> 标签一样。
@Autowired
自动按照变量类型注入,只要spring容器中有唯一的一个bean对象和要注入的的变量类型匹配,就可以注入成功。
先按照变量类型找,如果容器中有多个相同类型的,然后再按照指定的id找。如果没有指定id,那么默认使用变量名作为id去找。
如果spring容器中有多个匹配时,
出现位置:一般是成员变量上。
@Qualify
在按照类型注入的基础上再按照id注入,给类成员注入时,不能单独使用,需要跟@Autowired一起用。给方法参数注入时,可以单独使用。它有一个value属性,用于指定id。
@Resource
全限定名称是:javax.annotation.Resource;
这个注解时jdk自带的注解,可以替代上述两个注解,注入的同时,再指定id进行匹配。有一个属性name用于指定id。
注意: 以上三个注解只能实现bean类型注入。基本数据类型和String类型无法使用上述注解实现。集合类型的注入只能通过xml来实现。
@Value
作用:用于注入基本数据类型和String类型。
属性:
value:用于指定数据的值。它可以使用spring中的SpEL。SpEL写法:${表达式}。
(3)用于改变作用范围的
他们的作用和xml配置中的scope属性一样。
作用:用于指定bean作用范围。
属性:
value:常用取值singleton和prototype。表示单例还是多例。默认是单例。
(4)和生命周期相关的
这种类型注解了解即可。
@PostConstruct:对应于xml配置中的init-method属性。用于方法上,表示方法在构造函数后执行。
@PreDestroy:对应于xml配置中的destroy-method属性。用于方法上,表示在对象被销毁前执行。
(5)和配置文件相关的
Spring新注解:
Configuration:
作用:指定当前类是一个配置类。
ComponentScan:
作用:用于通过注解指定spring在创建容器时要扫描的包。
属性:
value:它和basePackages作用是一样的,都是用于指定容器创建时需要扫描的包。
我们使用它等同于就是在xml中配置了:

<context:component-scan base-package="com.jinyuxin.spring051401"></context:component-scan>

两者结合使用就完全可以替代xml配置文件了。

3. 项目展示

3.1 全配置文件方式

全xml配置文件
Dao层代码
Service层代码
Main方法

3.2 半配置文件方式

半xml配置文件
Dao层代码
Dao层代码
Service层代码
main方法

3.3 无配置文件方式

代替配置文件的配置类
Dao层
Service层
Main方法

原创文章 75 获赞 33 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sinat_32336967/article/details/106014144