spring学习笔记

一、ioc( Inversion of Control )控制反转

1、原本IoC容器负责对象的创建、初始化等一系列工作,交给“别人”创建

2、spring技术实现了ioc的思想,所以原本要自己主动new的对象交给了spring进行new(创建),在spring中被创建或被管理的对象在IoC容器中统称为Bean

3、spring怎么创建呢?spring提供了一个称为spring容器或者是(ioc容器)的一个容器,用来创建对象

4、总的来说就是由主动new对象转成由ioc容器提供对象

5、IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean

二、DI ( Dependency Injection )依赖注入

1、在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

2、充分解耦:使用ioc容器管理bean,在ioc容器内将有依赖关系的bean进行关系绑定

最终效果:使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系

 

三、Ioc入门案例

1.导入spring的坐标spring-context,对应版本是5.2.10.RELEASE

2.配置bean:bean 标签标示配置bean,id属性标示给bean起名字,class属性表示给bean定义类型

 

3.获取Ioc容器

ApplicationContext ctx=new ClassPathXmlApplicationContext(applicationContext.xml);

4.获取bean

BookDao bookDao = (BookDao) ctx.getBean(bookDao);
bookDao.save();

 

 

四、DI入门案例

1.删除业务层的new创建dao对象

2.提供对应的set方法

配置server与dao的关系

 property标签表示配置当前bean的属性
name属性表示配置那个具体的当前类里面的那个属性
ref属性表示参照哪一个bean

 

五、bean配置

1.基本配置

2.bean别名配置

在bean中使用name配置

 

3.bean的作用范围

通过在bean标签配置scope=prototype即可设置,默认是singleton

 

六、bean的实例化

1.使用构造方法(常用)

2.通过静态工厂创建

在bean中class指向静态工厂类,通过使用 factory-method=getOrderDao指定使用工厂的方法new对象

 

 

3、使用实例工厂创建对象

4、使用实例工厂FactoryBean实例化bean

1.创建UserDaoFactoryBean类

2.配置

 

 

七、依赖注入

1、set注入

 

 

2、构造器注入

八、自动装配

 1、按类型

 配置中使用bean标签autowire属性设置自动装配的类型

集合注入

 

 加载properties文件

获取容器

 

获取bean

 

 

 九、Ioc容器总结

 

十、纯直接开发

 

依赖注入:自动装配

 

总结

 

 十一、spring整合mybatis

回忆mybatis

1.编写实体类
2.编写核心配置文件

3.编写接口
4.编写Mapper.xml

5.测试

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.19</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
</dependency>
</dependencies>

解决Invalid bound statement (not found): net.lzzy.mapper.UserMapper.selectUser
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>

 

步骤:

1. 需要引入的架包:

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.19</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
</dependencies>

 2.编写配置文件

 3.测试