spring学习——web注解配置

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集成测试运行流程
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值