初识Spring,Spring的系统架构
1、Spring全家桶是一个很nb的生态,我们可以用他开发自己想要的格式的功能
Core Container是Spring的容器,java的对象交给Spring的容器来管理
AOP面向切面编程,Aspects是AOP思想的实现。不太懂,目前理解是中间商,Aspects起到承上启下的作用
DataAccess/Integration 数据访问/集成 用来做数据持久化的架构
Web 开发网页的架构
IOC与DL
IOC(控制反转)是将类属性中的对象的创建权交给外部管理,降低代码的耦合性,这里的外部是Spring,例如
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
Spring的注解文件
<bean id="bookDao" class="com.lrui1.dao.impl.BookDaoImpl"/>
随后可在代码中直接使用Spring容器中的对象
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
代码的耦合性大大降低
DL(依赖注入)是在一个类依赖另一个类的情况下,往该类注入相应的依赖(创建对应的对象)
java代码
public interface BookDao {
public void save();
}
public class BookDaoImpl implements BookDao {
public void save() {
System.out.println("book dao save ...");
}
}
public interface BookService {
public void save();
}
public class BookServiceImpl implements BookService {
private BookDao bookDao;
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
// 该方法必须创建
public void setBookDao(BookDao bookDao) {
this.bookDao = bookDao;
}
}
xml代码
<bean id="bookDao" class="com.lrui1.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.lrui1.service.impl.BookServiceImpl">
<!-- 配置service与dao的关系-->
<property name="bookDao" ref="bookDao"/>
</bean>
xml,property标签中,name指的是该bean中需要依赖的类名,ref是该xml文件中的对应id的bean
可理解为name = new ref
bean的基础配置
bean还有很多的属性哦,看看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">
<bean id="bookDao" class="com.lrui1.dao.impl.BookDaoImpl"/>
<bean id="bookService" name="service1" class="com.lrui1.service.impl.BookServiceImpl" scope="prototype">
<!-- 配置service与dao的关系-->
<property name="bookDao" ref="bookDao"/>
</bean>
</beans>
(1)id是xml文件中唯一指定的名称
(2)class是类路径,该路径的终点就是bean的定义
(3)name可以定义多个名字,用空格逗号分号隔开
(4)scope可以定义对应bean是单例还是双例,单例—bean对象在内存空间中就1个地址,双例—bean对象在对象空间中可以有多个地址
(5)property负责依赖注入
适合交给容器管理的bean
- 表现层对象
- 业务层对象
- 数据层对象
- 工具对象
不适合交给容器管理的bean
- 封装实体域的对象——有数据要存在里面的