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

spring01

id和name

id只能取一个,name可以取多个,,,不同的bean,,id和name不能重复…
name之间可以使用,分隔,也可以使用空格 分隔

<bean class="com.cj.Dog" id="dog02" name="dog,dog1,dog2"/>

xml中没有设置id或者name,默认的beanName是类的全路径com.cj.Dog,
如果多个bean都没有配置id,和name,,默认的beanName就是类的全路径#编号

属性注入
set注入

通过无参构造方法创建,setter赋值
普通属性注入

复杂属性,数组,list,map,properties注入

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean class="com.cj.User" id="user"><property name="name" value="cc"/><property name="address" value="chengdu"/><property name="age" value="1"/><property name="dog" ref="dog"/><property name="cats"><list><bean class="com.cj.Cat"><property name="name" value="瓜瓜"/></bean><ref bean="cat"/></list></property><property name="favorites"><array><value>篮球</value><value>足球</value></array></property><property name="info"><map><entry key="nation" value="汉族"/><entry key="edu" value="本科"/></map></property><property name="job"><props><prop key="salary">10000</prop><prop key="position">java</prop></props></property> </bean><bean class="com.cj.Dog" id="dog"><property name="name" value="小黑"/></bean><bean class="com.cj.Cat" id="cat"><property name="name" value="可乐"/></bean></beans>
构造器注入
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><bean class="com.cj.User" id="user"><constructor-arg name="name" value="cc"/><constructor-arg name="dog"><bean class="com.cj.Dog"><property name="name" value="小黑"/></bean></constructor-arg><constructor-arg name="cats"><list><bean class="com.cj.Cat"><property name="name" value="瓜瓜"/></bean></list></constructor-arg><constructor-arg name="address" value="chengdu"/><constructor-arg name="age" value="1"/><constructor-arg name="favorites"><array><value>篮球</value></array></constructor-arg><constructor-arg name="info"><map><entry key="edu" value="本科"/></map></constructor-arg><constructor-arg name="job"><props><prop key="hehe">123</prop></props></constructor-arg>
</bean></beans>
p名称空间,,本质是set方法
  <bean class="com.cj.Dog" id="dog" p:name="小黄" p:age="1"/>
属性自动注入

autowire属性:

  • no : 不自动注入。。默认为no
  • byName : 根据bean的名字注入,,set注入
  • byType : 根据类型注入,,,set注入
  • constructor : 构造函数注入
  • default : 继承父标签上的 default-autowire
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><beans default-autowire="byType"><bean class="com.cj.Dog" id="dog"><property name="name" value="小黑"/></bean><!--    no : 默认byName : 根据名字注入byType : 根据类型注入constructor : 构造方法注入default: 自己不决定,由他的parent标签去决定--><bean class="com.cj.User" id="user" autowire="default"><property name="name" value="cc"/></bean></beans></beans>
配置文件加载
  • FileSystemXmlApplication : 当前项目根目录下,开始配置文件
  • ClassPathXmlApplication : classpath
多个bean不写name和id,,默认的beanName

xml配置中,beanName是在DefaultBeanNameGenerator
java配置中,beanName是在AnnotationBeanNameGenerator
都是BeanNameGenerator接口
在这里插入图片描述

    public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans04.xml");User user = ctx.getBean("com.cj.User", User.class);User user1 = ctx.getBean("com.cj.User#0", User.class);User user2 = ctx.getBean("com.cj.User#1", User.class);User user3 = ctx.getBean("com.cj.User#2", User.class);System.out.println("user = " + user);System.out.println("user2 = " + user2);System.out.println("user3 = " + user3);System.out.println(user==user1);}

第一个com.cj.User#0 将 com.cj.User作为别名,跟#0绑定,,
后面不绑定是因为 com.cj.User 已经存在在容器中,,第一个是因为com.cj.User在容器中没有

id和name的处理

id是beanName,, name是作为别名,,
如果id没有配置, beanName是name属性的第一个,,其他name属性为别名,,,

bean的作用域

scope:

  • singleton :单例,,多次取,只会是同一个实例
  • prototype : 多例,,每次获取都不同
  • reqeust : web环境生效, 当有一个新的请求到达的时候,会创建一个bean实例
  • session : 当有一个新的会话的时候,会创建一个bean实例
  • application: 在项目的整个生命周期中,只有一个bean
  • globalsession : 有点类似于application,,但是这个是在portlet环境下使用

java配置scope使用@Scope() 注解

singleton和prototype区别:

  1. 如果scope为 singleton,spring在启动的时候会完成初始化,,
    如果是prototype是在每一次获取bean的时候初始化
  2. scope为prototype的bean的生命周期 和 singleton不同

条件注解

根据条件向spring容器中注册bean,,实现Condition接口,里面matches方法返回true表示,注入到容器中

public class JavaConfig {@Bean@Conditional(WindowCondition.class)ShowCmd winCmd(){return new WindowsCmd();}@Bean@Conditional(LinuxCondition.class)ShowCmd linuxCmd(){return new LinuxCmd();}}

使用场景:

  1. 多环境切换
  2. springboot中自动配置

相关文章:

  • 用android如何实现计算机计算功能
  • 【机器学习】 第1章 概述
  • 从视频创意到传播策略 | 医药产品TVC新媒体传播方案
  • 运动想象 (MI) 分类学习系列 (14) :基于时空光谱特征的分类方法
  • WebRTC AudioProcessing 移植调试
  • 设计模式-迭代器模式
  • 使用SQLite
  • 从面试角度了解前端基础知识体系
  • JavaFX HTMLEditor
  • 双色球预测算法(Java),——森林机器学习、时间序列
  • 华润的超市卡有什么用?
  • 发力采销,京东的“用户关系学”
  • 【SQL server速成之路】函数
  • 2406c++,iguana动态反射
  • 【SCAU数据挖掘】数据挖掘期末总复习题库判断题及解析
  • 345-反转字符串中的元音字母
  • cookie和session
  • emacs初体验
  • Git同步原始仓库到Fork仓库中
  • HTTP 简介
  • IOS评论框不贴底(ios12新bug)
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • js正则,这点儿就够用了
  • Kibana配置logstash,报表一体化
  • Leetcode 27 Remove Element
  • Redux 中间件分析
  • 从0到1:PostCSS 插件开发最佳实践
  • 动态规划入门(以爬楼梯为例)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 我感觉这是史上最牛的防sql注入方法类
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Java数据解析之JSON
  • ​​​【收录 Hello 算法】9.4 小结
  • #stm32驱动外设模块总结w5500模块
  • %@ page import=%的用法
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (二)WCF的Binding模型
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (含答案)C++笔试题你可以答对多少?
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (转)jdk与jre的区别
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • *** 2003
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • [1127]图形打印 sdutOJ
  • [AS3]URLLoader+URLRequest+JPGEncoder实现BitmapData图片数据保存
  • [C++]STL之map