Spring几大核心功能:
1. IoC/DI 控制反转/依赖注入
2. AOP 面向切面编程
3.声明式事务
Spring的runtime
1.Test :提供spring的测试功能
2.Core container :核心容器
beans : 创建类对象并管理对象
core: 核心类
context:关联上下文,比如导入配置文件等等
SpEl: expression.jar
3.Aop:实现aop依赖的包
4.Aspects:aop切面依赖的包
5.Data Access/Integration :
JDBC: 封装了JDBC的代码
ORM:封装了持久层框架的代码 hebernate
transactions:对应 spring-tx.jar,声明式事务使用
6.Web :封装了需要完成WEB功能时候的包 例如:由 tomcat 加载 spring 配置文件时需要有 spring-web包
Spring其实相当于一个大容器,现在被拆分为若干个ja包之前只有一个jar包。
核心功能详解:1.控制反转
控制的意思是对类实例对象的控制
反转指的是控制权反转交给spring(之前都由程序员管理 )
好处:解耦 程序员不需要管理对象,解除了程序员与对象管理的耦合
使用步骤:
1.导入核心包 core context bean expression和日志包common-logging
2.在src下创建applicatinContext.xml 其中配置的所有信息都存储在了ApplicationContext容器中
该xml是基于schema的 ,拓展名为XSD 是DTD的升级版,有更好的拓展性
每次引入一个 xsd 文件是一个 namespace(xmlns)
3. 配置XML bean表示管理该类,并设置ID为peo
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/sc
hema/beans
http://www.springframework.org/schema/beans/spring-be
ans.xsd">
<!-- id 表示获取到对象标识
class 创建哪个类的对象
-->
<bean id="peo" class="com.bjsxt.pojo.People"/>
</beans>
测试方法: applicationContext中存储了所有的信息 通过getBean(id,返回值类型)获得值,如果没填写第二个参数,那么返回的是object类型
其中有一个方法 ac.getBeanDefinitionNames(); 是获得spring管理的所有类名
ApplicationContext ac = new
ClassPathXmlApplicationContext("applicationContext.xm
l");
People people = ac.getBean("peo",People.class);
System.out.println(people);
Spring创建对象的三种方式
1. 无参构造函数:默认情况
2 .有参构造函数:
①首先需要类中存在有参构造函数
② 然后再bean中声明
<bean id="peo" class="com.bjsxt.pojo.People">
<!-- ref 引用另一个 bean value 基本数据类型或
String 等 -->
<constructor-arg index="0" name="id" type="int"
value="123"></constructor-arg>
<constructor-arg index="1" name="name"
type="java.lang.String" value="张三
"></constructor-arg>
</bean>
如果不详细标注。只有index name 这两个不一定是检索到唯一的构造器,那么就去找最下边的 ,如果再加上type就可以确定唯一的构造器
属性赋值方式(注入)
1.基本数据类型或string 有如下两种形式
<bean id="peo" class="com.bjsxt.pojo.People">
<property name="id" value="222"></property>
<property name="name> <value>123</value></property>
</bean>
2. 属性是set list array
不同的类型只需要将相应的类型改成相应的就行
<property name="sets">
<set>
<value>1</value>
<value>2</value>
<value>3</value>
<value>4</value>
</set>
</property>
3.属性是map
<property name="map">
<map>
<entry key="a" value="b" >
</entry>
<entry key="c" value="d" >
</entry>
</map>
</property>
4.属性是properties
<property name="demo">
<props>
<prop key="key">value</prop>
<prop key="key1">value1</prop>
</props>
</property>