java学习课程之bean的获取和属性赋值
2021/7/20 11:08:10
本文主要是介绍java学习课程之bean的获取和属性赋值,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
通过类型获取bean
- 从IOC容器中获取bean时,除了通过id值获取,还可以通过bean的类型获取。但如果同一个类型的bean在XML文件中配置了多个,则获取时会抛出异常,所以同一个类型的bean在容器中必须是唯一的。
HelloWorld helloWorld = cxt.getBean(HelloWorld. class); |
- 或者可以使用另外一个重载的方法,同时指定bean的id值和类型
HelloWorld helloWorld = cxt.getBean(“helloWorld”,HelloWorld. class); |
给bean的属性赋值
依赖注入的方式
1. 通过bean的setXxx()方法赋值
Hello World中使用的就是这种方式
2. 通过bean的构造器赋值
- Spring自动匹配合适的构造器
<bean id=“book” class=“com.atguigu.spring.bean.Book” > <constructor-arg value= “10010”/> <constructor-arg value= “Book01”/> <constructor-arg value= “Author01”/> <constructor-arg value= “20.2”/> </bean > |
- 通过索引值指定参数位置
<bean id=“book” class=“com.atguigu.spring.bean.Book” > <constructor-arg value= “10010” index =“0”/> <constructor-arg value= “Book01” index =“1”/> <constructor-arg value= “Author01” index =“2”/> <constructor-arg value= “20.2” index =“3”/> </bean > |
- 通过类型区分重载的构造器
<bean id=“book” class=“com.atguigu.spring.bean.Book” > <constructor-arg value= “10010” index =“0” type=“java.lang.Integer” /> <constructor-arg value= “Book01” index =“1” type=“java.lang.String” /> <constructor-arg value= “Author01” index =“2” type=“java.lang.String” /> <constructor-arg value= “20.2” index =“3” type=“java.lang.Double” /> </bean > |
p名称空间
为了简化XML文件的配置,越来越多的XML文件采用属性而非子元素配置信息。Spring 从2.5版本开始引入了一个新的p命名空间,可以通过<bean>元素属性的方式配置Bean 的属性。
使用p命名空间后,基于XML的配置方式将进一步简化。
<bean id=“studentSuper” class=“com.atguigu.helloworld.bean.Student” p:studentId=“2002” p:stuName=“Jerry2016” p:age=“18” /> |
可以使用的值
1. 字面量
- 可以使用字符串表示的值,可以通过value属性或value子节点的方式指定
- 基本数据类型及其封装类、String等类型都可以采取字面值注入的方式
- 若字面值中包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来
2. null值
<bean class=“com.atguigu.spring.bean.Book” id=“bookNull” > <property name= “bookId” value =“2000”/> <property name= “bookName”> <null/> </property> <property name= “author” value =“nullAuthor”/> <property name= “price” value =“50”/> </bean > |
3. 给bean的级联属性赋值
<bean id=”action” class=”com.atguigu.spring.ref.Action”> <property name=”service” ref=”service”/> <!– 设置级联属性(了解) –> <property name=”service.dao.dataSource” value=”DBCP”/> </bean> |
4. 外部已声明的bean
<bean id=“shop” class=“com.atguigu.spring.bean.Shop” > <property name= “book” ref =“book”/> </bean > |
5. 内部bean
当bean实例仅仅给一个特定的属性使用时,可以将其声明为内部bean。内部bean声明直接包含在<property>或<constructor-arg>元素里,不需要设置任何id或name属性
内部bean不能使用在任何其他地方
<bean id=“shop2” class=“com.atguigu.spring.bean.Shop” > <property name= “book”> <bean class= “com.atguigu.spring.bean.Book” > <property name= “bookId” value =“1000”/> <property name= “bookName” value=“innerBook” /> <property name= “author” value=“innerAuthor” /> <property name= “price” value =“50”/> </bean> </property> </bean > |
这篇关于java学习课程之bean的获取和属性赋值的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-10SpringBoot 内部方法调用,事务不起作用的原因及解决办法
- 2024-11-10独立开发者 5 个月,月收入赶超北京工资,我的一点心得
- 2024-11-09程序员 SEO 系列:如何找到更多搜索关键词?
- 2024-11-09为何选择Spring AI Alibaba开发智能客服平台?
- 2024-11-09Sentinel不同的流控效果资料详解
- 2024-11-09Sentinel配置限流资料:新手入门教程
- 2024-11-09Sentinel配置限流资料详解
- 2024-11-09Sentinel熔断规则配置资料详解
- 2024-11-08Sentinel熔断规则配置资料详解
- 2024-11-08Sentinel限流资料入门教程