一、Spring配置数据源

在Spring中也是支持JdbcTemplate,用来操作数据库

相关坐标:

  1. <dependencies>
  2. <!--mysql驱动-->
  3. <dependency>
  4. <groupId>mysql</groupId>
  5. <artifactId>mysql-connector-java</artifactId>
  6. <version>5.1.47</version>
  7. </dependency>
  8. <!--druid连接池-->
  9. <dependency>
  10. <groupId>com.alibaba</groupId>
  11. <artifactId>druid</artifactId>
  12. <version>1.1.15</version>
  13. </dependency>
  14. <!--spring-jdbc-->
  15. <dependency>
  16. <groupId>org.springframework</groupId>
  17. <artifactId>spring-jdbc</artifactId>
  18. <version>5.1.5.RELEASE</version>
  19. </dependency>
  20. <!--spring的核心坐标-->
  21. <dependency>
  22. <groupId>org.springframework</groupId>
  23. <artifactId>spring-context</artifactId>
  24. <version>5.1.5.RELEASE</version>
  25. </dependency>
  26. <!--junit-->
  27. <dependency>
  28. <groupId>junit</groupId>
  29. <artifactId>junit</artifactId>
  30. <version>4.12</version>
  31. </dependency>
  32. </dependencies>
  33. <build>
  34. <plugins>
  35. <!-- 设置编译版本为1.8 -->
  36. <plugin>
  37. <groupId>org.apache.maven.plugins</groupId>
  38. <artifactId>maven-compiler-plugin</artifactId>
  39. <version>3.1</version>
  40. <configuration>
  41. <source>1.8</source>
  42. <target>1.8</target>
  43. <encoding>UTF-8</encoding>
  44. </configuration>
  45. </plugin>
  46. </plugins>
  47. </build>

jdbc.properties:

  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=UTF-8
  3. jdbc.username=root
  4. jdbc.password=1234

applicationContext.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd"
  6. <!--在Spring中加载properties引入相关约束-->
  7. xmlns:context="http://www.springframework.org/schema/context"
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd">
  10. <!-- 通过此标签将文件加载到内存中-->
  11. <context:property-placeholder
  12. location="classpath:jdbc.properties">
  13. </context:property-placeholder>
  14. </beans>

Druid&JdbcTemplate:

  1. <!--
  2. 配置Druid数据库连接池
  3. -->
  4. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  5. <property name="driverClassName" value="${jdbc.driverClassName}"></property>
  6. <property name="url" value="${jdbc.url}"></property>
  7. <property name="username" value="${jdbc.username}"></property>
  8. <property name="password" value="${jdbc.password}"></property>
  9. </bean>
  10. <!--
  11. 配置JdbcTemplate
  12. -->
  13. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  14. <property name="dataSource" ref="dataSource"></property>
  15. </bean>

测试:

  1. @Test
  2. public void test01() {
  3. ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
  4. JdbcTemplate jdbcTemplate = applicationContext.getBean(JdbcTemplate.class);
  5. String sql = "select * from student";
  6. List<Student> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Student.class));
  7. System.out.println(list);
  8. }

二、Spring原注解

Spring是轻代码而重配置的框架,框架比较繁重,影响开发效率,所以注解开发是一种趋势,注解代替xml配置文件可以简化配置,提高开发效率
==Spring5.0以前提供的注解成为原始注解==

1、开启注解

想要使用注解开发,必须在Spring核心配置文件中开启注解才能使用

  1. <!--开启注解扫描-->
  2. <context:component-scan base-package="com.smiledog"/>

2、IoC注解

@Component

使用在类上,用于实例化Bean,相当于标签

@Controller

使用在web层类上用于实例化Bean

@Service

使用在service层类上实例化Bean(标记在Service层实现类的上方)

@Repository

使用在dao层上用于实例化Bean,(标记在dao层实现类的上方)

3、DI注解

@Autowired

使用字段上用于根据类型依赖注入,相当于标签
标记在service实现类中创建的dao层字段上或set方法上
:若有多个dao层实现类会出错—>找到多个实现类

@Qualifier

结合@Autowired一起使用,然后根据id查找同类型下的实例
结合使用时在@Qualifier(”标记dao层实现类名”),标记位置同上

@Resource

相当于@Autowired+@Qualifier,按照名称进行注入
用法:@Resource(name=”标记dao层实现类名”),标记位置同上

4、其他注解

@Scope

标注Bean的作用范围(singleton:单例对象【默认】prototype:多例对象)
标记在实现类的上方:@Scope(”singleton / prototype”)

@PostConstruct

使用在方法上标注该方法是Bean的初始化(init())方法
定义一个初始化要执行的方法,该注解标记其上方

@PreDestroy

使用在方法上标注该方法是Bean的销毁方法
定义一个销毁时需要执行的方法,该注解标记其上方

@Value

注入普通属性,主要用于读取配置文件中的值,并赋值给当前属性
标记在一个实体类的私有字段上方:@Value(值)

5、在配置文件中获取值

1、在Spring主配置文件中,加载properties

  1. <context:property-placeholder location="classpath:jdbc.properties" />

