一、Spring简单了解
1、Core Container
是spring的核心容器,是装对象的容器
2、AOP:面向切面编程,教你程序怎么做
Aspects:AOP思想实现
3、Data Access/Intergration
Data Access:数据访问
Data Intergration:数据集成
需要单独介绍Transactions,也就是事务,后面补充
4、Web:Web开发
5、Test:单元测试与集成测试
二、核心概念
我们在编写代码时,经常会通过new对象来书写,这样会造成耦合度较高,如果我们在业务层需要实现另一个方式时,new对象也随之变化,后期维护也要跟着变动,这时我们就可以在程序中不主动使用new产生对象,转换为由外部提供对象。也就是我们接下来要学的IOC控制反转。
Spring提供了一个容器,称为IOC容器,用来充当IOC思想中的“外部”
IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean。
DI(Dependency Injection)依赖注入,在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入。
三、IOC入门案例
1.导入spring坐标
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
</dependencies>
2.定义spring管理的类(接口)
public interface BookService {
public void save();
}
public class BookServiceImpl implements BookService {
private IBookDao bookDao = new BookDaoImpl();
public void save(){
System.out.println("book service save...");
bookDao.save();
}
}
3.创建spring配置文件,配置对应类作为spring管理的bean
<?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">
<!--1.导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<!--2.配置bean-->
<!-- bean标签表示配置bean-->
<!-- id属性表示给bean起名字-->
<!-- class属性表示给bean定义类型-->
<bean id="bookDao" class="com.yy.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.yy.service.impl.BookServiceImpl"/>
</beans>
PS:bean定义时id属性在同一个上下文中不能重复
4.初始化IOC容器,通过容器获取bean
public class App2 {
public static void main(String[] args) {
//3.获取IOC容器(加载配置文件得到上下文对象,也就是容器对象)
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//4.获取bean
BookService bookService = (BookService) context.getBean("bookService");
bookService.save();
}
}
四、DI入门案例
1.删除使用new的形式创建对象的代码
2.提供依赖对象对应的setter方法
public class BookServiceImpl implements BookService {
//5.删除业务层中使用new的方式创建的dao对象
private IBookDao bookDao;
public void save(){
System.out.println("book service save...");
bookDao.save();
}
//6.提供对应的set方法
public void setBookDao(IBookDao bookDao) {
this.bookDao = bookDao;
}
}
3.配置service与dao之间的关系
<?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">
<!--1.导入spring的坐标spring-context,对应版本是5.2.10.RELEASE-->
<!--2.配置bean-->
<!-- bean标签表示配置bean-->
<!-- id属性表示给bean起名字-->
<!-- class属性表示给bean定义类型-->
<bean id="bookDao" class="com.yy.dao.impl.BookDaoImpl"/>
<bean id="bookService" class="com.yy.service.impl.BookServiceImpl">
<!-- 7.配置service与dao的关系-->
<!-- property标签表示配置当前bean的属性-->
<!-- name属性表示配置哪一个具体的属性,对应的是BookServiceImpl中的-->
<!-- ref属性表示参照哪一个bean,对应的是.xml文件中的-->
<property name="bookDao" ref="bookDao"></property>
<!-- value是传基本数据类型,ref传引用数据类型,并且所引用的对象要在容器中-->
</bean>
</beans>
五、bean基础配置
1.bean别名配置
类别 | 描述 |
名称 | name |
类型 | 属性 |
所属 | bean标签 |
功能 | 定义bean的别名,可定义多个,使用逗号(,)分号(;)空格( )分隔 |
范例 |
<bean id="bookDao" name="dao bookDao2" class="com.yy.dao.impl.BookDaoImpl"/> |
PS:获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionException: No bean named ‘bookDao1’
2.bean的作用范围配置
spring创建的bean默认是一个单例实例。类似于new的对象都是一个对象,内存地址都一样。
用scope可以配置是否单例
类别 | 描述 |
名称 | scope |
类型 | 属性 |
所属 | bean标签 |
功能 |
定义bean的作用范围,可选范围如下: singleton:单例(默认) prototype:非单例 |
范例 |
<bean id="bookDao" scope="prototype" class="com.yy.dao.impl.BookDaoImpl"/> |
适合交给容器进行管理的bean:
表现层对象:servlet
业务层对象:service
数据层对象:dao
工具对象:util
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/111713.html