Spring-注解开发

STM32 MCU解除读保护的方法及STM32CubeProgrammer的应用 下面是一个简单的源代码示例,演示如何在STM32CubeProgrammer中使用命令行界面(Command-Line Interface,CLI)来解除STM32 MCU的读保护。通过按照这些步骤操作,您可以成功解除STM32 MCU的读保护,并在需要的时候进行调试、烧录或修改固件。模块调用了STM32CubeProgrammer的命令行界面(CLI),并传递了相应的参数来解除STM32 MCU的读保护。请注意,在进行任何与读保护相关的操作之前,请确保您拥有合法的授权和权利,以避免潜在的安全风险。 阅读详情

Spring-注解开发

一、注解开发

1.1 注解开发定义bean

  • 1.使用@Component定义bean

    /**
     * @author: sea
     * @date: 2023/7/03 14:20
     */
    
    //使用@Component定义bean
    @Component("bookDao")
    public class BookDaoImpl implements BookDao {
        @Override
        public void save() {
            System.out.println("bookDao saving ... ");
        }
    }
    
  • 2.在配置文件中配置组件扫描加载bean

    <?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
                http://www.springframework.org/schema/context/spring-context.xsd
                ">
        <!--  2.配置组件扫描加载bean  -->
        <context:component-scan base-package="com.sea.*"/>
    
    </beans>
    
  • 补充:Spring提供@Component注解的三个衍生注解:

    • @Service:用于业务层bean定义;
    • @Controller:用于表现层bean定义;
    • @Repository:用于数据层bean定义;
  • 【三个衍生注解功能与@Component相同,仅方便区分!!】

1.2 纯注解开发

  • Spring3.0升级了纯注解开发模式,使用Java类代替配置文件。

  • 实现:

    • 1.新建配置类代替配置文件:添加@Configuration注解修饰;@ComponentScan配置组件扫描路径;

      /**
       * @author: sea
       * @date: 2023/7/4 14:49
       */
      @Configuration
      @ComponentScan({"com.sea.dao", "com.sea.service"})
      public class SpringConfig {
      
      }
      
    • 2.使用新的接口实现类获取Spring容器;

      //AnnotationConfigApplicationContext接口实现类获取Spring容器,传入的参数为 配置类.class
      ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
      BookService bookService = (BookService) ctx.getBean("bookService");
      bookService.save();
      

二、依赖注入-自动装配

2.1 自动装配-引用类型

  • 即使用@Autowired注解进行自动装配;【一般是按bean的类型装配,也可以按bean名称装配】

  • 如下:

    /**
     * @author: sea
     * @date: 2023/7/4 15:58
     */
    @Service("bookService")
    public class BookServiceImpl implements BookService {
        @Autowired
        @Qualifier("bookDao2")//相同类型的bean有多个,可以指定注入bean的名称
        private BookDao bookDao;
        @Override
        public void save() {
            System.out.println("BookService saving ... ");
            bookDao.save();
        }
    }
    
  • 注意:

    • 1.自动装配基于反射机制,能够创建对象并访问私有属性,因此可以不写set方法;
    • 2.需要提供默认无参构造函数,否则无法创建bean对象;
    • 3.相同类型的bean有多个时,可以使用@Qualifier指定注入bean的名称;【此处必须配合@Autowired注解使用!】

2.2 自动装配-简单类型

  • 可以通过@Value注解直接给简单类型装配值:

    @Value("abcdefg")
    String name;
    
  • 也可以通过加载properties文件来装配:

    • jdbc.properties文件
    name=sea
    age=18
    
    • SpringConfig类
    @Configuration
    @ComponentScan({"com.sea.*"})
    @PropertySource("classpath:jdbc.properties")
    //此处若有多个properties文件,使用数组形式,不能使用通配符 *
    public class SpringConfig {
        
    }
    
    • BookDaompl类
    public class BookDaoImpl implements BookDao {
        @Value("${name}")
        String name;
        @Value("${age}")
        int age;
        @Override
        public void save() {
            System.out.println("BookDao saving ... [" + name + ", "+ age + "]");
        }
    }
    