2、使用@Value获取配置文件中的值,赋值给属性

  1. jdbc.driverClassName=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://localhost:3306/spring_test1?characterEncoding=UTF-8
  3. jdbc.username=root
  4. jdbc.password=root
  1. @Value("${jdbc.driverClassName}")
  2. private String driverClass;
  3. @Value("${jdbc.url}")
  4. private String url;
  5. @Value("${jdbc.password}")
  6. private String password;

三、Spring注解整合JDBC

1、applicationContext.xml的编写

a、头约束

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:context="http://www.springframework.org/schema/context"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  5. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  6. </beans>

b、开启注解扫描

  1. <!--开启注解扫描-->
  2. <context:component-scan base-package="com.smiledog"/>

c、引入jdbc.properties配置文件

  1. <!--引入jdbc.properties配置文件-->
  2. <context:property-placeholder location="classpath:jdbc.properties"/>

d、配置Druid数据库连接池

  1. <!--
  2. 配置Druid数据库连接池
  3. -->
  4. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  5. <property name="driverClassName" value="${jdbc.driverClassName}"></property>
  6. <property name="url" value="${jdbc.url}"></property>
  7. <property name="username" value="${jdbc.username}"></property>
  8. <property name="password" value="${jdbc.password}"></property>
  9. </bean>

e、配置jdbcTemplate

  1. <!--
  2. 配置jdbcTemplate
  3. -->
  4. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  5. <property name="dataSource" ref="dataSource"></property>
  6. </bean>

四、Spring新注解

Spring5.0之后的注解被称为新注解

@Configuration

表示当前类是一个配置类,用于代替配置文件(applicationContext.xml)

@Bean

作用于方法上,用于将方法的返回值存入Spring容器中

@PropertySource

用于加载指定的配置文件,相当于(

@ComponentScan

用于指定扫描包路径(Value:用于指定路径,数组 basePackages:同Value)
==>:

@Import

用于合并配置类,相当于(
标记在主配置类上方:@Import(DataSourceConfig.class)

1、编写配置类

  1. 1、在类的上方标记Configuration表示该类是个配置类
  2. @Configuration
  3. 2、标记ComponentScan用于指定该配置类扫描的包路径
  4. @ComponentScan("com.smiledog")
  5. 3、标记PropertySource用于引入第三方配置文件
  6. @PropertySource("classpath:jdbc.properties")
  7. 4、标记@Value用于获取第三方配置i文件的内容
  8. @Value("${jdbc.driverClassName}")标记在字段上方
  9. 5、标记@Bean在获取连接池的方法上
  10. @Bean("dataSoruce")
  11. 6、标记@Autowired在获取JdbcTemplate方法上
  12. @Bean @Autowired
  1. /**
  2. * @Configuration 相当于 applicationContext.xml配置文件
  3. */
  4. @Configuration
  5. /**
  6. * @ComponentScan 相当于
  7. * <context:component-scan base-package="com.itfxp"/>
  8. */
  9. @ComponentScan("com.smiledog")
  10. /**
  11. * @PropertySource 相当于
  12. * <context:property-placeholder location="classpath:jdbc.properties"/>
  13. */
  14. @PropertySource("classpath:jdbc.properties")
  15. public class SpringApplicationContextConfig {
  16. @Value("${jdbc.driverClassName}")
  17. private String driverClassName;
  18. @Value("${jdbc.url}")
  19. private String url;
  20. @Value("${jdbc.username}")
  21. private String username;
  22. @Value("${jdbc.password}")
  23. private String password;
  24. /*
  25. 自定义DataSource对象交给IoC容器
  26. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  27. <property name="driverClassName" value="${jdbc.driverClassName}"></property>
  28. <property name="url" value="${jdbc.url}"></property>
  29. <property name="username" value="${jdbc.username}"></property>
  30. <property name="password" value="${jdbc.password}"></property>
  31. </bean>
  32. */
  33. @Bean("dataSource")
  34. public DataSource createDataSource() {
  35. DruidDataSource druidDataSource = new DruidDataSource();
  36. druidDataSource.setDriverClassName(driverClassName);
  37. druidDataSource.setUrl(url);
  38. druidDataSource.setUsername(username);
  39. druidDataSource.setPassword(password);
  40. return druidDataSource;
  41. }
  42. /**
  43. 自定义JdbcTemplate对象交给IoC容器
  44. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  45. <property name="dataSource" ref="dataSource"></property>
  46. </bean>
  47. */
  48. @Bean
  49. @Autowired
  50. public JdbcTemplate createJdbcTemplate(DataSource dataSource){
  51. return new JdbcTemplate(dataSource);
  52. }
  53. }

1、模块化配置类

  1. 主配置类中引入其他配置类:
  2. /**
  3. * @Import 相当于
  4. * <import resource=""></import>
  5. */
  6. 在主配置类的上方标记:
  7. @Import(DataSourceConfig.class)

五、Spring注解整合Junit

1、在测试类的上方加入注解加载单元测试运行器

  1. @RunWith(SpringRunner.class)

2、在测试类的上方加入注解加载Spring核心配置

  1. @ContextConfiguration("classpath:applicationContext.xml") //加载配置文件
  2. @ContextConfiguration(classes = SpringApplicationContextConfig.class) //加载配置类