Spring框架的详细介绍( 二 )

  • id: 唯一约束,不能出现特殊字符
  • name: 理论上可以重复,但是开发中最好不要 。可以出现特殊字符
生命周期:
  • init-method: bean被初始化的时候执行的方法
  • destroy-method: bean被销毁的时候执行的方法
作用范围:
  • scope: bean的作用范围,有如下几种,常用的是前两种 singleton: 默认使用单例模式创建 prototype: 多例 request: 在web项目中,spring 创建类后,将其存入到 request 范围中 session: 在web项目中,spring 创建类后,将其存入到 session 范围中 globalsession: 在web项目中,必须用在 porlet 环境
属性注入设置
  1. 构造方法方式的属性注入: Car 类在构造方法中有两个属性,分别为 name 和 price 。
<bean id="car" class="demo.Car">
<constructor-arg name="name" value=https://www.isolves.com/it/cxkf/kj/2020-03-03/"bmw">
<constructor-arg name="price" value=https://www.isolves.com/it/cxkf/kj/2020-03-03/"123">
</bean>
2.set 方法属性注入: Employee 类在有两个 set 方法,分别设置普通类型的 name 和引用类型的 Car (使用 ref 指向引用类型的 id 或 name) 。
<bean id="employee" class="demo.Employee">
<property name="name" value=https://www.isolves.com/it/cxkf/kj/2020-03-03/"xiaoming">
<property name="car" ref="car">
</bean>
3.P名称空间的属性注入: 首先需要引入p名称空间:
<beans xmlns="http://www.springframework.org/schema/beans"
//引入p名称空间
xmlns:p="http://www.springframework.org/schema/p"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
如果是普通属性:
<bean id="car" class="demo.Car" p:name="bmv" p:price="123">
</bean>
如果是引用类型:
<bean id="employee" class="demo.Employee" p:name="xiaoming" p:car-ref:"car">
</bean>
4.SpEL(Spring Expression Language)属性注入(Spring 3.x以上版本)
<bean id="car" class="demo.Car">
<property name="name" value=https://www.isolves.com/it/cxkf/kj/2020-03-03/"#{'xiaoming'}">
<property name="car" ref="#{car}">
</bean>
5.集合类型属性注入:
<bean id="car" class="demo.Car">
<property name="namelist">
<list>
<value>qirui</value>
<value>baoma</value>
<value>benchi</value>
</list>
</property>
</bean>
多模块开发配置
  1. 在加载配置文件的时候,加载多个配置文件
  2. 在一个配置文件中引入多个配置文件,通过实现
IOC 注解开发示例
  1. 引入jar包: 除了要引入上述的四个包之外,还需要引入aop包 。
  2. 创建 applicationContext.xml ,使用注解开发引入 context 约束(xsd-configuration.html)
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!-- bean definitions here -->
</beans>
  1. 组件扫描: 使用IOC注解开发,需要配置组件扫描,也就是哪些包下的类使用IOC的注解 。
<context:component-scan base-package="demo1">
  1. 在类上添加注解
  2. 使用注解设置属性的值
属性如果有set方法,将属性注入的注解添加到set方法
属性没有set方法,将注解添加到属性上 。
@Component("UserDao")//相当于配置了一个<bean> 其id为UserDao,对应的类为该类
public class UserDAOImpl implements UserDAO {
@Override
public void save() {
// TODO Auto-generated method stub
System.out.println("save");
}
}
注解详解
  1. @Component
组件注解,用于修饰一个类,将这个类交给 Spring 管理 。
有三个衍生的注解,功能类似,也用来修饰类 。


推荐阅读