Spring 容器框架的使用
加入需要使用的依赖:“spring-context”、“ junit”、“ spring-test”、“lombok”、“mybatis”、“mysql”、“logback-classic”、“mybatis-spring”、“spring-jdbc”、数据源“druid”
<dependencies>
<!--Spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version>
</dependency>
<!--MyBatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>6.0.6</version>
</dependency>
<!--MyBatis和Spring的整合包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.7.RELEASE</version>
</dependency>
<!--数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
Dept实体类
@Data
public class Dept {
private int deptNo;
private String dname;
private String loc;
}
Mapper接口
public interface IDeptMapper {
@Select("select * from dept")
List<Dept> list();
}
①使用Java类
使用Java类来替换application-config.xml 完成容器的初始化
1.创建一个conf.ApplicationContextConfig.java类 需要使用一个注解来指定它为Spring的配置文件
@ContextConfigurarion
@Configuration// 通过该注解,把一个普通的类变成了Spring的核心配置类
public class ApplicationContextConfig {}
2. 如何创建对象,加入到IOC容器--> 写一个方法,完成对象的创建,进行返回,通过一个注解加入到IOC容器中 @Bean
@Bean
public Dept createDept(){
Dept dept=new Dept();
3. 通过注解类进行 AnnotationConfigApplicationContext 配置类的解析,得到一个容器对象
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationContextConfig.class);
4. 通过容器对象来获取指定的Bean对象
// 通过容器对象取出bean对象
Dept dept = context.getBean(Dept.class);
注解方式整合
配置Druid数据源 、SqlSession工厂和Mapper注册
@Configuration // 通过该注解,把一个普通的类变成了Spring的核心配置类
@PropertySource(value = "classpath:db.properties") // 加载属性配置文件
@MapperScan(basePackages = "org.example.mapper")// 把当前指定包路径下的所有Mapper接口加入到IOC容器中
public class MyBatisConfig {
@Value("${driver}") // 读取属性配置文件内容
private String driverClassName;
@Value("${url}")
private String url;
@Value("${user}")
private String userName;
@Value("${pwd}")
private String password;
//数据源 DruidDataSource
@Bean
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl(url);
dataSource.setUsername(userName);
dataSource.setPassword(password);
return dataSource;
}
// SqlSessionFactory 创建
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
factoryBean.setDataSource(dataSource);
return factoryBean;
}
}
代码测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = ApplicationContextConfig.class)
public class MyBatisSpringCrudTest {
@Autowired
private IDeptMapper deptMapper;
@Test
public void list(){
List<Dept> list = deptMapper.list();
list.forEach(System.out::println);
}
}
②使用XML配置文件
-
在 resources 目录下,创建一个application-context.xml文件,它充当我们的容器在其中使用 <bean> 来创建对象,只需要指定对象的类路径即可
<bean id="dept" class="org.example.entity.Dept">
<property name="deptNo" value="50" />
<property name="dname" value="市场部" />
<property name="loc" value="重庆" />
</bean>
2.通过ClassPathXmlApplicationContext加载IOC容器配置文件,获取容器对象
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("application-context.xml");
3.通过容器对象获取指定的Bean对象
Object dept1 = context.getBean("dept");
Dept dept2 = context.getBean("dept", Dept.class);
Dept dept3 = context.getBean(Dept.class);
XML核心配置文件方式整合
配置MyBatis JDBC 环境
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/my_db?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=utf8
user=root
pwd=root
配置数据源
<!--加载属性配置文件-->
<context:property-placeholder location="classpath:db.properties" />
<!--创建数据源连接-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${user}" />
<property name="password" value="${pwd}" />
</bean>
配置 SqlSessionFactory
<!--配置SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>
Mapper 扫描注入
<!--Mapper 扫描,并注入到 容器 中 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<property name="basePackage" value="org.neuedu.ssm.demo.mapper" />
</bean>
代码测试
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(value = {"classpath:spring/application-mybatis.xml"})
public class MyBatisSpringCrudXMLTest {
@Autowired
private IDeptMapper deptMapper;
@Test
public void list(){
deptMapper.list().forEach(System.out::println);
}
}