Spring - 注解 vs XML 哪个好?

  • Spring中,使用注解@Autowired进行注入好,还是使用xml配置进行注入好?

    • 先讲结论,使用注解@Autowired注入比较好

    • 当时Spring开发的初衷是为了解决类与类之间的强藕合new,所以当时提出了xml配置注入bean的方法,就是让代码只关注我需要什麽service,但此service是由哪个实现类提供的我并不关心

      • 使用xml的好处就是,实现类更换的时候并不需要去改动代码,只要去改动xml配置,将注入的bean改成另一个实现类就可以了,如此可以达到类与类之间的松藕合

    • 但是到了Spring3.0之后,他们开始提出了使用@Autowired注解来进行bean的注入

      • 有的人可能会觉得,如果使用@Autowired、@Qualifier来注入,那麽假设我要改注入实现类的话,得去改java代码中的@Qualifier,那这样还是得改代码,那这样使用Spring注入和使用new,又有什麽差别?是不是还是使用xml比较好?

      • 事实上,使用注解确实会有这个问题没错,不过经过长时间的项目经验下来,你会发现,我们其实很少会去改注入的实现类的 (天天改服务还要不要命?)

      • 而注解提供的好处却是不少,像是简化xml配置的冗长、使用注解比较直观且容易、并且是类型安全的(compiler可以扫描注解,判断注入的类型是否正确,但他扫描不了xml文件)

      • 因此就算使用注解@Autowired去改变注入的实现类比xml更困难,但他其他大量的优点足以掩盖过这个缺点,这也是为什麽Spring觉得使用注解配置比使用xml配置更好的理由

    • 所以到目前为止(Spring4.0),虽然Spring官方本身没有明说抛弃xml配置,不过事实上Spring已经转往注解配置方向前进了,SpringBoot就是最好的例子

      • SpringBoot中只有一个properties文件负责配置一些不可避免的设定,像是数据库连接、mvc模板配置....,除此之外没有任何一个xml文件来定义bean,全部都是使用注解来配置

  • 注解 vs XML 优缺点比较

    • 注解

      • 优点

        • 简化配置

        • 使用起来直观且容易,提升开发效率

        • 类型安全

      • 缺点

        • 改变实现类比xml困难

    • xml

      • 优点

        • 类与类间的松藕合,容易扩展、更换

        • 对象间的关系一目了然

      • 缺点

        • 配置冗长,且还要额外多维护一份配置

        • 类型不安全,compile无法帮忙校验,运行期才会发现错误

  • 13
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Spring-MyBatis整合是一种常见的开发方式,其中spring-mybatis.xml文件是用来配置Spring和MyBatis框架集成的配置文件。在这个文件中,我们会定义数据源、事务管理器、扫描Mapper接口等配置信息。同时,我们还需要将MyBatis的SqlSessionFactory注入Spring容器中,以便其他组件可以使用它来执行数据库操作。以下是一个简单的spring-mybatis.xml文件示例: ```xml <?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" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClass}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- 配置SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="typeAliasesPackage" value="com.example.entity" /> <property name="mapperLocations" value="classpath*:com/example/mapper/*.xml" /> </bean> <!-- 配置Mapper扫描 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper" /> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 开启Spring注解功能 --> <context:annotation-config /> <!-- 开启Spring的AOP功能 --> <aop:aspectj-autoproxy /> <!-- 开启Spring的事务管理功能 --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans> ``` 在这个配置文件中,我们使用了Spring注解功能、AOP功能和事务管理功能,以及MyBatis的Mapper扫描和SqlSessionFactory配置。其中,数据源、事务管理器和Mapper扫描的配置信息需要根据实际情况进行修改。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值