Spring-注解开发

这篇具有很好参考价值的文章主要介绍了Spring-注解开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、引子

我们在前面向读者介绍了Spring的配置文件,可以在配置文件中声明Bean,把对象的创建权交给Spring容器,并且实际演示了如何配置一个经典的Bean——数据源的配置。经过实际的上手我们会发现:xml的配置显得有些繁重,于是更便捷的配置方式便应运而生了——注解开发。

二、快速使用
(1)在类上添加注解

Spring框架有4个原生注解用于声明需要放至于IoC容器中,分别是@Controller,@Service,@Repository,@Component。他们没有实际的区别,仅在于后续划分代码结构时,各个分层上一般使用不同的注解。

import com.bylearning.spring.dao.UserDao;
import org.springframework.stereotype.Repository;

@Repository
public class UserDaoImpl implements UserDao {

    @Override
    public void saveUser() {
        System.out.println("save successfully");
    }
}
(2)如何DI?

Spring框架也提供了3个原生注解:@Autowired,@Resource,@Qualifier。@Autowired是用于按照类型(byType)装配依赖对象。默认情况下,它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果想要使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。@Resource注解默认按照名称进行装配。名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。@Qualifier注解用于解决歧义性问题,当有多个相同类型的Bean时,可以使用该注解指定要注入的Bean。

总结来说,@Autowired主要用于按照类型装配依赖对象,可以结合@Qualifier注解使用;@Resource默认按照名称装配依赖对象,可以指定name属性进行配置;@Qualifier用于解决歧义性问题,指定要注入的Bean。

import com.bylearning.spring.dao.UserDao;
import com.bylearning.spring.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    @Qualifier(value = "userDaoImpl")
    private UserDao userDao;

    @Override
    public void saveUser() {
        userDao.saveUser();
    }
}
(3)配置包扫描路径
<?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 http://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="com.bylearning.spring" />
</beans>
三、思考

 我们拥有了上面的3个注解后,似乎可以将大部分的xml配置转化为注解了,但是请读者思考有哪些情景依靠这3个注解无法注解化呢?下面给出了场景与对应的解决办法:

  • xml配置文件还保留着 -- @Configuration
  • 我们在引子中提到的数据源Bean注册 -- @Bean
  • 组件扫描  -- @ComponentScan
  • 数据源中引用的properties文件 -- @PropertySource
  • 导入的其它配置类 -- @Import

在以下例子中,主配置文件借助@Configuration注解将类声明为配置类,并用@ComponentScan注解对包进行扫描,将该包下的类(含有@Component等声明为Spring组件的注解)添加进IoC容器,借助@Import注解引入了另一个配置文件——数据源配置文件,在数据源配置文件中,利用@PropertySource注解引入了一个Properties文件,利用@Bean注解注册了一个Druid数据源。

主配置文件:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@ComponentScan("com.bylearning.spring")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {

}
数据源配置文件:
import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean
    public DataSource getDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

}

掌握了这些注解后,可以大大减轻xml配置的繁重工作了。我们可以再回顾一下在引子中提到的Spring的配置开发(附链接),对比一下将更能发现注解开发的便捷性。文章来源地址https://www.toymoban.com/news/detail-824600.html

到了这里,关于Spring-注解开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Java的OA办公管理系统,Spring Boot框架,vue技术,mysql数据库,前台+后台,完美运行,有一万一千字论文。

    目录 演示视频 基本介绍 功能结构 论文目录 系统截图 基于Java的OA办公管理系统,Spring Boot框架,vue技术,mysql数据库,前台+后台,完美运行,有一万一千字论文。 系统中的功能模块主要是实现管理员和员工的管理; 管理员:个人中心、普通员工管理、办公文件管理、公共信

    2024年02月10日
    浏览(49)
  • Spring数据库事务处理

    事务回滚丢失更新: 目前大部分数据库已经通过锁的机制来避免了事务回滚丢失更新。 数据库锁的机制: 锁可以分为乐观锁和悲观锁,而悲观锁又分为:读锁(共享锁)和写锁(排它锁),而数据库实现了悲观锁中的读锁和写锁,而乐观锁则需要开发人员自己实现。 数据库在设

    2024年02月07日
    浏览(37)
  • Spring配置动态数据库

    前言 本文主要介绍使用spring boot 配置多个数据库,即动态数据库 开始搭建 首先创建一个SpringWeb项目——dynamicdb(spring-boot2.5.7) 然后引入相关依赖lombok、swagger2、mybatis-plus,如下: 然后在包dynamicdb下面创建controller、mapper、dbmodel, 然后在resource下面创建mapper文件夹及问题,如

    2024年02月08日
    浏览(33)
  • 【Spring Boot】Spring Boot 配置 Hikari 数据库连接池

    数据库连接池是一个提高程序与数据库的连接的优化,连接池它主要作用是提高性能、节省资源、控制连接数、连接管理等操作; 程序中的线程池与之同理,都是为了优化、提高性能。

    2024年02月11日
    浏览(36)
  • Spring Security-查询数据库认证

    整合mybatis-plus 完成数据库操作 1.引入相关依赖 再父工程中 增加 mybatis-plus lombok mysql 相关依赖及版本号 再子项目中 引入  2.创建表 user_info 3.创建实体类 4.整合mybatis-plus ,创建接口 继承 BaseMapper 5.创建service 即UserDetailsService 接口实现类 6. 再启动类增加 mapperscan 或 再 4的接口增

    2024年01月18日
    浏览(76)
  • Spring Boot:数据库的整合

    在 Spring Boot :Web开发之视图模板技术的整合 文章中,介绍了 Spring Boot 整合视图模板技术。然而,仅仅整合视图模板技术可能还不能满足所有业务需求,因此还需要进一步扩展 Spring MVC 的默认配置。 简单补充说明 : 扩展 Spring Boot 中的 Spring MVC 默认配置通常涉及实现 WebMvcC

    2024年04月13日
    浏览(36)
  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(43)
  • Spring Data Elasticsearch - 在Spring应用中操作Elasticsearch数据库

    Spring Data Elasticsearch为文档的存储,查询,排序和统计提供了一个高度抽象的模板。使用Spring Data ElasticSearch来操作Elasticsearch,可以较大程度的减少我们的代码量,提高我们的开发效率。 要使用Elasticsearch我们需要引入如下依赖: 还需要在配置文件中增加如下配置 类比于MyBat

    2024年02月14日
    浏览(37)
  • Java项目:ssm框架基于spring+springmvc+mybatis框架的民宿预订管理系统设计与实现(ssm+B/S架构+源码+数据库+毕业论文)

    本项目是一套ssm827基于SSM框架的民宿预订管理系统设计与实现,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse 确保可以运行! 该系统功能

    2024年01月22日
    浏览(70)
  • 【Spring Boot】SpringBoot和数据库交互: 使用Spring Data JPA

    在现代应用程序的开发中,数据是核心部分。为了能够持久化、检索、更新和删除数据,应用程序需要与数据库进行交互。 1.1 为什么需要数据库交互 数据持久化 :当你关闭应用程序或者服务器时,你仍希望数据能够保存。数据库提供了一个持久的存储方案,使得数据在关闭

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包