1.spring概述
1.1什么是spring?
Spring是分层的Java se/ee应用full-stack轻量级开源框架(听说现在流行轻量级),以Ioc(Inverse Of Control:反转控制)和AOP(Aspect Oriented Programmming:面向切面编程)为内核。
1.2为什么是spring?
①提供了SpringMVC和持久层 Spring JDBCTemplate一级业务层事务管理等众多的企业级技术,还能整合开源世界众多著名的第三方框架和类库。
②方便解耦,简化开发
③AOP编程的支持
④方便程序的测试
1.3Spring的体系结构
2怎么写开发Spring程序(傻瓜版)
2.1开发步骤
1.导入Spring开发的基本坐标(meavn)
<!--导入spring的context坐标,context依赖core、beans、expression-->
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.5.RELEASE</version>
</dependency>
</dependencies>
2.编写Dao接口和实现类
好像没有必要编写接口,先不要管接口
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("UserDao save method running....");
}
}
3.创建Spring核心配置文件
在resource下创建applicationContext.xml文件(这是一个惯例的名字)
这就是一段模板了
<?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/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
</beans>
4.在配置文件中配置UserDaoImpl
在上面的<beans></beans>标签之间插入需要的内容
注意下面演示了大多数的标签写法,写的时候按需配置
<bean id="vt1" class="domain.Teacher">
<property name="age" value="33"></property>
<property name="name" value="王"></property>
</bean>
<bean id="vt2" class="domain.Teacher"></bean>
<bean>
//id:在容器中的Bean实例的唯一标识,不允许重复
//class:要实例化的Bean的全限定名
//scope:Bean的作用范围,常用的是Singleton和prototype
<property>//属性注入
<list>//集合
<value></value>或<bean></bean>或等等
</list>
</property>
<property>
<constructor-arg name="" value="">//相当于有参构造函数
</constructor-arg>
</property>
<property name="teacherMap">
<map>//map好像只能这样初始化,感觉挺麻烦的
<entry key="t1" value-ref="vt1" ></entry>
<entry key="t2" value-ref="vt2"></entry>
</map>
</property>
<property name="properties">
<props>
<prop key="p1">aaa</prop>
<prop key="p2">bbb</prop>
<prop key="p3">ccc</prop>
</props>
</property>
</bean>
5.使用Spring的API获得Bean实例
public void test1(){
ApplictionContext myapp=new ClassPathXmlApplicationContext("applicationContext.xml");
UserDao userDao = (UserDao) myapp.getBean("userDao");
userDao.save();
}
3.Spring配置文件
3.1基本配置
默认情况下调用无参构造函数。
id:Bean实例在Spring容器汇总唯一的标示
class:Bean的全限定名称
scop:对象作用范围
取值范围 | 说明 |
---|---|
singleton | 默认值,单例的 |
prototype | 多例的 |
request | WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中 |
session | WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中 |
global session | WEB 项目中,应用在 Portlet 环境,如果没有 Portlet 环境那么globalSession 相当于 session |
①singleton
Bean实例化个数:1个
生命周期:
对象创建:当应用加载,创建容器时,对象就被创建了
对象运行:只要容器在,对象一直活着
对象销毁:当应用卸载,销毁容器时,对象就被销毁了
Bean实例化三种方式
1.无参构造方法实例化
2.工厂静态方法实例化
public class StaticFactoryBean {
public static UserDao createUserDao(){
return new UserDaoImpl();
}
}
<bean id="userDao" class="com.itheima.factory.StaticFactoryBean"
factory-method="createUserDao" />
3.工厂实例方法实例化
工厂的非静态方法返回Bean实例
public class DynamicFactoryBean {
public UserDao createUserDao(){
return new UserDaoImpl();
}
}
<bean id="factoryBean" class="com.itheima.factory.DynamicFactoryBean"/> <bean id="userDao" factory-bean="factoryBean" factory-method="createUserDao"/>
Bean的依赖注入概念
依赖注入(Dependency Injection):它是Spring框架核心IOC的具体实现