spring-ioc
spring-ioc
MR.XSSioc
添加依赖
1 | <dependencies> |
创建spring配置文件
1 |
|
Bean
<bean id="bookDao" class="com.xu.Dao.impl.BookDaoImpl" scope="prototype"></bean>
默认为单例模式,可以使用scope属性更改
使用name属性取别名
主类
默认使用无参构造器创建bean
1
2
3
4
5
6
7
8
9public class App {
public static void main(String[] args) {
//获取ioc容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("config.xml");
//拿到bean
BookDao bookDao =(BookDao) ctx.getBean("bookDao");
bookDao.save();
}
}
生命周期
- init-method destory-method 初始化,销毁方法,销毁必须关闭容器才会显示
手动关闭
直接使用ConfigurableApplicationContext接口中的close()方法
注册关闭钩子,在虚拟机关闭之前,先关闭容器再关闭虚拟机
ConfigurableApplicationContext接口的registerShutdownHook()操作
依赖注入
setter注入
注入类的属性
简单类型
类中设置set方法,利用value值在bean标签中进行注入
引用类型
引用外部对象,先设置外部类的bean标签,然后再需要引用的bean标签中使用ref属性,来注入引用类型
构造器注入
自动装配
- 按照类型装配
- 按id装配
数据源管理
1 | <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> |
加载properties配置文件
开辟context命名空间
加载配置文件
1
<context:property-placehoder location="properties文件位置">
使用${}取值
获取bean的三种方法
1 | BookDao bookDao1 =(BookDao) ctx.getBean("bookDao"); |
创建容器两种方式
- 使用ClassPathXmlApplicationContext创建容器
- 使用绝对路径创建容器,FileSystemXmlApplicationContext创建容器
注解开发
@component组件
在配置文件中配置
1
<context:component-scan base-package="组件所在位置"/>
纯注解开发
- 创建配置类来替换配置文件
- 在配置类上添加@configuration和@componenScan注解
- 在主类中使用AnnotationConfigApplicationContext(“配置类”)加载配置类,获取ioc容器
- 单例,多例@scope(“prototype”)
- 初始化和销毁
- @PostConstruct注解标注初始化方法
- @PreDestory注解标注销毁方法
使用注解注入
注入引用类型
- @Autowired———————-该注解是利用类型注入的,不需要提供setter方法,要保证有无参构造
- 若有多个相同类型的bean需要按类型注入,加入@Qualifier(“bean的名称”)
注入简单类型
- @Value注入简单类型
加载properties文件
- @PropertySource(“配置文件名”),多个配置文件可以使用字符串数组表示
第三方包注入
1 |
|
- 第三方Bean还可以单独设置配置类,在主配置类中使用@Import(“第三方配置类”),可以使用数组方式导入多个
- 引用类型直接给参数就行
Spring整合mybatis
导入坐标
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.31</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>造jdbc连接配置类
1
2
3
4
5
6
7
8
9
10
11
12
13public class JdbcConfig {
//定义一个方法管理对象
//@Bean,表示当前方法的返回值是一个Bean
public DataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setUrl("jdbc:mysql://localhost:3306/spring");
druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
druidDataSource.setUsername("root");
druidDataSource.setPassword("root");
return druidDataSource;
}
}mybatis配置类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public class MybatisConfig {
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.xu.pojo");
ssfb.setDataSource(dataSource);
return ssfb;
}
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.xu.dao");
return msc;
}
}导入配置类
1
2
3
4
5
public class SpringConfig {
}
Comment
匿名评论隐私政策