当前位置: 首页 > news >正文

Spring——Second

DI依赖注入

作用:将springIOC容器所创建的各个组件,使用DI的语法进行关联,耦合

DI数据类型

  • 基本类型与String
  • JavaBean
  • 复杂类型(List  set  array  map  properties)【构造注入不支持】

DI实现方式

  • set注入
  • 构造注入
  • 注解注入

SpringIOC容器对Bean管理

Bean实例化

  • 通过构造方法(默认
  • 通过工厂方法
  • 通过静态工厂方法

Bean作用域

spring对于创建JavaBean实例的方式

语法:<bean scope="属性值"></bean>

属性值:singleton——单例(默认);prototype——多例;

               reques——一个请求创建一个;session——一个会话创建一个

Bean生命周期

  • 实例化
  • 属性赋值(DI)
  • 初始化
  • 操作使用
  • 销毁

Spring的配置

spring2.5前:xml

spring2.5后:xml+annotation注解

spring3.0后:annotation注解+JavaConfig配置类

注解

注入类

语法:@Component(value="注入容器中的id")

注意:

  • 【作用于类;如果省略id,默认是类名且首字母小写;value属性名称可以省略】
  • 结合标签一起使用【<context:component-scan base-package=""/>功能:扫描所有被@Component注解所修饰的类,注入容器】
  • @Repository——注入数据访问层;@Service——注入业务层;@Controller——注入控制层【其功能语法与@Component一致】
注入基本数据

@Value

含义:注入基本数据

修饰:成员变量或对应的set方法

语法:@Value("数据内容");@Value("${动态获取}")【配合加载资源文件标签使用<context:property-placeholder location="classpath:jdbc.properties"/>】

@Autowired——注入JavaBean对象

含义:按照通过set方法进行“类型装配”,set方法可省略

语法:@Autowired(required = "true-默认、false、是否必须进行装配")

修饰:成员变量或对应的构造方法

注意:

  1.  默认是按照类型装配且同set方法
  2. 若容器中有一个类型可以与之匹配则装配成功,若没有一个类型可以匹配则报错(NoSuchBeanDefinitionException)
  3. 若容器中有多个类型可以与之匹配,则自动切换为按名称装配,若名称没有对应,则报错(NoUniqueBeanDefinitionException)
其他注解

@Primary:当类型冲突时,此注解修饰的类被列为首选;要配合注入类的注解一起使用

@Qualifier(value="名称"):按名称装配;必须与@Autowired联合使用

@Resource(name="名称"):按名称装配;单独使用

@Scope:配置类的作用域;必须和注入类的注解联合使用

  • @Scope("prototype")
  • @Scope("singleton")
  • @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
  • @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)

@PostConstruct:初始化、修饰方法【替换init-method】

@PreDestroy:销毁、修饰方法【替换destory-method】

配置类

@Configuration

作用:指定当前类为一个配置类(当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。)

@ComponentScan

作用:通过注解指定spring在创建容器时要扫描的包

属性:value和basePackages作用一样,用于指定创建容器时要扫描的包

@PropertySource

作用:用于指定properties文件位置

属性:value指定文件名称和路径

@Bean

作用:用于把当前方法的返回值作为bean对象存入spring容器中

属性:name用于指定bean的id,不写时,默认值是当前方法的名称

@Import

作用:用于导入其他的配置类

属性:value用于指定配置类的字节码

本节相关案例已压缩上传至资源文件中,可点主页-资源查看

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • AI赋能周界安防:智能视频分析技术构建无懈可击的安全防线
  • c++版opencv长文指南
  • Java进阶篇之深入理解多态的概念与应用
  • PHP项目任务系统小程序源码
  • 【网络基础一】几乎不讲任何网络协议细节,搭建网络基本结构
  • 【vue】在页面右下角添加悬浮按钮组件
  • 循环神经网络六-Pytorch中的序列化器
  • DreamFusion 论文学习
  • HTTP 和 HTTPS 协议的全面介绍
  • springboot多数据源配置
  • 安装AURIX™ Development Studio软件,新建工程,基于英飞凌TC375
  • 使用 Elasticsearch RestHighLevelClient 进行查询
  • 【如何使用Python绘制条形图】
  • 超详解Haproxy七层代理及配置
  • 力扣45:跳跃游戏2题解
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android Studio:GIT提交项目到远程仓库
  • Angular数据绑定机制
  • avalon2.2的VM生成过程
  • Babel配置的不完全指南
  • CentOS 7 修改主机名
  • emacs初体验
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • leetcode386. Lexicographical Numbers
  • MySQL QA
  • Mysql优化
  • nodejs实现webservice问题总结
  • Objective-C 中关联引用的概念
  • oschina
  • Vue实战(四)登录/注册页的实现
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • Yeoman_Bower_Grunt
  • 高度不固定时垂直居中
  • 聚类分析——Kmeans
  • 区块链分支循环
  • 设计模式(12)迭代器模式(讲解+应用)
  • 深入浅出Node.js
  • 使用Swoole加速Laravel(正式环境中)
  • 一份游戏开发学习路线
  • 中文输入法与React文本输入框的问题与解决方案
  • raise 与 raise ... from 的区别
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #AngularJS#$sce.trustAsResourceUrl
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (5)STL算法之复制
  • (7) cmake 编译C++程序(二)
  • (Java入门)学生管理系统
  • (超详细)语音信号处理之特征提取
  • (一)为什么要选择C++
  • (转)winform之ListView
  • (转)我也是一只IT小小鸟
  • (转载)CentOS查看系统信息|CentOS查看命令