spring学习网址:https://www.bilibili.com/video/av47952931?p=15(巨详细)
Java 整体的框架架构图(理清各个框架工作在哪个层)
Spring
spring的核心是IOC(控制反转,意思是把创建对象也就是new类对象的权利交给spring容器,要用到类对象的时候,直接从spring容器中拿),DI(依赖注入)以及API切面编程
Spring使用过程(首先是往项目中导包,idea的话直接新建一个spring项目,然后包就自动为你导好了,然后就是建目标类,这个类是之后要交给spring来创建对象的类,然后新建一个xml文件,idea直接新建一个spring xml文件,然后为目标类添加配置,一个bean可以理解为一个对象,id是之后spring创建对象时调用,可以理解为是对象的id,class是目标类所在的位置,property是定义类的属性,name是属性名称,value是为属性的赋值,ref是当属性是引用属性时,ref是bean中的id,注意类有属性的时候,你想用spring给属性赋值的时候,每个属性都必须要有setter函数,才能在xml中注入属性值,所以不需要定义任何构造函数)
1 整体过程导图
2 导包:用idea编辑器的时候新建项目是spring项目时,这些jar包是自动导入的
3 创建目标类,也就是之后要把创建对象权利交给spring的类
4 新建配置文件(任何位置,一般放在src下,任何名字都行,一般命名为applicationContext),在idea的编辑器中,新建如下的spring配置文件,就会自动添加了schema约束,可以直接的添加配置即可
配置文件的内容,用idea时候直接在任何位置(一般在src下)新建一个XML文件,如下
那么生成的xml文件就如下:
需要在里面添加配置,class是你要把创建对象的权利交给spring的类所在的位置,id是用于之后从spring容器获得实例时使用
<?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">
<!--配置service-->
<bean id="UserServiceImplID" class="com\hdl\interfaces\UserServiceImpl.java" </bean>
</beans>
5 测试
DI的详解(依赖注入)
#目标类
public class BooksaleServiceImpl implements BooksaleService {
public void addbook(){
System.out.println("add a sale book");
}
}
#目标类
public class BookServiceImpl implements BookService {
private BooksaleService booksaleService;
//依赖注入时必须要有setter方法
public void setBooksaleService(BooksaleService booksaleService) {
this.booksaleService = booksaleService;
}
public void addbook(){
booksaleService.addbook();
}
}
#xml的配置
<bean id="BookServiceImplID" class="E:\IdeaWorkspace\springStudy\src\com\hdl\services\BookServiceImpl.java">
<property name="" ref="BooksaleServiceImplID"></property>
</bean>
<bean id="BooksaleServiceImplID" class="E:\IdeaWorkspace\springStudy\src\com\hdl\services\BooksaleServiceImpl.java"></bean>
属性注入:
注解(用注解来替代xml的配置)
将注解加在类名上面,相当于是把类放在了spring里,有三种注解,@Controller,@Service,@Repository分别是放在controller层(action类上),Service层(处理层),dao层(数据交互层),作用是一样的,相当于 作用都是类放在Spring上了,@Controller(“StudentAction”) 相当于 那么属性注入又怎么注解呢?加在属性上的注解是@Autowired,用@Autowired 相当于是同类型注入,只要那个类型的类加入到spring中了,就能直接把属性注入给它,或者同时用两个注解@Autowired@Qualifier(“studentDaoId”)意思是将这个对象的值注入给它