学习笔记12——Spring的注解配置

学习笔记系列开头惯例发布一些寻亲消息

链接:https://baobeihuijia.com/bbhj/contents/3/192486.html
在这里插入图片描述

SSM框架——注解配置(@Component + @Autowired + 加载SpringConfig)

  • 注解开发(Component注解、config扫描 + 加载SpringConfig)

    @Component("bookDao")
    可以按照名字或者类型找
    BookDao bookDao = ctx.getBean("bookDao");
    BookDao bookDao = ctx.getBean(BookDao.class);@Component
    只可以按照类型找到
    BookService bookService = ctx.getBean(BookService.class);# 扫描该包以及该包下所有子包的注解
    <context:component-scan base-package="com.ithema"/>
    
    • 三级注解

      • @Service
      • @Repository
      • @Controller
    • 用Config来替换applicationContext.xml容器

      //声明当前类为Spring配置类
      @Configuration
      //设置bean扫描路径,多个路径书写为字符串数组格式
      @ComponentScan({"com.itheima.service","com.itheima.dao"})
      public class SpringConfig {
      }
      
    • AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器

    • public class AppForAnnotation {public static void main(String[] args) {//AnnotationConfigApplicationContext加载Spring配置类初始化Spring容器ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);BookDao bookDao = (BookDao) ctx.getBean("bookDao");System.out.println(bookDao);//按类型获取beanBookService bookService = ctx.getBean(BookService.class);System.out.println(bookService);}
      }
      
    • 控生命周期

    • // 单例
      @Scope("prototype")// 控制生命周期
      @PostConstruct 构造方法后
      public void init(){}@PreDestory 彻底销毁前
      public void destory(){}
      
  • 依赖注入,自动装配:可以不写setter

    // 按照类型装配
    @Repository
    @Autowired//按照名字装配
    @Repository("bookDao2")@Autowired
    @Qualifier("bookDao2")// 简单类型注入,其中value的值可以由properits提供
    @Value("给一个值就行666")
    @Value("${name}")
    private String name;
    
    @Configuration
    @ComponentScan("com.itheima")//@PropertySource加载properties配置文件,不支持通配符
    @PropertySource({"jdbc.properties"})public class SpringConfig {
    }
    
  • 第三方管理(手写new代码)

    	添加@Bean,表示当前方法的返回值是一个bean//@Bean修饰的方法,形参根据类型自动装配@Beanpublic DataSource dataSource(){DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
    
    一般将上述内容单独写一个JdbcConfig
    然后让spring config @Import("JdbcConfig");
    
    • 第三方管理的依赖注入,以形参自动装配
    // 简单类型
    @Value("com.mysql.jdbc.Driver")
    private String driver;// 引用类型
    @Beanpublic DataSource dataSource(BookDao bookDao){System.out.println(bookDao);DruidDataSource ds = new DruidDataSource();ds.setDriverClassName(driver);ds.setUrl(url);ds.setUsername(userName);ds.setPassword(password);return ds;}
    
  • XML配置和注解配置的区别

    方面XML配置Spring Config注解配置
    Bean生成
    后直接到Spring容器中
    @Component/三种延申
    需要@ComponentScan后才进入容器
    依赖注入setter注入 <property name=““ ref=”" />
    构造器注入
    @Autowired
    @Qualifer
    @Value
    第三方当作bean对象,然后赋值proporeties属性单独一个config文件
    @Bean 后new需要的第三方对象
    Spring config中需要import这个类
    声明周期<bean id=“bookDao” class=“com.itheima.dao.impl.BookDaoImpl” init-method=“init”,destory-mewthod=“destory”/>@PostConstruct 构造方法后
    @PreDestory 彻底销毁前
    属性文件<context:property-placeholder location=“classpath*.properties” system-properties-mode=“NEVER”/>@PropertSource(”xxxxx)
    使用容器ClassPathXmlApplicationContext ctx = newApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/305466.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

像美团一样商家入驻的小程序功能

美团一样的商家入驻小程序可以促进本地化商家的线上线下融合&#xff0c;为本地商家和用户提供更好的服务和体验&#xff0c;是一种数字化转型和创新&#xff0c;想要开发像美团一样的商家入驻小程序&#xff0c;需要具备以下功能&#xff1a; 1、不同行业独立频道 为本地化的…

【kubernetes】集群网络(一):基础篇

Flannel 1 路由表 & arp & fdb 1.1 路由表 任何网络设备都需要路由表&#xff0c;路由表用来决定&#xff0c;当收到数据包时&#xff0c;该向哪里进行转发。路由表项通常会包含以下几个字段&#xff1a; Destination&#xff1a;目的地Gateway&#xff1a;网关Mas…

深度解析TB用户购物行为:系统搭建与优化

深度解析TB用户购物行为&#xff1a;系统搭建与优化 引言系统搭建数据集技术选型 系统功能1. 用户维度分析2. 产品维度分析3. 聚类结果分析 创新点系统优化与展望优化展望 结语 引言 在电商时代&#xff0c;了解用户购物行为并从中提取有价值的信息对于企业制定营销策略和优化…

自动化测试与功能测试的区别(超详细总结)

什么是自动化测试? 自动化测试是指利用软件测试工具自动实现全部或部分测试&#xff0c;它是软件测试的一个重要组成 部分&#xff0c;能完成许多手工测试无法实现或难以实现的测试。能够正确、合理地实施自动测试&#xff0c;可以 快速、全面地对软件进行测试&#xff0c;从…

嵌入式开发——ADC模拟信号和数字信号

模拟信号和数字信号 模拟信号 自然界中大多数物理量是连续变化的,比如温度、声音、压力等灯,它们在一定时间内,可以有无限多个不同的取值,这些信号就是模拟信号。模拟信号就是指用连续变化的物理量所表示的信号。 自然界中的物理量都需要通过传感器将其转换成电信号后,才能进…

兔子目标检测数据集VOC格式3900张

兔子是一类可爱的哺乳动物&#xff0c;拥有圆润的脸庞和长长的耳朵&#xff0c;身体轻盈柔软。它们通常是以温和和友善的形象出现在人们的视野中&#xff0c;因此常常成为童话故事和卡通形象中的角色。 兔子是草食性动物&#xff0c;主要以各种草本植物为食&#xff0c;包括草…

Java学习——设计模式——创建型模式1

文章目录 创建型模式单例饿汉式懒汉式存在的问题 工厂方法简单工厂模式工厂方法模式抽象工厂模式 创建型模式 关注点是如何创建对象&#xff0c;核心思想是要把对象创建和使用相分离&#xff0c;这样两者能相对独立地变换 包括&#xff1a; 1、工厂方法&#xff1a;Factory Met…

什么是SNP SAP云端数据集成解决方案?

SNP SAP云端数据集成解决方案旨在充分利用云计算的灵活性和可伸缩性&#xff0c;以实现更低的成本维护和更快速的决策制定能力。该解决方案通过使用人工智能和机器学习实现高级分析&#xff0c;使用户能够快速做出明智的、数据驱动的决策。通过将数据集成到云端&#xff0c;企业…

vscode无法连接服务器

1.服务器问题 2.网络配置问题 重启服务器或者确认服务器操作无误 C:\Users\Alice\.ssh\config

C# 常用数据类型及取值范围

1.常见数据类型和取值范围 序号数据类型占字节数取值范围1byte10 到 2552sbyte1-128 到 1273short 2-32,768 到 32,7674ushort20 到 65,5355int4-2,147,483,648 到 2,147,483,6476uint40 到 4,294,967,2957float41.5 x 10−45 至 3.4 x 10388double85.0 10−324 到 1.…

Qt学习:Qt的意义安装Qt

Qt 的简介 QT 是一个跨平台的 C图形用户界面应用程序框架。它为程序开发者提供图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正地组件编程。 支持平台 xP 、 Vista、Win7、win8、win2008、win10Windows . Unix/Linux: Ubuntu 等…

Mybatis行为配置之Ⅱ—结果相关配置项说明

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL 文章目录 专栏精选引言摘要正文autoMappingBehaviorautoMappingU…