注解注入:
属性注入的注解(说明:使用注解注入的方式,可以不用提供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>