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(转)(代码片段