Spring属性注入
2017-11-03 23:14
344 查看
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!-- 将User对象交给Spring管理 -->
<!-- Bean元素:使用该元素描述需要spring容器来管理
name:属性:给被管理的对象起个名字.获得对象时根据该名称获得对象,可以重复,可以使用特殊字符
class属性:指向对象的完整类名
id属性:与name一模一样,早年使用的是这个,名称不能重复,不能使用特殊字符
结论属性:尽量使用name属性
scope属性:singleton(默认值):单例对象,被标识为单例的对象在spring容器中只会存在一个实例
property:多例对象,被标识为多例的对象,每次获得才会创建,每次创建都是新的对象
(在整合struts2时,ActionBean需要配置成多例的)
request:web环境下,对象与request生命周期一直(了解)
session:web环境下,对象与session生命周期一直(了解)
-->
<bean name="user" class="Bean.User" >
<!-- 属性注入
四种方式:set
构造函数
p名称空间注入(了解)
spel注入(了解)
set方式注入
ref是引用,值类型用value -->
<property name="name" value="tom" />
<property name="age" value="17" />
<property name="car" ref="car"></property>
</bean>
<bean name="car" class="Bean.Car">
<property name="name" value="来波"></property>
</bean>
<!-- ========================构造函数注入================================= -->
<!-- index是索引,指的是构造函数属性在第一参数名为name的 ,type是指定的类型-->
<bean name="user1" class="Bean.User">
<constructor-arg name="name" value="jj" index="0" type="java.lang.String"/>
<constructor-arg name="age" value="14" index="1"/>
</bean>
<!-- ========================p名称空间注入================================= -->
<!--
首先要导入p名称命名空间
值类型p:属性值="值
对象类型p:属性名-ref=bean名称
-->
<bean name="user2" class="Bean.User" p:name="jack" p:age="14" p:car-ref="car">
</bean>
<!-- ========================spel入================================= -->
<!-- spring Expression language sping -->
<bean name="user4" class="Bean.User">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user3.age}"></property>
<property name="car" ref="car"></property>
</bean>
<!-- ============复杂类型注入(数组)============== -->
<bean name="cb" class="Bean.User">
<!-- 如果数组中只准备一个值(对象),直接用value就可以 -->
<!-- <property name="arr" value="tom"></property> -->
<!-- array数组注入 ,多个元素注入-->
<property name="arr">
<array>
<value>tom</value>
<value>tom</value>
<ref bean="user"/>
</array>
</property>
</bean>
<!-- ============复杂类型注入(List)============== -->
<!-- 和数组类似.里面变成了list-->
<!-- <property name="list">
<list>
<value>tom</value>
<value>tom</value>
<ref bean="user"/>
</list>
</property> -->
<!-- ============复杂类型注入(Map)============== -->
<!--
<map>
<entry key="" value=""></entry>
<entry key="" value-ref=""></entry>
<entry key-ref="" value=""></entry>
</map>
-->
<!-- ============复杂类型注入(properties)============== -->
<!-- <props>
<prop key="username">root</value>
<prop key="password">123456</value>
</props> -->
</beans>
===========================使用注解配置==================================
使用注解配置的话需要引入context约束
<!-- 指定扫描
4000
Bean包下的多有类的注解
注意:扫描包时,会扫描指定包下的所有子孙包
-->
<context:component-scan base-package="Bean" />
然后在类上面加上注解
@Component("user")
//相当于是<bean name="user" class="BeanUser">
@Controller//web层
@Service//service层
@Repository//dao层,
这几个注解作用都是一样的,知识为了区分不同的层而已.
//指定对象的作用范围
@Scope(scopeName="prototype")默认是singleton
@Component("user")
//相当于是<bean name="user" class="BeanUser">
@Controller//web层
@Service//service层
@Repository//dao层
//指定对象的作用范围
@Scope(scopeName="prototype")//默认是singleton
public class User {
@Value("tom")//把值注入到name属性中,放到set方法上也是可以的
private String name;
private int age;
//注入对象
@Autowired
//自动装配,,注意,如果匹配多个类型一致的对象,将无法选择具体注入哪一个对象
@Qualifier("car2")//使用这个注解告诉spring容器自动装配那个名称的对象
@Resource(name="car")//手动注入,指定注入那个名称的对象
private Car car;
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
<!-- 将User对象交给Spring管理 -->
<!-- Bean元素:使用该元素描述需要spring容器来管理
name:属性:给被管理的对象起个名字.获得对象时根据该名称获得对象,可以重复,可以使用特殊字符
class属性:指向对象的完整类名
id属性:与name一模一样,早年使用的是这个,名称不能重复,不能使用特殊字符
结论属性:尽量使用name属性
scope属性:singleton(默认值):单例对象,被标识为单例的对象在spring容器中只会存在一个实例
property:多例对象,被标识为多例的对象,每次获得才会创建,每次创建都是新的对象
(在整合struts2时,ActionBean需要配置成多例的)
request:web环境下,对象与request生命周期一直(了解)
session:web环境下,对象与session生命周期一直(了解)
-->
<bean name="user" class="Bean.User" >
<!-- 属性注入
四种方式:set
构造函数
p名称空间注入(了解)
spel注入(了解)
set方式注入
ref是引用,值类型用value -->
<property name="name" value="tom" />
<property name="age" value="17" />
<property name="car" ref="car"></property>
</bean>
<bean name="car" class="Bean.Car">
<property name="name" value="来波"></property>
</bean>
<!-- ========================构造函数注入================================= -->
<!-- index是索引,指的是构造函数属性在第一参数名为name的 ,type是指定的类型-->
<bean name="user1" class="Bean.User">
<constructor-arg name="name" value="jj" index="0" type="java.lang.String"/>
<constructor-arg name="age" value="14" index="1"/>
</bean>
<!-- ========================p名称空间注入================================= -->
<!--
首先要导入p名称命名空间
值类型p:属性值="值
对象类型p:属性名-ref=bean名称
-->
<bean name="user2" class="Bean.User" p:name="jack" p:age="14" p:car-ref="car">
</bean>
<!-- ========================spel入================================= -->
<!-- spring Expression language sping -->
<bean name="user4" class="Bean.User">
<property name="name" value="#{user.name}"></property>
<property name="age" value="#{user3.age}"></property>
<property name="car" ref="car"></property>
</bean>
<!-- ============复杂类型注入(数组)============== -->
<bean name="cb" class="Bean.User">
<!-- 如果数组中只准备一个值(对象),直接用value就可以 -->
<!-- <property name="arr" value="tom"></property> -->
<!-- array数组注入 ,多个元素注入-->
<property name="arr">
<array>
<value>tom</value>
<value>tom</value>
<ref bean="user"/>
</array>
</property>
</bean>
<!-- ============复杂类型注入(List)============== -->
<!-- 和数组类似.里面变成了list-->
<!-- <property name="list">
<list>
<value>tom</value>
<value>tom</value>
<ref bean="user"/>
</list>
</property> -->
<!-- ============复杂类型注入(Map)============== -->
<!--
<map>
<entry key="" value=""></entry>
<entry key="" value-ref=""></entry>
<entry key-ref="" value=""></entry>
</map>
-->
<!-- ============复杂类型注入(properties)============== -->
<!-- <props>
<prop key="username">root</value>
<prop key="password">123456</value>
</props> -->
</beans>
===========================使用注解配置==================================
使用注解配置的话需要引入context约束
<!-- 指定扫描
4000
Bean包下的多有类的注解
注意:扫描包时,会扫描指定包下的所有子孙包
-->
<context:component-scan base-package="Bean" />
然后在类上面加上注解
@Component("user")
//相当于是<bean name="user" class="BeanUser">
@Controller//web层
@Service//service层
@Repository//dao层,
这几个注解作用都是一样的,知识为了区分不同的层而已.
//指定对象的作用范围
@Scope(scopeName="prototype")默认是singleton
@Component("user")
//相当于是<bean name="user" class="BeanUser">
@Controller//web层
@Service//service层
@Repository//dao层
//指定对象的作用范围
@Scope(scopeName="prototype")//默认是singleton
public class User {
@Value("tom")//把值注入到name属性中,放到set方法上也是可以的
private String name;
private int age;
//注入对象
@Autowired
//自动装配,,注意,如果匹配多个类型一致的对象,将无法选择具体注入哪一个对象
@Qualifier("car2")//使用这个注解告诉spring容器自动装配那个名称的对象
@Resource(name="car")//手动注入,指定注入那个名称的对象
private Car car;
相关文章推荐
- Spring 三种属性注入方式
- Spring 自学系列之IOC-5【简单属性的注入】
- spring中注入属性时,属性名头两个字母必须小写
- 从0开始写一个基于注解的轻量级分布式RPC框架(4)自定义Spring的IOC,自定义属性注入bean的过程
- Spring 配置bean, 注解方式配置 xml方式要生产set方法方便属性注入,注解方式不需要,利用反射机制注入
- Spring注入Date类型的属性,自定义Date属性编辑器
- 【SSH快速进阶】——Spring属性注入
- Spring-集合属性注入
- Spring AOP注解通过@Autowired,@Resource,@Qualifier,@PostConstruct,@PreDestroy注入属性的配置文件详解
- 【Spring学习】之 属性注入与对象属性注入
- Spring中属性注入详解
- Spring中给bean的属性注入值以及内部Bean
- [Java] Spring 3.0 /id.vs.name/简单属性的注入/bean中的scope属性/集合注入/自动装配/生命周期/
- Spring Boot系列五 Spring @Value 属性注入使用总结二
- spring 属性注入
- Spring注入不同的属性以及BEAN的作用域
- spring 注入属性
- SSH与SSM学习之Spring07——Spring属性注入之spel注入
- (二)spring属性注入方式