注解注入:
属性注入的注解(说明:使用注解注入的方式,可以不用提供set方法)
如果是注入的普通类型,可以使用value注解
@Value -- 用于注入普通类型(基本数据类型和字符串)
*如果注入的是对象类型,使用如下注解
* @Autowired -- 默认按类型进行自动装配(去IOC容器去找他注解的对象实现的类,自动装配注入)
* 如果想按名称注入
* @Qualifier -- 强制使用名称注入
必须一块使用:@Autowired
@Qualifier("dao")
*@Resource -- 相当于@Autowired和@Qualifier一起使用
* 强调:Java提供的注解
* 属性使用name属性
bean 的作用范围和生命周期:
1. Bean的作用范围注解
*注解为@Scope(value="prototype"),作用在类上。值如下:
* singleton -- 单例,默认值
* prototype -- 多例
2. Bean的生命周期的配置(了解)
*注解如下(作用在方法上):
* @PostConstruct -- 相当于init-method(当bean被载入到容器的时候调用)
* @PreDestroy -- 相当于destroy-method
技术分析之Spring框架的属性注入
1. 对于类成员变量,常用的注入方式有两种
*构造函数注入
*属性setter方法注入
2. 在Spring框架中提供了前两种的属性注入的方式
1. 构造方法的注入方式,两步
* 编写Java的类,提供构造方法
public class Car {
private String name;
private double money;
public Car(String name, doublemoney) {
this.name = name;
this.money = money;
}
@Override
public String toString() {
return "Car[name=" + name + ", money=" + money + "]";
}
}
* 编写配置文件
<bean id="car" class="com.itheima.demo4.Car">
<constructor-argname="name" value="大奔"/>
<constructor-argname="money" value="100"/>
</bean>
<!-- 加载properties文件 -->
<context:property-placeholder location="classpath:mail.properties"/>
2. 属性的setter方法的注入方式
* 编写Java的类,提供属性和对应的set方法即可
* 编写配置文件
3. 如果Java类的属性是另一个Java的类,那么需要怎么来注入值呢?
* <property name="name" rel="具体的Bean的ID或者name的值"/>
* 例如:
<bean id="person"class="com.itheima.demo4.Person">
<propertyname="pname" value="美美"/>
<propertyname="car2" ref="car2"/>
</bean>
技术分析之Spring的2.5版本中提供了一种:p名称空间的注入(了解)
1. 步骤一:需要先引入 p 名称空间
*在schema的名称空间中加入该行:xmlns:p="http://www.springframework.org/schema/p"
2. 步骤二:使用p名称空间的语法
*p:属性名 = ""
*p:属性名-ref = ""
3. 步骤三:测试
*<bean id="person" class="com.itheima.demo4.Person"p:pname="老王" p:car2-ref="car2"/>
技术分析之Spring的3.0提供了一种:SpEL注入方式(了解)
1. SpEL:Spring ExpressionLanguage是Spring的表达式语言,有一些自己的语法
2. 语法
*#{SpEL}
3. 例如如下的代码
<!-- SpEL的方式 -->
<bean id="person"class="com.itheima.demo4.Person">
<property name="pname" value="#{'小风'}"/>
<property name="car2" value="#{car2}"/>
</bean>
4. 还支持调用类中的属性或者方法
*定义类和方法,例如
public class CarInfo {
public String getCarname(){
return "奇瑞QQ";
}
}
技术分析之数组,集合(List,Set,Map),Properties等的注入
1. 如果是数组或者List集合,注入配置文件的方式是一样的
<bean id="collectionBean"class="com.itheima.demo5.CollectionBean">
<property name="arrs">
<list>
<value>美美</value>
<value>小风</value>
</list>
</property>
</bean>
2. 如果是Set集合,注入的配置文件方式如下:
<property name="sets">
<set>
<value>哈哈</value>
<value>呵呵</value>
</set>
</property>
3. 如果是Map集合,注入的配置方式如下:
<property name="map">
<map>
<entry key="老王2" value="38"/>
<entry key="凤姐" value="38"/>
<entry key="如花" value="29"/>
</map>
</property>
4. 如果是properties属性文件的方式,注入的配置如下:
<property name="pro">
<props>
<prop key="uname">root</prop>
<prop key="pass">123</prop>
</props>
</property>