Spring:
(1)spring家族。(2)spring【核心】框架。
Spring框架介绍:
轻量级框架,IOC和AOP为核心,整合第三方的应用框架。
Spring的优势:
(1)方便解耦,简化开发。(2)面向切面,插拔式开发。
SpringIoc介绍:
(1)解耦,面向接口开发。(2)控制反转,将创建对象的权力交给spring框架控制。
Spring框架配置:
(1)导入spring框架jar包。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Tno3QjQ-1640145276583)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211012101756085.png)]
-
spring-core:依赖注入IoC与DI的最基本实现
-
spring-beans:Bean工厂与bean的装配
-
spring-context:spring的context上下文即IoC容器
-
spring-expression:spring表达式语言
(2)通过ApplicationContext 接口创建spring ioc 容器。
ClassPathXmlApplicationContext: 它是从类的根路径下加载配置文件。
FileSystemXmlApplicationContext: 它是从磁盘路径上加载配置文件。
AnnotationConfigApplicationContext: 当我们使用注解配置容器对象时,使用AnnotationConfigApplicationContext类创建。
Spring bean的作用域有几种?
(1)scope=“singleton” 单例 (spring默认的作用域)。
(2)prototype 多例(每次获取对象的时候,spring会创建一个新的对象返回)。
(3)request WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 request 域中。
(4)session WEB 项目中,Spring 创建一个 Bean 的对象,将对象存入到 session 域中。
Spring实例化 Bean 的三种方式?
(1)使用默认无参构造函数创建。【默认的】
(2)spring管理静态工厂-使用静态工厂的方法创建对象。
(3)spring管理实例工厂-使用实例工厂的方法创建对象。
Spring依赖注入的三种方式?
(1)构造方法注入:
<bean id="userService" class="com.wojia.service.UserService">
<constructor-arg index="0" ref="userDao"></constructor-arg>
<constructor-arg index="1" ref="personDao"></constructor-arg>
</bean>
构造器的参数,index属性 参数的位置,ref 注入的对象标识。
(2)set方法注入:
<bean id="userService" class="com.wojia.service.UserService">
<property name="userDao" ref="userDao"></property>
<property name="personDao" ref="personDao"></property>
</bean>
(3)注解的方式注入:
<context:annotation-config></context:annotation-config> <!--支持注解-->
通过@Autowired 或 @Resource 注入。
@Autowired 和 @Resource注解的区别?
(目标都是一致的,都是为了装配对象)
@Resource 是Java本身提供的。
@Resource注解装配方式,先按照属性的名字去装配【byName】,如果匹配不上 在按照 属性类型去装配【byType】。
@Autowired是spring官方提供的。
@Autowired注解的装配方式,按照属性的类型进行装配。【byType】
Spring包扫描的机制?
(1)配置扫描包名 <context:component-scan base-package=“com.wojia”/>
(2)spring会扫描所有带有相关注解的类,创建并装配。
(3)哪些注解:@Service @Component @Repository @Controller
【建议:业务层: @Service 持久层:@Repository 控制层:@Controller 其他:@Component】
web工程集成spring:
(1)依赖spring相关的jar包,spring-contex,spring-web,mybiats-spring 。
(2)配置web.xml【web.xml是所有web项目的入口,tomcat启动的时候首先要去加载web.xml】。
配置spring容器环境。
<!-- 配置spring容器环境 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application-spring.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
(3)配置application-spring.xml。【spring的配置文件,让spring管理bean,注解的方式,包级扫描的方式。】
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.wojia.service"></context:component-scan>
(4)servlet 获取 springioc容器中的对象。
@Override
public void init() throws ServletException {
//web项目中如何获取spring的容器
WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(super.getServletContext());
this.stuService = ctx.getBean(StuService.class);
}
web工程中mybatis框架和spring框架的整合:
(1)关键依赖:mybatis-spring,spring-jdbc。【注意版本的问题:mybatis3.3,mybatis-spring:1.2.2】
(2)创建application-mybatis.xml 配置文件。
1,配置数据源。
2,sql会话工厂。
3,配置mybaits框架扫描的包【只限mapper接口】。
(3)spring的核心配置文件中引入
(4)service层调用mapper层只需要注入即可。
@Resource
private ITbStuMapper tbStuMapper;