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.测试