2.3 第三方bean管理

  • 例如,需要配置Druid数据库连接池。【前置工作:导入Druid坐标,刷新Maven】

  • **方式一:**直接在Spring配置类中增加一个方法,用于配置

    /**
     * @author: sea
     * @date: 2023/7/4 16:45
     */
    @Configuration
    @ComponentScan("com.sea.*")
    public class SpringConfig {
    		//1.定义一个方法获取要管理的bean对象
        //2.给该方法的返回值添加@Bean,定义成Bean对象
        @Bean("dataSource_druid")
        public DataSource dataSource(){
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
            druidDataSource.setUrl("dbc:mysql://localhost:3306/springdb");
            druidDataSource.setUsername("root");
            druidDataSource.setPassword("123456");
    
            return druidDataSource;
        }
    }
    
  • **方式二:**增加一个配置类JdbcConfig进行数据库连接池配置

    /**
     * @author: sea
     * @date: 2023/7/4 16:57
     */
    
    public class JdbcConfig {
        //1.定义一个方法获取要管理的bean对象
        //2.给该方法的返回值添加@Bean,定义成Bean对象
        @Bean("dataSource_druid")
        public DataSource dataSource(){
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
            druidDataSource.setUrl("dbc:mysql://localhost:3306/springdb");
            druidDataSource.setUsername("root");
            druidDataSource.setPassword("123456");
    
            return druidDataSource;
        }
    }
    
    /**
     * @author: sea
     * @date: 2023/7/4 16:45
     */
    @Configuration
    @ComponentScan("com.sea.*")
    @Import({JdbcConfig.class})//使用@Import注解将配置类引入即可
    public class SpringConfig {
    
    }
    
    
  • 向第三方bean注入简单类型和引用类型:

    /**
     * @author: sea
     * @date: 2023/7/4 16:57
     */
    
    @PropertySource("classpath:mysql.properties")
    public class JdbcConfig {
        @Value("${driver}")
        private String driver;
        @Value("${url}")
        private String url;
        @Value("${username}")
        private String username;
        @Value("${password}")
        private String password;
    
        //1.定义一个方法获取要管理的bean对象
        //2.给该方法的返回值添加@Bean,定义成Bean对象
        //3.注入引用类型【通过方法参数形式自动装配(按类型装配)】
        @Bean("dataSource_druid")
        public DataSource dataSource(BookDao bookDao){
            System.out.println(bookDao); 
    
            DruidDataSource druidDataSource = new DruidDataSource();
            druidDataSource.setDriverClassName(driver);
            druidDataSource.setUrl(url);
            druidDataSource.setUsername(username);
            druidDataSource.setPassword(password);
    
            return druidDataSource;
        }
    }
    
    /**
     * @author: sea
     * @date: 2023/7/4 16:45
     */
    @Configuration
    @ComponentScan("com.sea.*")//配置了组件扫描后,Spring容器初始化时就会创建扫描到的bean
    @Import({JdbcConfig.class})//使用@Import注解将配置类引入即可
    public class SpringConfig {
    
    }
    

三、注解开发和xml配置对比

  • 看图:

    在这里插入图片描述

基于STM32L4XX 、HAL库的TMC2226-SA-T步进电机驱动器驱动程序应用设计 集成的功率MOSFET可处理高达2A RMS的电机电流,并具备保护与诊断功能,确保运行稳健可靠。作为业界最先进的STEP/DIR步进电机驱动系列,该芯片通过升级设计实现无噪音、高精度运行,为用户提供高性价比且极具竞争力的解决方案。// 用于PDN_UART单线通信。// HAL_UART_Transmit - 注意PDN_UART是单线,收发共线。.huart = &huart1, // PDN_UART连接的USART。均方根步进/方向控制接口,提供8、16、32或64微步针设置, 阅读详情

相关推荐

CentOS 9 Stream 上安装 MySQL 8.0+

根据提示进行设置,包括设置新的 root 密码、禁用远程 root 登录等。MySQL 在首次安装时会生成一个临时密码。这样就完成了 MySQL 8.0.37 的安装。这将安装最新的 MySQL 8.0 版本。

小强不是坑 1679

【Spring】纯注解开发模式简直就是Spring中的Spring

注解本质是一个继承了Annotation 的特殊接口,其具体实现类是Java 运行时生成的动态代理类。

懒羊羊的博客 6393

从零开始构建高精度称重系统:ADS1232硬件设计与软件调优实战

本文详细介绍了如何基于TI的ADS1232 24位ADC芯片构建高精度称重系统,涵盖硬件设计、软件调优及校准算法。通过优化电源设计、PCB布局和卡尔曼滤波算法,实现毫克级测量精度,适用于工业自动化和实验室等高要求场景。

