20200112——基于注解开发spring

注解dao为持久层
在这里插入图片描述

注解service为业务层
在这里插入图片描述
下面的变量也要用@Autowired 注解注释起来

bean.xml这个配置文件还是存在

创建一个SpringConfiguration文件,作用于beal.xml一样

spring的新注解,Configuration 作用:指定当前类是一个配置类,
在这里插入图片描述

ComponentScan 作用:用于注解指定spring在创建容器时,要扫描的包
属性value 它和basePackages的作用是一样的,都是用于指定创建容器要扫描的包
我们使用此注解等同于xml配置了

    <context:component-scan base-package="com.itheima"></context:component-scan>
  public QueryRunner createQueryRunner(DataSource dataSource){
        return new QueryRunner(dataSource);
    }

用于创建一个queryrunner对象。前面加上@Bean 就会自动添加到Spring容器中。
作用:把当前方法的返回值作为bean对象存入spring的ioc容器中
属性name:指定bean的id,默认值是方法的名称

 @Bean("dataSource")
    public DataSource createDataSource(){
        try{
            ComboPooledDataSource ds = new ComboPooledDataSource();
            ds.setDriverClass("com.mysql.jdbc.Driver");
            ds.setJdbcUrl("jdbc:mysql://localhost:3306/eesy?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8");
            ds.setUser("root");
            ds.setPassword("password");
            return ds;
        }catch (Exception e){
            throw new RuntimeException(e);
        }

    }

细节:当我们使用注解配置方法时,如果方法有参数,spring框架会去容器中查找有没有可用的bean对象
查找的方式和Autowired注解的作用是一样的

还可以用@Scope 对配置类的方法进行注解,变成多例模式

细节:configuration注解中,当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写

自我总结
程序的运行是Test文件
在这里插入图片描述
test文件中,调用了findAllAccount这个方法
这个方法是IAccountService接口定义的方法
这个实体类业务层,又是通过持久层调用的数据
最后在AccountDaoImpl这个实现类中的方法
在这里插入图片描述
这个方法运用到了runner这个对象,
runner对象是在config文件夹下的配置类
在这里插入图片描述
需要用@Configuration注解表明他是一个配置类
在配置类中的方法前面加上@Bean 就会自动添加到Spring容器中。
作用:把当前方法的返回值作为bean对象存入spring的ioc容器中
属性name:指定bean的id,默认值是方法的名称

import用于导入其他的配置类
属性value 用于指定其他类的字节码
当我们使用import注解后,有import注解的类,就是主配置类

propertysource
用于指定properties文件的位置,属性value指定文件的名称和路径
关键字:classpath,表示类路径下

分析
应用程序入口 main方法
junit单元测试中,没有main方法,也能执行
junit集成了一个main方法
该方法就会判断当前测试类中哪些方法有@Test注解
junit就会让有test注解的方法执行,
junit不会管我们是否采用spring框架
在执行测试方式时,junit根本不知道我们是不是使用了spring框架
所以也就为我们读取配置文件或者配置类创建核心容器
由以上可知,当测试方法执行,没有ioc容器,就算写了autowired注解,也无法实现注入

spring整合junit的配置
导入spring整合junit 的jar包
使用junit提供的注解,把原有的main方法替换了,替换成spring提供的
@Runwith
告知spring的运行器,spring和ioc创建是基于xml还是注解的并且说明位置
@ContextConfiguration
Locations: 指定xml文件位置,加上classpath关键字,表示在类路径下
classess:指定注解类所在位置

当我们使用spring 5.x版本,要求junit版本jar版本必须4.1.1以上

发布了657 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_36344771/article/details/103943742