第六节——spring注解开发

一、spring原始注解

  1. 要求:在B中使用A的类,且在Deom01中的main方法里创建B对象,执行B的test方法
  2. 创建A类
public class A {
    
    
    private String name;
    private int age;

    public void setName(String name) {
    
    
        this.name = name;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "A{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
  1. 创建B类
public class B {
    
    
    private A a_impl;

    public void setA_impl(A a_impl) {
    
    
        this.a_impl = a_impl;
    }

    public void test(){
    
    
        System.out.println(a_impl);
    }
}
  1. 使用@Component注解代替Bean在spring中配置A类
    在这里插入图片描述

  2. 使用@Component配置B类,使用@Autowired(类似name标签)和@Qualifier(“a”)(类似ref标签)代替配置注入
    在这里插入图片描述

  3. 在applicationContext.xml文件中配置注解,需要使用context命名空间,其中A,B,Main.class文件都在test01目录里,这个配置名称叫:组件扫描

<context:component-scan base-package="test01"/>

在这里插入图片描述

二、原始注解——细化注解

  1. @Controller:在web层创建bean
  2. @Service:在server层创建bean
  3. @Repository:在dao层创建bean
  4. 使用@Autowired+@Qualifier(“a”)代替xml进行注入时,set方法可以不写
  5. @Resource(name="")=@Autowired+@Qualifier
  6. @Value:进行普通数据类型注入,配合@Value("${jdbc.drive}")可以引入配置文件中的值

三、新注解

  1. 创建一个config目录,里面创建一个SpringConfig.java类文件用于代替applicationContext
    在这里插入图片描述

  2. 将注解@Configuration添加到类名前面,表明这个类是spring的核心配置文件
    在这里插入图片描述

  3. 使用注解@ComponentScan,将组件扫描配置进去
    在这里插入图片描述

  4. 使用注解@Bean,获取外部的对象,将获取dataSource的配置移植过来

@Bean("dataSource")
    public DataSource getDataSource() {
    
    
        //创建druid对象
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/test");
        dataSource.setUsername("root");
        dataSource.setPassword("970725");
        return dataSource;
    }

在这里插入图片描述

  1. 使用注解@PropertySource(“classpath:jdbc.properties”)引入配置文件,使用@Value注释获取配置文件的内容
@Configuration
@ComponentScan("test01")
@PropertySource("classpath:jdbc.properties")
public class SpringConfig {
    
    
    @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("dataSource")
    public DataSource getDataSource() {
    
    
        //创建druid对象
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
  1. 将数据源配置一直到DataSourceConfig.class文件中,再通过import引入
//DataSourceConfig.class
@PropertySource("classpath:jdbc.properties")
public class DataSourceConfig {
    
    
    @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("dataSource")
    
    public DataSource getDataSource() {
    
    
        //创建druid对象
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}
//SpringConfig.class
@Configuration
@ComponentScan("test01")
@Import(DataSourceConfig.class)
public class SpringConfig {
    
    

}
//引入多个
@Configuration
@ComponentScan("test01")
@Import({
    
    DataSourceConfig.class,XXX})//可以通过数组方式引入多个
public class SpringConfig {
    
    

}
  1. 在main函数中使用SpringConfig文件
ApplicationContext app = new AnnotationConfigApplicationContext(SpringConfig.class);

四、使用Spring-junit进行测试开发

  1. 导入junit和spring-test坐标
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.13.2</version>
	<scope>test</scope>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-test</artifactId>
	<version>5.3.10</version>
</dependency>
  1. 在test-java目录下创建一个SpringJunitTest类来进行测试
    在这里插入图片描述
  2. 使用注解@RunWith(SpringJUnit4ClassRunner.class)用于测试
  3. 在test-resources目录下创建applicationContext
  4. 使用注解@ContextConfiguration(“classpath:applicationContext.xml”)指定配置文件
  5. 使用@Value进行注入,使用@Test测试注入
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class SpringJunitTest {
    
    
    @Value("qwe")
    private String name;

    @Test
    public void test01(){
    
    
        System.out.println(name);
    }
}
  1. 创建SpringConfig.class配置类,使用注解@ContextConfiguration(classes = {SpringConfig.class})
@RunWith(SpringJUnit4ClassRunner.class)
//@ContextConfiguration("classpath:applicationContext.xml")
@ContextConfiguration(classes = {
    
    SpringConfig.class})
public class SpringJunitTest {
    
    
    @Value("qwe")
    private String name;

    @Test
    public void test01(){
    
    
        System.out.println(name);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_37589805/article/details/120590369