Spring Framework --wenyu2
容器概述
ApplicationContext是Spring loC容器实现的代表,它负责实例化,配置和组装Bean。
容器通过读取配置元数据获取有关实例化、配置和组装哪些对象的说明。
配置元数据可以使用XML、Java注解或Java代码来呈现。
它允许你处理应用程序的对象与其他对象之间的互相依赖关系。 配置元数据的方式
使用xml的配置 简单、直观适合入门
基于注解的配置: Spring 2.5支持基于注解的元数据配置. SSM框架开发中的使用
基于Java的配置: 从 Spring 3.0开始,由Spring JavaConfig项目提供的功能已经成为Spring核心框架的一部分。因此,你可以使用Java配置来代替XML配置
定义外部bean . 从spring4.0开始支持springboot1.0之后springboot完全采用javaConfig的方式进行开发
容器的实例化 对象在Spring容器创建完成的时候就已经创建完成,不是需要用的时候才创建
ioc的优点
1.解耦
2.集中管理
3.功能可复用(减少对象的创建和内存消耗)
4.使得程序的整个体系结构可维护性、灵活性、扩展性变高
// ClassPathXmlApplicationContext 根据项目路径的xml配置来实例化spring容器
// FileSystemXm1ApplicationContext根据磁盘路径的xml配置来实例化spring容器
// AnnotationConfigApplicationContext根据javaconfig来配置实例化spring容器
依赖注入
基于setter方法的依赖注入
1.属性必须声明了set方法 2. name是根据set方法的名字来的比如方法名字是: setIdxx ->name="idxx" <bean class="cn.tulingxueyuan.beans.User" id="user2"><property name="idtuling" value="1"></property><property name="username" value="zhangsan" ></property><property name= "realname" value="张三"></ property> </ bean>
基于构造函数的依赖注入
1.将会调用自定义构造函数来实例化对象,就不会调用默认的无参构造函数 2, name是根据构造函数的参数名来的,比如:User(String idxx) -> name="idxx"3. name属性可以省略但是要注意参数的位置 4.如果非要把位置错开可以使用name或者index或者type5. index是下标―从开始 6. type在位置错开情况下只能在类型不一样的时候指定才有明显效果 <bean class="cn.tulingxueyuan. beans. User" id="user3"><constructor-arg name="username" value="lisi"></constructor-arg><constructor-arg name= "id_xushu" value="1 "></constructor-arg><constructor-arg name="reainame"value="李四"></constructor-arg> </bean>
在容器实例化的时候就会加载所有的bean
控制加载顺序使用depends-on方法
懒加载bean 使用lazy-init设置
<! -- 默认为false:在spring容器创建的时候加载(实例化) true:在使用的时候(getBean)才会去加载(实例化)--> <bean class="cn.tulingxueyuan.beans.Person" id="person2" lazy-init="true"> <property name="id" value="1"></property> <property name="realName" value="吴彦祖"></ property><property name="name " value="徐庶"></ property> </ bean>
自动注入
byType根据类型去自动匹配当出现多个类型或者匹配到类型则会报错 byName根据set方法的名字去自动匹配 constructor根据构造器去匹配:优先会根据参数名字去匹配,假如参数名字没有匹配到,会根据参数类型去匹配,会根据构造函数的参数进行完整的匹配注入:如果构造函数的参数Person(Wife wife3,User user) ioc容器里面必须要有同时有wife和userl,名字没有匹配到会根据类型匹配,类型假如出现多个会注入失败但是不会报错
注解的方式来注册bean
将一个类注入到ioc中的三种方式
xml:<bean>
@Component (@Controller,@Service,@Repository)
@Bean @Import
Bean作用域分为 Singleton(单例)的作用域 和 Prototype(原型)的作用域
<!--作用域scopesingleton 默认:单例只会在Ioc容器种创建一次prototype多例(原型bean)每次获取都会new一次新的bean--><bean class="cn.tulingxueyuan.beans.Person" id="person3" scope="prototype "><property name="id" value="1"></property><property name="realName " value="吴彦祖"></property><property name="name" value="徐庶"></property> </ bean>
注解介绍
扫描包
base-package 设置需要扫描的包
排除扫描:<context:exclude-filter设置需要排除扫描的选项包含扫描<context : include-filter设置需要包含扫描的选项
type: 1.annotation默认根据注解的完整限定名设置排除\包括 2.assignable根据类的完整限定名设置排除\包括 3.aspectj org.example.. Service+根据切面表达式设置排除\包括,一般不会使用
4.regex org . example . Default.*―根据正则表达式设置包括\排除,一般不会使用 5.custom org.example.MyTypeFilter 根据接口org.springframework. core. type . TypeFilter设置排除\包括,
使用@Autowired来实现自动注入
bytype? byname? 默认优先根据类型去匹配 如果匹配到多个类型则会按照名字匹配·如果名又没有匹配到则会报错:
可以去修改属性的名字对应bean的名字:userServiceImpl
可以去修改Bean的名字对应属性的名字:@Service("userService")3.可以通过@Qualifier设置属性的别字
可以通过@Qualifier设置属性的名字(覆盖):@Qualifier("userServiceImpl")
可以通过@Primary设置其中一个Bean为主要的自动注入Bean: @Primary
使用泛型作为自动注入限定符
基于java的容器配置
核心注解 @Bean和@Configuration
对比xml
Spring Framework --wenyu2相关推荐
- 手动创建Spring项目 Spring framework
之前学习框架一直是看的视频教程,并且在都配套有项目源码,跟着视频敲代码总是很简单,现在想深入了解,自己从官网下载文件手动搭建,就遇到了很多问题记载如下. 首先熟悉一下spring的官方网站:http: ...
- Spring Framework 6 将采用 Java 17,是时候将你的应用升级了
关于从先前的长期支持版本(Java 11 和 Java 8)迁移代码,你需要知道的是什么? 整理 | 王晓曼 出品 | CSDN(ID:CSDNnews) Spring Framework 6 将采用 ...
- spring原理案例-基本项目搭建 01 spring framework 下载 官网下载spring jar包
下载spring http://spring.io/ 最重要是在特征下面的这段话,需要注意: All avaible features and modules are described in the ...
- 在Spring Framework中@Inject和@Autowired有什么区别? 在什么条件下使用哪一个?
本文翻译自:What is the difference between @Inject and @Autowired in Spring Framework? Which one to use un ...
- 《Java Web高级编程——涵盖WebSockets、Spring Framework、JPA H
2019独角兽企业重金招聘Python工程师标准>>> <Java Web高级编程--涵盖WebSockets.Spring Framework.JPA Hibernate和S ...
- Spring Framework 5.3.6、5.2.14 发布
一个月前,小编刚给大家介绍过Spring Framework 5.3.5 的发布(紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!) 这才过来不到一个月 ...
- 紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!
昨天小编刚给大家介绍过最新的Spring Boot 2.4.4.Spring Cloud 2020.0.2 发布内容,还没看过的小伙伴点这里:Spring Boot 2.4.4.Spring Clou ...
- Spring Framework 5.2.5 发布,增加对 Java 14 的支持
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.oschina.net ...
- Spring Framework 5.2 正式发布,14项新特性一览
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | xplanet 来源 | http://oschina.net/news/1103 ...
最新文章
- 视频直播技术详解(7)现代播放器原理
- Java反射机制概念及应用场景
- c语言字符指针清零,C语言中字符串的内存地址操作的相关函数简介
- 库克发文纪念苹果成立45周年:伟大使命还有待实现
- 数据:比特币和以太坊的证券产品规模已超过百亿美元
- 减少.NET应用程序内存占用的一则实践
- python之自动生成器(持续更新)
- makefile(详细讲解)
- python blp模型 估计_简述BLP模型
- RedHat 终端大小写不能切换问题
- Android 修改屏幕亮度
- EPICS -- sequencer第一部分--介绍
- 去除重复字母Python解法
- 区块链项目是如何盈利的
- 程序员的好代码长什么模样?
- 数据结构-矩阵-三角矩阵(Java语言)
- 安装交叉编译工具:arm-himix200-linux
- ]许多代码段,没准儿有你需要的 C++ Builder
- msvcp110.dll丢失怎么修复
- 腾讯欲成育碧最大股东/ 米哈游招NLP内容生成研究员/ AI发现四千余物种濒临灭绝...今日更多新鲜事在此...