spring基础(二)

替代xml文件

配置的java文件

  

 1 package com.oracle.config;
 2 
 3 import org.springframework.context.annotation.*;
 4 /**
 5  * 该类是一个配置类,他的作用和bean.xml是一样的
 6  * spring中的新注解
 7  * Configuration
 8  *      作用:指定当前类是一个配置类
 9  *      细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,改注解可以不写
10  * ComponentScan
11  *      作用:用于通过注解指定spring在从创建容器时要扫描的包
12  *      属性:他和basePackages的作用是一样的,都是用于指定创建容器时要扫描的包。
13  *              我们使用此注解就等同于在xml中配置了:
14  *                      <context:component-scan base-package="com.oracle"></context:component-scan>
15  * Bean
16  *      作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中
17  *      属性:
18  *          name:用于指定bean的id。当不写时,默认值是当前方法的名称
19  *      细节:
20  *          当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象。
21  *          查找的方法和Autowired注解的作用是一样的
22  * Import
23  *      作用:用于导入其他的配置类
24  *      属性:
25  *          value:用于指定其他配置类的字节码。
26  *                   当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类
27  *  PropertySource
28  *      作用:用于指定properties文件的位置
29  *      属性:
30  *          value:指定文件的名称和位置
31  *              关键字:classpath,表示类路径下
32  *
33  *
34  *
35  */
36 @Configuration
37 @ComponentScan({"com.oracle"})
38 @Import(JdbcConfig.class)
39 @PropertySource("classpath:jdbcConfig.properties")
40 public class SpringConfiguration {
41 
42 
43 
44 }

子配置文件

 1 package com.oracle.config;
 2 
 3 import com.mchange.v2.c3p0.ComboPooledDataSource;
 4 import org.apache.commons.dbutils.QueryRunner;
 5 import org.springframework.beans.factory.annotation.Value;
 6 import org.springframework.context.annotation.Bean;
 7 import org.springframework.context.annotation.Scope;
 8 import org.springframework.stereotype.Component;
 9 import org.springframework.stereotype.Service;
10 
11 import javax.sql.DataSource;
12 
13 @Component
14 @Service("jdbcConfig")
15 public class JdbcConfig {
16 
17     @Value("${jdbc.driver}")
18     private String driver;
19 
20     @Value("${jdbc.url}")
21     private String url;
22 
23     @Value("${jdbc.username}")
24     private String username;
25 
26     @Value("${jdbc.password}")
27     private String password;
28 
29     public void testA() {
30         System.out.println(driver + "," + url + "," + username + "," + password);
31     }
32 
33 
34     /**
35      * 用于创建一个queryRunner对象
36      *
37      * @param dataSource
38      * @return
39      */
40     @Bean
41     public QueryRunner createQueryRunner(DataSource dataSource) {
42         return new QueryRunner(dataSource);
43     }
44 
45     /**
46      * 创建数据源对象
47      *
48      * @return
49      */
50     @Bean("dataSource")
51     @Scope("prototype")
52     public DataSource createDataSource() {
53         ComboPooledDataSource ds = new ComboPooledDataSource();
54         try {
55             ds.setDriverClass(driver);
56             ds.setJdbcUrl(url);
57             ds.setUser(username);
58             ds.setPassword(password);
59             return ds;
60         } catch (Exception e) {
61             throw new RuntimeException(e);
62         }
63     }
64 }

spring 整个junit 测试

  

 1 package com.oracle.TestDemo;
 2 
 3 import com.oracle.config.JdbcConfig;
 4 import com.oracle.config.SpringConfiguration;
 5 import com.oracle.domain.Account;
 6 import com.oracle.service.IAccountService;
 7 import org.junit.Before;
 8 import org.junit.Test;
 9 import org.junit.runner.RunWith;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.context.ApplicationContext;
12 import org.springframework.context.annotation.AnnotationConfigApplicationContext;
13 import org.springframework.context.support.ClassPathXmlApplicationContext;
14 import org.springframework.test.context.ContextConfiguration;
15 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
16 
17 import java.applet.AppletContext;
18 import java.util.List;
19 
20 /**
21  * 使用junit单元测试:测试我们的配置
22  * spring整合junit的配置
23  *      1、导入spring提供的junit的jar包(坐标)
24  *      2、使用junit提供的注解把原有的main方法替换了。替换为spring提供的
25  *          @RunWith
26  *      3、告知spring的运行器,spring和ioc创建是基于xml还是注解的,并说明位置
27  *          @ContextConfiguration
28  *                  location:指定xml文件的位置,加上classpath关键字。表示在类路径下
29  *                  classes:指定注解类所在的位置
30  * 注意:当spring版本是5.x的时候,必须使用junit 4.12及以上版本
31  */
32 
33 /**
34  * 使用junit单元测试
35  */
36 @RunWith(SpringJUnit4ClassRunner.class)
37 @ContextConfiguration(classes = SpringConfiguration.class)
38 public class Demo01 {
39 
40     @Autowired
41     private  ApplicationContext ac;
42     @Autowired
43     private IAccountService accountService;
44 
45 
46     @Test
47     public void testFindAll() {
48         /*3、执行方法*/
49         List<Account> allAccount = accountService.findAllAccount();
50         for (Account account : allAccount) {
51             System.out.println(account.getId() + "," + account.getName() + "," + account.getMoney());
52         }
53 
54     }
55 
56     @Test
57     public void testFindOne() {
58         /*3、执行方法*/
59         Account accountById = accountService.findAccountById(2);
60         System.out.println(accountById);
61     }
62 
63     @Test
64     public void testSave() {
65         Account account = new Account();
66         account.setName("ddd");
67         account.setMoney(1999F);
68         /*3、执行方法*/
69         accountService.saveAccount(account);
70     }
71 
72     @Test
73     public void testUpdate() {
74         Account account = new Account();
75         account.setId(1);
76         account.setName("AAA");
77         account.setMoney(7744F);
78         /*3、执行方法*/
79         accountService.updateAccount(account);
80     }
81 
82     @Test
83     public void testDelete() {
84         /*3、执行方法*/
85         accountService.deleteAccount(6);
86     }
87 }
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>org.example</groupId>
 8     <artifactId>Day05</artifactId>
 9     <version>1.0-SNAPSHOT</version>
10     <packaging>jar</packaging>
11 
12     <dependencies>
13         <dependency>
14             <groupId>org.springframework</groupId>
15             <artifactId>spring-context</artifactId>
16             <version>5.0.2.RELEASE</version>
17         </dependency>
18         <dependency>
19             <groupId>commons-dbutils</groupId>
20             <artifactId>commons-dbutils</artifactId>
21             <version>1.4</version>
22         </dependency>
23 
24         <dependency>
25             <groupId>mysql</groupId>
26             <artifactId>mysql-connector-java</artifactId>
27             <version>5.1.6</version>
28         </dependency>
29 
30         <dependency>
31             <groupId>c3p0</groupId>
32             <artifactId>c3p0</artifactId>
33             <version>0.9.1.2</version>
34         </dependency>
35 
36         <dependency>
37             <groupId>junit</groupId>
38             <artifactId>junit</artifactId>
39             <version>4.12</version>
40         </dependency>
41         <dependency>
42             <groupId>org.springframework</groupId>
43             <artifactId>spring-test</artifactId>
44             <version>5.0.2.RELEASE</version>
45         </dependency>
46 
47     </dependencies>
48 
49 </project>

 

posted @ 2019-12-11 09:40  养一只Tom猫  阅读(218)  评论(0编辑  收藏  举报