weixin_28285943的博客 382

Spring注解开发

Spring IoC注解式开发通过使用注解来简化XML配置,Spring6倡导全注解开发。注解的定义和使用包括定义注解及其属性、使用注解以及通过反射机制读取注解。常见的声明Bean的注解有@Component、@Controller、@Service和@Repository。通过反射机制,可以扫描指定包下的类,判断类上是否有特定注解,并实例化相应的对象。这种方式使得开发更加简洁和高效,减少了繁琐的XML配置。

weixin_63855746的博客 880

数据库迁移策略实战:MySQL到PostgreSQL

数据库迁移是一项复杂且细致的任务,需要充分的准备工作、合适的迁移策略和严格的验证与优化步骤。通过选择合适的迁移工具、进行手动迁移和应用程序适配、以及迁移后的验证与优化,可以确保数据迁移的成功和业务的连续性。希望本文的分享能够为大家在MySQL到PostgreSQL的数据库迁移实战中提供一些有用的参考和启示。

shejizuopin的博客 1731

GD32F450以太网(2-2): PHY芯片IP101GR介绍

IP101是台湾省九阳电子公司生产制造的,符合IEEE 802.3/802.3u标准单端口快速以太网收发器100Mbps和10Mbps操作,它支持自动MDI/MDIX功能,简化网络安装和减少系统维护成本。支持Auto MDI/MDIX已内置4个49.9欧的精密电阻支持中断功能支持 MII/RMII 接口超低功耗

Zhichao_Zhang的博客 1万+

Spring纯注解开发

Spring3.0引入了纯注解开发的模式,框架的诞生是为了简化开发,那注解开发就是简化再简化。Spring的特性在整合MyBatis方面体现的淋漓尽致哦注解开发前,配置Bean时是在xml里将class分别写在Bean标签里,然后起id,就像这样注解开发后,配置Bean时首先将xml里的标签删掉,然后在类上添加@Component注解即可在xml文件中来写一个扫描包的注解标签,对象就装进IOC容器里了component-scan:component意为组件,scan意为扫描。

Admans的专栏 1144

Uniapp微信小程序:详解根据角色权限动态展示底部tabbar,支持不同身份显示不同底部导航+灵活权限组合完整源码,菜单切换不闪烁、秒加载不卡(提供动态原生Tabbar配置+自定义组件形式2种方案)

uni-app微信小程序实现根据用户不同角色显示不同的tabBar,uniapp微信小程序原生tabbar实现动态菜单导航,微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色,动态pages,uni-app微信小程序动态tabBar,根据不同用户展示不同的tabBar,uni-app微信小程序动态切换tabBar,根据不同用户角色展示不同的tabBar,微信小程序自定义底部tabbar动态修改,Uniapp小程序根据权限(角色)不同动态展示底部tabbar,解决tabbar闪烁卡顿问题,小

✅ 精选推荐文章 4284

Spring框架注解开发

名称:@Component @Controller @Service @Repository类型:类注解位置:类定义上方作用:设置该类为spring管理的bean。

2401_85217463的博客 1121

老电脑续命神器:Windows 11 26H1 精简游戏版,帧率稳定无压力!(Win11 26H1 极致精简游戏版(3.17G):装完只占 8G 内存,Ultra CPU 性能拉满)

旧电脑福音也能安装windows11畅玩游戏🎮:文章分享一款 Windows 11 26H1 精简游戏版,仅 3.17G、C 盘占用 8G,开机进程约 50 个,内存占用 1.4G,内置游戏优化与运行库,支持离线安装、跳过 TPM 检测,让老电脑也能畅玩 3A 游戏和办公娱乐 🚀。

XiaoqiangClub的博客 1061

【我的Android进阶之旅】解决android应用使用android:persistent属性带来的系统Launcher应用必须重启设备才生效的问题,大幅度提升开发效率

一、问题描述 我们在开发系统级别应用,比如Launcher桌面的时候,会发现有个问题:每次Launcher修改完代码,重新编译之后,安装到android设备上之后,必须重启才会生效。否则就是使用了之前的Launcher版本的内容。而每次重启设备得一分钟左右,太慢了,太影响效率了! 1.1 痛点 每次更新完代码,重新安装之后,必须重启设备才会生效。效率太TM低了! 二、分析问题 经过一轮代码排查,最终发现是因为src\main\AndroidManifest.xml文件中,定义application使用了an

