Spring-----控制反转 ioc

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>

猜你喜欢

转载自blog.csdn.net/weixin_41298572/article/details/88901696