Spring配置数据源详细讲解1.Spring配置数据源
1.1 数据源(连接池)的作⽤
数据源(连接池)是提⾼程序性能如出现的
事先实例化数据源,初始化部分连接资源
使⽤连接资源时从数据源中获取
使⽤完毕后将连接资源归还给数据源
常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等
druid连接池配置详解
开发步骤
①导⼊数据源的坐标和数据库驱动坐标
②创建数据源对象
③设置数据源的基本连接数据
④使⽤数据源获取连接资源和归还连接资源
1.2 数据源的⼿动创建
①导⼊c3p0和druid的坐标
<!-- C3P0连接池 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- Druid连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
①导⼊mysql数据库驱动坐标
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
</dependency>
②创建C3P0连接池
@Test
public void testC3P0()throws Exception {
//创建数据源
ComboPooledDataSource dataSource =new ComboPooledDataSource();
//设置数据库连接参数
dataSource.setDriverClass("sql.jdbc.Driver");                                    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/test");    dataSource.setUser("root");
dataSource.setPassword("root");
//获得连接对象
Connection connection = Connection();
System.out.println(connection);
}
②创建Druid连接池
@Test
public void testDruid()throws Exception {
//创建数据源
DruidDataSource dataSource =new DruidDataSource();
//设置数据库连接参数
dataSource.setDriverClassName("sql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("root");
/
/获得连接对象
Connection connection = Connection();
System.out.println(connection);
}
③提取jdbc.properties配置⽂件
jdbc.sql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=root
④读取jdbc.properties配置⽂件创建连接池
@Test
public void testC3P0ByProperties()throws Exception {
//加载类路径下的jdbc.properties
ResourceBundle rb = Bundle("jdbc");
ComboPooledDataSource dataSource =new ComboPooledDataSource();
dataSource.String("jdbc.driver"));
dataSource.String("jdbc.url"));
dataSource.String("jdbc.username"));
dataSource.String("jdbc.password"));
Connection connection = Connection();
System.out.println(connection);
}
1.3 Spring配置数据源
可以将DataSource的创建权交由Spring容器去完成
DataSource有⽆参构造⽅法,⽽Spring默认就是通过⽆参构造⽅法实例化对象的
DataSource要想使⽤需要通过set⽅法设置数据库连接信息,⽽Spring可以通过set⽅法进⾏字符串注⼊
<bean id="dataSource"class="hange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"value="sql.jdbc.Driver"/>
<property name="jdbcUrl"value="jdbc:mysql://localhost:3306/test"/>
<property name="user"value="root"/>
<property name="password"value="root"/>
</bean>
测试从容器当中获取数据源
ApplicationContext applicationContext =new
ClassPathXmlApplicationContext("l");
DataSource dataSource =(DataSource)
Connection connection = Connection();
System.out.println(connection);
1.4 抽取jdbc配置⽂件
⾸先,需要引⼊context命名空间和约束路径:
<property-placeholder location="classpath:jdbc.properties"/>
<bean id="dataSource"class="hange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass"value="${jdbc.driver}"/>
<property name="jdbcUrl"value="${jdbc.url}"/>
<property name="user"value="${jdbc.username}"/>
<property name="password"value="${jdbc.password}"/>
</bean>
1.5 知识要点
Spring容器加载properties⽂件
<property-placeholder location="xx.properties"/>
<property name=""value="${key}"/>
2. Spring注解开发
2.1 Spring原始注解
Spring是轻代码⽽重配置的框架,配置⽐较繁重,影响开发效率,所以注解开发是⼀种趋势,注解代替xml配置⽂件可以简化配置,提⾼开发效率。
Spring原始注解主要是替代的配置
注解说明
@Component使⽤在类上⽤于实例化Bean
@Controller使⽤在web层类上⽤于实例化Bean
@Service使⽤在service层类上⽤于实例化Bean
@Repository使⽤在dao层类上⽤于实例化Bean
@Autowired使⽤在字段上⽤于根据类型依赖注⼊
@Qualifier结合@Autowired⼀起使⽤⽤于根据名称进⾏依赖注⼊
@Resource相当于@Autowired+@Qualifier,按照名称进⾏注⼊
@Value注⼊普通属性
@Scope标注Bean的作⽤范围
@PostConstruct使⽤在⽅法上标注该⽅法是Bean的初始化⽅法
注解说明
@PreDestroy使⽤在⽅法上标注该⽅法是Bean的销毁⽅法
注意:
使⽤注解进⾏开发时,需要在l中配置组件扫描,作⽤是指定哪个包及其⼦包下的Bean需要进⾏扫描以便识别使⽤注解配置的类、字段和⽅法。
<!--注解的组件扫描-->
<context:component-scan base-package="com.itheima"></context:component-scan>
使⽤@Compont或@Repository标识UserDaoImpl需要Spring进⾏实例化。
//@Component("userDao")
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Override
public void save(){
System.out.println(" ...");
}
}
使⽤@Compont或@Service标识UserServiceImpl需要Spring进⾏实例化
使⽤@Autowired或者@Autowired+@Qulifier或者@Resource进⾏userDao的注⼊
//@Component("userService")
@Service("userService")
public class UserServiceImpl implements UserService {
/
*@Autowired
@Qualifier("userDao")*/
@Resource(name="userDao")
private UserDao userDao;
@Override
public void save(){
userDao.save();
}
}
使⽤@Value进⾏字符串的注⼊
@Repository("userDao")
public class UserDaoImpl implements UserDao {
@Value("注⼊普通数据")
private String str;
@Value("${jdbc.driver}")
private String driver;
@Override
public void save(){
System.out.println(str);
System.out.println(driver);
System.out.println(" ...");
}
}
使⽤@Scope标注Bean的范围
//@Scope("prototype")
@Scope("singleton")
public class UserDaoImpl implements UserDao {
//此处省略代码
}
使⽤@PostConstruct标注初始化⽅法,使⽤@PreDestroy标注销毁⽅法
@PostConstruct
public void init(){
System.out.println("初始化⽅法....");
}
@PreDestroy
public void destroy(){
System.out.println("销毁⽅法.....");
}
2.2 Spring新注解
使⽤上⾯的注解还不能全部替代xml配置⽂件,还需要使⽤注解替代的配置如下:
⾮⾃定义的Bean的配置:
加载properties⽂件的配置:context:property-placeholder
组件扫描的配置:context:component-scan
引⼊其他⽂件:
注解说明
@Configuration⽤于指定当前类是⼀个 Spring 配置类,当创建容器时会从该类上加载注解
@ComponentScan ⽤于指定 Spring 在初始化容器时要扫描的包。 作⽤和在 Spring 的 xml 配置⽂件中的 <context:component-scan base-
package=“com.itheima”/>⼀样
@Bean使⽤在⽅法上,标注将该⽅法的返回值存储到 Spring 容器中@PropertySource⽤于加载.properties ⽂件中的配置@Import⽤于导⼊其他配置类
@Configuration
@ComponentScan
@Import
@Configuration
@ComponentScan("com.itheima")
@Import({DataSourceConfiguration.class})
public class SpringConfiguration {
}
@PropertySource
@value
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。