spring 学习

理念:使现有的技术更加容易使用 

优点:

  1. 开源免费的框架(容器)
  2. 轻量级,非入侵式
  3. 控制反转(IOC),面向切面(AOP)
  4. 支持事务处理,对框架整合支持

 

 

ApplicationContext  获取spring的上下文对象

ApplicationContext  context = new ClassPathXmlApplicationContext("beans.xml");

bean配置

name 别名

import 导入其他的配置文件

依赖注入

  • 依赖:bean对象的创建依赖于容器
  • 注入:bean对象中的所有属性,由容器来注入
  1. 构造器注入
  2. set注入
  3. 拓展方式注入(p命名空间、c命名空间,需要导入约束)

scope 作用域

  1. 单例模式 singleton:每次获取都是同一个对象,spring默认
  2. 原型模式 prototype:每次get的时候都是新对象
  3. request、session、application。。。只能在web开发中使用

bean自动装配 Autowired

3种方式

  1. 在xml中显示的配置
  2. 在java中显示配置
  3. 隐式的自动装配

byName:自动查找和set后面对应的bean

byType:自动查找与对象属性相同的bean

 

使用注解

  1. 导入约束 context约束
  2. 配置注解支持 <context:annotation-config/>

@Autowired(先按类型再按)

在setter和属性上使用,可以忽略setter方法

@Autowired(required=false) 属性可为空

@Qualifier(value="beanName") 指定某个bean

@Resource注解

@Resource功能更强大

@Resource也可以实现自动装备

@Resource(name="")

 

@Autowired和@Resource区别

  1. 都是自动装配,都可以放在属性字段上
  2. @Autowired通过byType的方式实现,再通过byName
  3. @Resource默认通过byname的方式实现,如果找不到名字,则用byType实现

 

如何使用

  1. 使用注解,需要AOP的包,context约束

<context:component-scan base-package="com.*"      指定要扫描的包,这个包下的注解就会生效

<context:annotation-config/>  注解驱动 

@Component : 组件,放在类名上,等价于<bean id="xxx" class="com.xxx.xxx"/>,说明该类被管理了

以下三个注解和@Component的功能是一样的

  • @Repository 在dao层使用
  • @Service 在service层使用
  • @Controller 在controller层使用

@Value :在setter和成员变量上,对基础类型赋值

@Scope :作用域 

 

xml与注解

  1. xml适用于各种场合
  2. 注解不是自己的类无法适用,维护相对复杂

xml用来管理bean;

注解只负责完成属性的注入

 

@Configuration 代表是一个配置类,等价于bean.xml

@ComponentScan("***")  扫描包

@Bean 等价于 <bean id="" class=""/>

 

ApplicationContext context = new AnnotationConfigApplicationContext(XXXConfig.class)

 

AOP

代理模式

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值