01-Spring配置数据源-数据源的作用
数据源的作用?
1.数据源(连接池)是提高程序性能时出现的
2.事先实例化数据源,初始化部分连接资源
3.使用连接资源时从数据源中获取
4.使用完毕后将连接资源归还给数据源
常见的数据源(连接池):DBCP、C3P0、BoneCP、Druid等
02-Spring配置数据源-数据源开发步骤
①导入数据源的坐标和数据库驱动坐标
②创建数据源对象
③设置数据源的基本连接数据
④使用数据源获取连接资源和归还连接资源
03-Spring配置数据源-数据源的开发步骤和手动创建C3P0数据源
// 创建c3p0数据源的对象,并且配置数据源
@Test
public void test2() throws Exception {
// 创建c3p0数据源对象
ComboPooledDataSource ds = new ComboPooledDataSource();
// 设置数据库连接参数
// 设置注册驱动的参数
ds.setDriverClass("com.mysql.jdbc.Driver");
// 设置数据库连接的url参数
ds.setJdbcUrl("jdbc:mysql://localhost:3306/db1");
// 设置登录数据库的用户名
ds.setUser("root");
// 设置登录数据库的密码
ds.setPassword("root");
// 获取数据库连接对象
Connection conn = ds.getConnection();
System.out.println(conn);
}
04-Spring配置数据源-手动创建Druid数据源
// 创建Druid数据源的对象,并且配置数据源
@Test
public void test3() throws Exception {
DruidDataSource ds = new DruidDataSource();
// 设置需要连接数据库的参数
// 设置注册驱动需要的参数
ds.setDriverClassName("com.mysql.jdbc.Driver");
// 设置连接数据库的url参数
ds.setUrl("jdbc:mysql://127.0.0.1:3306/db1");
// 设置登录数据库的账号
ds.setUsername("root");
// 设置登录数据库的密码
ds.setPassword("root");
// 获取数据库连接对象
DruidPooledConnection coon = ds.getConnection();
System.out.println(coon);
}
05-Spring配置数据源-抽取jdbc.properties文件
为什么要把配置信息抽取到jdbc.properties配置文件中;
解耦!!!!
********************
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
1.天生就是用来读取.properties文件的;
2.读取的配置文件的路径是相对于类路径的;
3.配置文件只需要写名字, 不需要写后缀名;
**********************************
1.在IDEA的项目结构中,src目录对应的是程序的类路径;
2.在maven的项目结构中,java文件夹和resources文件夹都对应的是程序的类路径;在java文件夹中放java代码,在resources文件夹下放配置文件;
06-Spring配置数据源-Spring产生数据源对象
在spring配置文件中,如何给CombopooledDataSource对象注入其属性值?
可以将DataSource的创建权交由Spring容器去完成 DataSource有无参构造方法,
而Spring默认就是通过无参构造方法实例化对象的
DataSource要想使用需要通过set方法设置数据库连接信息,
而Spring可以通过set方法进行字符串注入
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/db1"></property>
<property name="user" value="root"></property>
<property name="password" value="root"></property>
</bean>
07-Spring配置数据源-Spring加载properties文件
spring配置文件中,如果要加载 properties文件,需要使用哪个标签?
<context:property-placeholder location=“classpath:jdbc.properties”/>
如何使用properties中的键值对
通过spEL表达式语言来完成;
${properties配置文件中的键名}
properties的键需要为 jdbc.XXX
08-Spring注解开发-原始注解介绍
@Component --组件 /kəmˈpəʊnənt/
@Controller --控制器 /kənˈtrəʊlə®/
@Service --服务
@Repository – 仓库 / rɪˈpɒzətri/
@Autowired --自动装载 /ˈwaɪəd/
@Qualifier --合格者的标识 /ˈkwɒlɪfaɪə®/
@Resource --资源
@Value --值
@Scope --范围
@PostConstruct --在构造之后 /kənˈstrʌkt/
@PreDestroy – 在销毁之前
09-Spring注解开发-完善测试环境
完善xml配置的测试环境
10-Spring注解开发-原始注解入门操作
bean标签被哪个注解替换?
@Component(“写id标识该对象”)
成员变量的值如何进行注入?
在成员变量上添加两个注解:
@AutoWired;
@Qualifier("通过id引用容器中已经存在的对象");
如何告诉spring,我在哪里加注解了?
在核心配置文件applicationContext.xml中,开启组件扫描;
<!--配置组件扫描-->
<context:component-scan base-package="com.itheima"/>
11-Spring注解开发-原始注解详解1
@Component注解和@Controller、@Service、@Repository注解在功能上有没有区别?
@Component/@Controller/@Service/@Repository 功能都是在告诉spring,帮我创建一个该类的对象;
@Component
如果一个类不属于三层架构的范畴,那么就使用@Component注解
@Controller
web层的类使用这个注解
@Service
service层的类使用这个注解
@Repository
dao层的类使用这个注解
使用注解配置,成员变量要完成自动注入,不提供setter方法能不能行?
可以;
@AutoWired注解完成注入,是按照什么来注入?
按照类型注入
@Qualifier注解有什么作用?能不能单独使用?
指定一个容器已经存在的对象的id; 不能单独使用
@Resource注解完成注入,是按照什么来注入?
相当于 @AutoWired+@Qualifier 按照id进行注入
****************************************************************
1.@Resource注解时jdk提供的注解,spring对它做了支持,@AutoWired和@Qualifier注解是spring的亲儿子;
2.当容器中某个类型的对象有多个,仅仅使用@AutoWired注解完成注入时,可以注入成功,但是没有办法指定注入的是哪个。
3.@Component/@Controller/@Service/@Repository让spring帮我们创建对象时,如果不指定id的值,那么spring会帮我们默认一个id的值,id的值就是当前的类名(首字母小写)
public static void main(String[] args) {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService = (UserService) app.getBean("userServiceImpl");
// 在让spring帮我们创建对象时,如果不指定id的值,
// 那么spring会帮我们默认一个id的值,id的值就是当前的类名(首字母小写)
userService.save();
}
@Service // 服务 ,service层的类上使用该注解
public class UserServiceImpl implements UserService {
@Autowired // 自动注入, 按照类型进行注入 可以单独使用
//那么spring会帮我们默认一个id的值,id的值就是当前的类名(首字母小写)
private UserDao userDao;
@Override
public void save() {
userDao.save();
}
}
@Repository // 仓库,DAO层的类上使用该注解
public class UserDaoImpl implements UserDao {
@Override
public void save() {
System.out.println("running code...");
}
}
12-Spring注解开发-原始注解详解2
@Value注解有什么用?
给对象注入简单类型的数据;
@Value("${键名}")
private String url;
// 注入配置文件的值,可以使用spEL表达式。
// 此时在xml配置文件中已经把properties加载进内存,所以可以通过spEL表达式读取数据
// 后面也可以通过注解的方式,将properties加载进内存。然后再次通过spEL表达式读取配置文件中的数据
@Scope注解有什么用?
标识当前对象是单例的还是多例的;
@PostConstruct注解有什么用?(了解)
初始化方法;
@PreDestroy注解有什么用?(了解)
销毁方法;
13-Spring注解开发-新注解介绍
如果一个类不是我们自定义的类,要把它的创建权交给spring,可以使用注解吗?
可以 使用bean注解
14-Spring注解开发-新注解详解
@Configuration注解有什么作用?
标识某个类为spring的核心配置类;
@ComponentScan注解有什么用?
开启组件扫描;
用于指定 Spring 在初始化容器时要扫描 的包。 作用和在 Spring 的 xml 配置文件中 的 <context:component-scan base-package=“com.itheima”/>一样
@Bean注解有什么用?
将某个方法的返回值对象放到spring容器中
@PropertySource注解有什么用?
加载properties配置文件;
@Import注解有什么用?
把其他的配置类引入到核心配置类中
15-Spring集成Junit-集成简介和开发步骤(了解)
1.导入spring集成junit坐标
2.使用@Runwith注解改变测试框架的执行路径
3.使用@ContextConfiguration配置spring的核心配置文件路径或者是核心配置类;
4.在测试类中使用注解完成自动注入;
16-Spring集成Junit-代码实现(了解)
@RunWith(SpringJUnit4ClassRunner.class)
改变测试方法的执行路径,先找spring,在找junit
@ContextConfiguration("")
告诉框架,我们自己的配置的位置;
注解使用spring的运行流程
springJunit集成测试运行流程