Spring笔记②--各种属性注入

Ioc 反转控制 反转资源获取的方向

分离接口与实现

采用工厂模式

采用反转控制

?

Di 依赖注入 依赖容器把资源注入

?

配置bean 通过全类名(反射)

配置形式:基于xml方式

Ioc容器的beanFactory&ApplicationContext

依赖注入的方式:属性注入,构造器注入

?

?

Bean必须要有一个无参的构造函数

Class:bean的全类名,通过反射的方式在IOC容器中创建bean,所以要求bean中必须有无参的构造函数

id :bean 的标示,id唯一

?

applicationContext 是spring的ioc容器,是一接口。

其实现类:

ClassPathXmlApplicatContext从类的路径下来加载配置文件

Getbean()

FileSystemXmlApplicationContext

?

属性注入

通过setter方法注入bean的属性值或依赖的对象

属性注入使用<property>元素,使用name属性指定bean的属性名称,value属性或<value>子节点指定属性值。

属性注入是实际应用中最常见的注入方式。


<bean
id="helloWorld"
class="com.test.bean.HelloWorld">

????????<property
name="name"
value="spring"></property>

????</bean>

构造函数注入


<!-- 通过构造函数配置bean的属性 -->

????<bean
id="car"
class="com.test.bean.Car">

????????<constructor-arg
value="audi"
index="0"></constructor-arg>

????????<constructor-arg
value="shanghai"
index="1"></constructor-arg>

????????<constructor-arg
value="30000"
index="2"
type="double"></constructor-arg>

????</bean>

????

????<bean
id="car2"
class="com.test.bean.Car">

????????<constructor-arg
value="bwm"></constructor-arg>

????????<constructor-arg
value="shandong"></constructor-arg>

????????<constructor-arg
value="30000"
type="int"></constructor-arg>

????</bean>

使用构造器注入属性值可以指定参数的位置和参数的类型!以区分重载的构造器!

如果value字面的值中包含特殊字符就可以通过<![CDATA[字符串]]>的形式注入。

我们也可通过value子节点进行配置

?

可以使用property的ref属性建立bean之间的引用关系。


????<bean
id="person"
class="com.test.bean.Person">

????????<property
name="name"
value="zhangsan"></property>

????????<property
name="age"
value="20"></property>

????????<property
name="car"
ref="car2"></property>

????</bean>

?

可以通过一组内置的xml标签来配置集合属性如 list set map


<bean
id="person2"
class="com.test.bean.collect.Person">

????????<property
name="name"
value="lisi"></property>

????????<property
name="age"
value="20"></property>

????????<property
name="cars">

????????????<list >

????????????????<ref
bean="car"
/>

????????????????<ref
bean="car2"
/>

????????????</list>

????????</property>

????</bean>

?

?

也可通过内部bean来注入属性

?


<bean
id="person2"
class="com.test.bean.collect.Person">

????????<property
name="name"
value="lisi"></property>

????????<property
name="age"
value="20"></property>

????????<property
name="cars">

????????????<list >

????????????????<ref
bean="car"
/>

????????????????<ref
bean="car2"
/>

????????????????<bean
class="com.test.bean.Car">

????????????????????<constructor-arg
value="ford"></constructor-arg>

????????????????????<constructor-arg
value="济南"></constructor-arg>

????????????????????<constructor-arg
value="20000"
type="int"></constructor-arg>

????????????????</bean>

????????????</list>

????????</property>

?

Map注入


<bean
id="newPerson"
class="com.test.bean.collect.NewPerson">

????????<property
name="name"
value="Wangwu"></property>

????????<property
name="age"
value="20"></property>

????????<property
name="cars">

????????????<map>

????????????????<entry
key="AA"
value-ref="car"/>

????????????????<entry
key="BB"
value-ref="car2"/>

????????????</map>

????????</property>

????</bean>

?

Properties属性注入


?

????<bean
id="dataSource"
class="com.test.bean.collect.DataSource">

????????<property
name="properties">

????????????<props>

????????????????<prop
key="user">root</prop>

????????????????<prop
key="password">root</prop>

????????????????<prop
key="jdbcUrl">jdbc:mysql:///test</prop>

????????????????<prop
key="driverClass">com.mysql.jdbc.Driver</prop>

????????????</props>

????????</property>

????</bean>

?

?

?

?

?

?

?

?

?

?

?

时间: 2024-10-20 20:48:54

Spring笔记②--各种属性注入的相关文章

Spring框架笔记(三)——Spring容器、属性注入和构造器注入详解

Spring 容器 在 Spring IOC 容器读取 Bean 配置创建 Bean 实例之前, 必须对它进行实例化. 只有在容器实例化后, 才可以从 IOC 容器里获取 Bean 实例并使用. Spring 提供了两种类型的 IOC 容器实现. BeanFactory: IOC 容器的基本实现. ApplicationContext: 提供了更多的高级特性. 是 BeanFactory 的子接口. BeanFactory 是 Spring 框架的基础设施,面向 Spring 本身: Appli

spring学习之属性注入

首先准备工作 本项目的目录结构如下: spring中属性的相互关系是通过applicationContext.xml来管理的,spring提倡面向接口的编程,因此在dao层使用接口抽象方法. 下面是各层的代码: public interface StudentsDAO { //保存学生 public boolean saveStudents(Students s); } 接口的实现类. public class StudentsDAOImpl implements StudentsDAO { @

spring HibernateDaoSupport 注解属性注入的方法

/*使用注解属性注入无法调用HibernateDaoSupport中的setSessionFactory方法,需要手动创建,并且setSessionFactory不能被重写 * 需要新建方法,在新方法中调用父类的setSessionFactory方法,显式的指向属性名称*/ @Resource(name="sessionFactory") private void setSF(SessionFactory sessionFactory) { setSessionFactory(sess

Spring中的属性注入注解

@Inject使用 JSR330规范实现的 默认按照类型注入 如果需要按照名称注入,@Inject需要和@Name一起使用 @Resource JSR250规范实现的,需要导入不同的包 @Resource是按照名称匹配的 @Autowired Spring中定义的注解 默认按照类型注入 如果需要按照名称注入,需要配合@Qualifier注解一起使用 包含一个require属性 原文地址:https://www.cnblogs.com/watertreestar/p/11780306.html

Spring.net页面属性注入

1.条件spring.web程序集 1.1 system.web配置 <httpHandlers> <add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/> </httpHandlers> 1.2 httpModules配置 <httpModules> <add name=&qu

【Java Web开发学习】Spring构造器和属性注入

测试类 public class Construct { private String address; private long phone; public Construct(String name, int age) { System.out.println("> " + name + ", " + age); } public String getAddress() { return address; } public void setAddress(

Spring static 静态属性注入

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="staticMethod" value="**.service.utils.PostUtil.setEnableValidateMode"/> <property name="arguments">

[原创]java WEB学习笔记98:Spring学习---Spring Bean配置及相关细节:如何在配置bean,Spring容器(BeanFactory,ApplicationContext),如何获取bean,属性赋值(属性注入,构造器注入),配置bean细节(字面值,包含特殊字符,引用bean,null值,集合属性list map propert),util 和p 命名空间

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

Spring.Net学习笔记(4)-属性及构造器注入

一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.dll 三.开发过程 1.项目结构 2.编写Product.cs namespace SpringNetDi { public class Product { public string Name { get; set; } public decimal UnitPrice { get; set; }