Spring——Second

DI依赖注入

作用:将springIOC容器所创建的各个组件,使用DI的语法进行关联,耦合

DI数据类型

  • 基本类型与String
  • JavaBean
  • 复杂类型(List  set  array  map  properties)【构造注入不支持】

DI实现方式

  • set注入
  • 构造注入
  • 注解注入

SpringIOC容器对Bean管理

Bean实例化

  • 通过构造方法(默认
  • 通过工厂方法
  • 通过静态工厂方法

Bean作用域

spring对于创建JavaBean实例的方式

语法:<bean scope="属性值"></bean>

属性值:singleton——单例(默认);prototype——多例;

               reques——一个请求创建一个;session——一个会话创建一个

Bean生命周期

  • 实例化
  • 属性赋值(DI)
  • 初始化
  • 操作使用
  • 销毁

Spring的配置

spring2.5前:xml

spring2.5后:xml+annotation注解

spring3.0后:annotation注解+JavaConfig配置类

注解

注入类

语法:@Component(value="注入容器中的id")

注意:

  • 【作用于类;如果省略id,默认是类名且首字母小写;value属性名称可以省略】
  • 结合标签一起使用【<context:component-scan base-package=""/>功能:扫描所有被@Component注解所修饰的类,注入容器】
  • @Repository——注入数据访问层;@Service——注入业务层;@Controller——注入控制层【其功能语法与@Component一致】
注入基本数据

@Value

含义:注入基本数据

修饰:成员变量或对应的set方法

语法:@Value("数据内容");@Value("${动态获取}")【配合加载资源文件标签使用<context:property-placeholder location="classpath:jdbc.properties"/>】

@Autowired——注入JavaBean对象

含义:按照通过set方法进行“类型装配”,set方法可省略

语法:@Autowired(required = "true-默认、false、是否必须进行装配")

修饰:成员变量或对应的构造方法

注意:

  1.  默认是按照类型装配且同set方法
  2. 若容器中有一个类型可以与之匹配则装配成功,若没有一个类型可以匹配则报错(NoSuchBeanDefinitionException)
  3. 若容器中有多个类型可以与之匹配,则自动切换为按名称装配,若名称没有对应,则报错(NoUniqueBeanDefinitionException)
其他注解

@Primary:当类型冲突时,此注解修饰的类被列为首选;要配合注入类的注解一起使用

@Qualifier(value="名称"):按名称装配;必须与@Autowired联合使用

@Resource(name="名称"):按名称装配;单独使用

@Scope:配置类的作用域;必须和注入类的注解联合使用

  • @Scope("prototype")
  • @Scope("singleton")
  • @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
  • @Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)

@PostConstruct:初始化、修饰方法【替换init-method】

@PreDestroy:销毁、修饰方法【替换destory-method】

配置类

@Configuration

作用:指定当前类为一个配置类(当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。)

@ComponentScan

作用:通过注解指定spring在创建容器时要扫描的包

属性:value和basePackages作用一样,用于指定创建容器时要扫描的包

@PropertySource

作用:用于指定properties文件位置

属性:value指定文件名称和路径

@Bean

作用:用于把当前方法的返回值作为bean对象存入spring容器中

属性:name用于指定bean的id,不写时,默认值是当前方法的名称

@Import

作用:用于导入其他的配置类

属性:value用于指定配置类的字节码

本节相关案例已压缩上传至资源文件中,可点主页-资源查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值