字节卷动 1713

Spring-注解式开发

注解的属性使用类似方法的形式来定义。基本语法是:数据类型 属性名() [default 默认值];没有默认值​​:使用注解时​​必须​​为该属性显式赋值,格式为属性名 = 值// 使用时必须指定 username 的值有默认值​​:使用注解时​​可以​​不为该属性赋值,它将使用默认值。若需改变,也可显式赋值// 使用时如果不指定 age,默认为 18特殊属性如果注解中有一个名为value的属性,并且在使用注解时如果​​只​​需要为这个value属性赋值(即不提供其他属性值),那么可以省略"value="

m0_74146036的博客 1872

【ComfyUI】Z-Image 基础文生图 + 单LoRA

本文介绍了一个基于ComfyUI的Z-Image Turbo基础文生图工作流,采用轻量化UNet模型配合Qwen Image文本理解模型与LoRA风格注入,实现从文本到图像的快速生成。工作流结构清晰,包含模型加载、文本编码、采样解码等标准节点,在人物生成、构图稳定性和出图速度方面表现均衡。通过调整Prompt可控制生成内容,适合日常创作、教学演示及扩展进阶应用。

Mr数据杨 923

Spring05——注解开发定义bean、Spring纯注解开发模式

注解开发定义bean、Spring纯注解开发模式

后端小白个人学习记录 1150

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring 注解开发详解

我们在注入bean对象时,可选的方式有很多种。例如:我们自己写的类,可以使用@Component,@Service,@Repository,@Controller等等。我们导入第三方库中的类时可以使用@Bean(当需要做一些初始化操作时,比如DataSource),也可以使用@Import注解,直接指定要引入的类的字节码。但当我们的类很多时,在每个类上加注解会很繁琐,同时使用@Bean或者@Import写起来也很麻烦。此时我们就可以采用自定义或者来实现。

xiaotiaoza的博客 1166

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

spring基于注解的开发

前言 spring是我们web开发中必不可少的一个框架,基于传统的xml方式配置bean总觉得太过繁琐,从spring2.5之后注解的出现可以大大简化我们的配置。 入门的注解开发 @Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或An...

帅得山崩地裂的专栏 5702

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【Spring—注解开发】

Spring3.0开启了纯注解开发模式,使用Java类替代配置文件,开启了Spring快速开发赛道。即将配置文件applicationContext.xml删除掉,使用类来替换。BookDao 、 BookDaoImpl 、 BookService 、 BookServiceImpl 类如下: 步骤1:在实现类上添加注解在Dao上添加注解 在Service上添加注解 步骤2:创建配置类创建一个配置类SpringConfig步骤3:标识该类为配置类在配置类上添加@Configuration注解 步骤4:用注解

Leoon123的博客 465

Spring - 注解开发

Bean注解必须被扫描到才可以完成下面的操作@Bean所在的类必须加入到容器,可以加一个@Component注解,也可以添加@Configuration注解,一般是@Configuration注解非自定义Bean要通过工厂的方式进行实例化,使用@Bean标注方法即可@Bean的属性为beanName,如不指定为当前工厂方法名称@Bean(“dataSource”) 的含义此注解的dataSource参数是方法dataSource()返回值的Bean的名字测试一下。

weixin_51351637的博客 1965

Spring注解开发、纯注解开发教程,知识点精髓梳理

Spring的IOC/DI对应的配置开发使用起来相对来说还是比较复杂的,复杂的地方在配置文件。 我们知道Spring可以简化代码的开发,所以Spring到底是如何简化代码开发的呢? 要想真正简化开发,就需要用到Spring的注解开发,Spring对注解支持的版本历程: 2.0版开始支持注解 2.5版注解功能趋于完善 3.0版支持纯注解开发 关于注解开发,分两块内容 注解开发定义bean和纯注解开发。 注解开发定义bean用的是2.5版提供的注解,纯注解开发用的是3.0版提供的注解。

LINCHAOJIAN6237的博客 1317

Spring——Spring使用注解开发

Spring——Spring使用注解开发 一、注解开发步骤 1.导包: spring一系列包 <!--spring web mvc --> <dependency> <groupId>org.springframework</groupId> <artifactId...

qq_43411550的博客 300
上一篇: Spring-bean相关
下一篇: Spring-AOP相关
SEA-365
博客等级 码龄8年 4粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SEA-365

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值