Spring是什么

Posted Zong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring是什么相关的知识,希望对你有一定的参考价值。

Spring是轻量级的开源的JavaEE框架,目的在于解决企业应用开发的复杂性。

核心的两个部分:
1)IOC:控制反转,把创建对象和对象之间的调用过程交给Spring进行管理,目的是降低耦合度
底层原理:工厂模式、xml解析、反射
过程:
第一步:xml配置文件,配置创建的对象
<bean id="dao" class="com.zong.UserDao"></bean>
第二步:在工厂类中进行xml解析,并通过反射创建对象

class UserFactory{
    public static UserDao getDao(){
       String classValue = class属性值;//通过xml解析
       Class clazz = Class.forName(classValue);
       return (UserDao)clazz.newInstance(); //通过反射创建对象
    }
}

IOC底层就是一个对象工厂

IOC的bean管理包括创建对象和注入属性

IOC的bean管理操作包括:
1)创建对象
2)注入属性
实现的方式有:
a.基于xml配置文件的方式实现
(1)使用Bean标签,添加属性,就可以实现对象的创建
(2)Bean标签属性介绍:
*id:唯一标识
*class属性:类全路径(包类路径)
DI:依赖注入,添加属性
set方法注入
bean标签内添加property标签,即可注入属性,property标签的属性介绍:
name:属性名
value:属性值

<bean id="book" class="com.zong.spring">
  <property name="bname" value"论语"></property>
  //设置null值
  <property name="bauthor">
    <null/>
  </property>
  //属性赋值左右尖括号,用<![CDATA[]]>方式
  <property name="naddress">
    <value><![CDATA[<<南京>>]]></value>
  </property>
  //外部Bean,属性赋值为对象,用ref属性
  <property name="userDao" ref="user"></property>
  //内部级联赋值,需要生成get方法
  <property name="userDao.attr1" value="value1"></property>
  //内部Bean写法,等同于ref写法
  <property name="userDao1"
    <bean id = "user1" class="com.zong.spring">
      <property name ="dname" value ="1" ></property>
    </bean>
  </property>  
</bean>
<bean id="user" class="com.zong.spring">
  //外部级联赋值
  <property name="attr1" value="value1"></property>
</bean>

有参数构造注入

<bean id = "order" class="com.zong.spring">
  <constructor-arg name="oname" value="电脑"></constructor-arg>
</bean>

b.基于注解的方式实现
2)AOP:面向切面,不修改源代码进行功能增强

核心的4个JAR包:
bean、context、core、expression

以上是关于Spring是什么的主要内容,如果未能解决你的问题,请参考以下文章

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段

spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象(代码片段

解决spring-boot启动中碰到的问题:Cannot determine embedded database driver class for database type NONE(转)(代码片段

spring aop中this和target区别