Spring框架

Spring框架部分内容

什么是Spring
Spring是一个轻量级的开源框架
Spring可以将各种框架整合在一起
Spring的核心是IOC和AOP

Spring框架的优点
将对象之间的依赖关系交给Spring,降低组件之间的耦合性
对主流的框架提供了很好的集成支持,如Hibernate,Struts2等
Spring DI机制降低了业务对象替换的复杂性
Spring的高度可开放性,并不强制依赖于Spring,开发者可自由选择

IOC/DI
IOC即控制反转,是一种设计思想
1.将主动创建对象变为被动接受
2.实现代码的解耦

DI即依赖注入,是IOC的一种实现
用容器来管理所i有对象

Spring容器

是Spring的核心,容器负责管理对象。

容器的两种实现:
BeanFactory :最简单容器,给DI提供基本支持
ApplicationContext:继承BeanFactory,有更多的功能实现

常用方法:
getBean方法:获取容器内指定对象
containBean方法:判断容器中是否存在指定的对象
isPrototype方法:判断指定的对象是否为非单例对象
isSingleton方法:判断指定的对象是否为单例对象

ApplicationContext的主要实现类

ClassPathXmlApplication:从类的根路径下加载xml配置文件
AnnotionConfigApplication:使用注解配置容器对象时,用次类创建spring容器

Xml装配Bean

使用bean标签来装配Bean对象

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(“application.xml”);
通过名字来获取Bean对象
User user = (User)ctx.getBean(“user”);
通过类型来获取Bean对象
User user1 = ctx.getBean(User.class)

默认情况下,Spring只为每个在IOC容器里声明的Bean创建一个唯一实例,整个IOC容器都能共享此实例,即单例模式

依赖注入

Bean对象中的属性值通过IOC容器进行注入,这种方式成为依赖注入

依赖注入的方式有三种
1.属性注入
通过setter方法注入

在xml中通过使用property标签来注入,其中name属性是对象中的属性名,
value是属性值。



<property name=“age” value=“20" >

集合使用list标签完成装配










2.构造器注入

通过构造方法注入,可以在创建对象时就注入属性值。
•在xml中通过使用constructor-arg标签来注入。





•在User类中需要创建一个对应的构造方法

通过index属性指定参数的顺序

<constructor-arg value="1“ index=“0”>
<constructor-arg value="张三“index=“1” >
<constructor-arg value="20“ index=“2” >

通过类型来匹配参数。




字面值:可以通过value属性或value标签来注入。
若字面值包含特殊字符,可以用<![CDATA[]]>将字面值包裹起来

<![CDATA[]]>


20

引用其他Bean

Bean对象中的属性不仅仅是基本类型或字符串,还有可能是其他Bean对象。
在XML文件中使用ref来引用其他Bean对象。








3.工厂方法注入

注入Properties集合

使用props标签来注入java.util.Properties对象,prop是子标签,每个
子标签必须定义key属性。



root
123456
jdbc:mysql://localhost:3306/demo
<prop key=“driverclass">org.gjt.mm.mysql.Driver


使用外部属性文件

Spring提供了BeanFactory的一个后置处理器
PropertyPlaceholderConfigurer来读取外部属性文件,在Bean配置文件中
使用${属性名}来访问对应的值。

通过context:property-placeholder来加载外部文件

<context:property-placeholder location=“classpath:db.properties”/>



d b u s e r < / p r o p > < p r o p k e y = " d b p a s s " > {dbuser}</prop> <prop key="dbpass"> dbuser</prop><propkey="dbpass">{dbuser}
d b u r l < / p r o p > < p r o p k e y = " d r i v e r c l a s s " > {dburl}</prop> <prop key="driverclass"> dburl</prop><propkey="driverclass">{driverclass}


基于注解装配Bean
Spring提供了以下几个注解来完成Bean的自动装配
@Autowired
作用:装配Bean
用法:配置在属性,set方法,构造方法上
按类型装配依赖对象,如果有多个类型则按名称匹配。默认
情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性
为false。

@Qualifier
配合@Autowired使用。把按类型配置变为按名称匹配
用法:配置在属性,set方法上

@Resource
作用:装配Bean
用法:配置在属性,set方法上
@Resource注解默认按名称装配。名称可以通过name属性指定,如果没有指定name属性,默认取属性的名称作为bean名称寻找依赖对象。

@PostConstruct
指定初始化方法
初始化方法在容器产生Bean对象的时候被调用

@PreDestory
销毁方法
销毁方法在容器主动调用销毁的时候被调用

需要在xml文件中加入
context:annotation-config</context:annotation-config>

配置类中的自动扫描

@ComponentScan用于指定扫描的包
@Component用于标识需要装配的类

指定从哪个类所在的包开始扫描
@ComponentScan(basePackageClasses = ApplicationLauncher.class)
指定扫描的起始包
@ComponentScan(basePackages = “Application”)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值