JAVAEE框架之Spring新注解

举报
tea_year 发表于 2021/12/22 22:45:53 2021/12/22
【摘要】 五.Spring5 新注解 ​ 新的注解有用,为后面的SpringBoot可以打一个基础,因为到SpringBoot的课程, 多了很多注解。这时候,先了解一部分。 5.1 @Configuration...

五.Spring5 新注解

​ 新的注解有用,为后面的SpringBoot可以打一个基础,因为到SpringBoot的课程, 多了很多注解。这时候,先了解一部分。

5.1 @Configuration

@Configuration主要是用来定义配置类,可用于代替xml配置文件,比如之前设置的beans.xml

5.2 @ComponentScan

该注解默认会扫描该类所在的包下所有的配置类,相当于之前的 context:component-scan

5.3 @Bean

​ @Bean是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。如果不写,则默认的是添加的bean的id为方法名。

@Bean(value=“id值”)

@Configuration
public class SpringConfig {

    @Bean(value = "dog")
    public Dog getDog(){
        return  new Dog("京东狗",6.18);
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.4 AnnotationConfigApplicationContex

使用AnnotationConfigApplicationContext可以实现基于Java的配置类加载Spring的应用上下文。避免使用application.xml进行配置。相比XML配置,更加便捷。

ApplicationContext ac=new AnnotationConfigApplicationContext(SpringConfig.class);
Dog dog= (Dog) ac.getBean("dog");
System.out.println(dog.toString());

  
 
  • 1
  • 2
  • 3

5.5 Import

  • 用到的Bean导入到容器

    @Import(value = {Dog.class,Cat.class})
    
    //测试类:
    ApplicationContext ac=new AnnotationConfigApplicationContext(SpringConfig.class);
            Dog dog= (Dog) ac.getBean(Dog.class);
            System.out.println(dog.toString());
    
        
       
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 导入另外一个配置类

​ 相当于<import resource=“lasspath:xxx.xml”/>

5.6 PropertySource

​ 注解用于指定资源文件读取的位置,它不仅能读取properties文件,也能读取xml文件,并且通过YAML解析器,配合自定义PropertySourceFactory实现解析YAML文件。

​ 相当于xml文件里面的:

<context:property-placeholder location="classpath:/hibernate.properties" /> 

  
 
  • 1

加了:druid的配置类

pom.xml

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
package com.aaa.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

/**
 * Created by 张晨光 on 2020/6/18 9:26
 */
@Configuration
@PropertySource("classpath:/druid.properties")
public class JdbcConfig {
    @Value("${driverClassName}")
    private String driverClassName;
    @Value("${url}")
    private String url;
    @Value("${username}")
    private String username;
    @Value("${password}")
    private String password;

    /*@Override
    public String toString() {
        return "JdbcConfig{" +
                "driverClassName='" + driverClassName + '\'' +
                ", url='" + url + '\'' +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }*/
    //注册Druid数据源连接池
    @Bean
    public DruidDataSource druidDataSource(){
//        System.out.println("driverClassName====> " + driverClassName);
//        System.out.println("url====> " + url);
//        System.out.println("username====> " + username);
//        System.out.println("username====> " + username);
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

测试 类:

@org.junit.Test
public  void testTwo(){
    ApplicationContext ac= new AnnotationConfigApplicationContext(SpringConfig.class);
    DruidDataSource druidDataSource= (DruidDataSource) ac.getBean("druidDataSource");
    System.out.println(druidDataSource);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

回顾:

1.建立了两个配置类:SpringConfig、JdbcConfig

2.第一个配置类主要测试的注解有:@Configuration @ComponentScan @Bean @Import

3.第二个配置类主要测试的注解有:@PropertySrouce,主要再次来测试一下,从外部来获取配置文件;

4.都用到了AnnotationConfigApplicationContext类。


> " + driverClassName);
// System.out.println("url
==> " + url);
// System.out.println("username====> " + username);
// System.out.println("username====> " + username);
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
return druidDataSource;
}

}


测试 类:

```java
@org.junit.Test
public  void testTwo(){
    ApplicationContext ac= new AnnotationConfigApplicationContext(SpringConfig.class);
    DruidDataSource druidDataSource= (DruidDataSource) ac.getBean("druidDataSource");
    System.out.println(druidDataSource);
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

回顾:

1.建立了两个配置类:SpringConfig、JdbcConfig

2.第一个配置类主要测试的注解有:@Configuration @ComponentScan @Bean @Import

3.第二个配置类主要测试的注解有:@PropertySrouce,主要再次来测试一下,从外部来获取配置文件;

4.都用到了AnnotationConfigApplicationContext类。


如果你不习惯于用注解,那么可以先使用配置文件来,只要达成效果即可,理解即可。

文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/106839363

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。