JAVAEE框架之Spring新注解

简介: JAVAEE框架之Spring新注解

五.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);
    }
}

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());

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());
  • 导入另外一个配置类

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

5.6 PropertySource

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

相当于xml文件里面的:

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

加了:druid的配置类

pom.xml

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.9</version>
</dependency>
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;
    }
}

测试 类:

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

回顾:

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.建立了两个配置类:SpringConfig、JdbcConfig

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

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

4.都用到了AnnotationConfigApplicationContext类。


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


目录
相关文章
|
5天前
|
缓存 Java 开发工具
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
三级缓存是Spring框架里,一个经典的技术点,它很好地解决了循环依赖的问题,也是很多面试中会被问到的问题,本文从源码入手,详细剖析Spring三级缓存的来龙去脉。
Spring是如何解决循环依赖的?从底层源码入手,详细解读Spring框架的三级缓存
|
5天前
|
缓存 安全 Java
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
从底层源码入手,通过代码示例,追踪AnnotationConfigApplicationContext加载配置类、启动Spring容器的整个流程,并对IOC、BeanDefinition、PostProcesser等相关概念进行解释
Spring框架中Bean是如何加载的?从底层源码入手,详细解读Bean的创建流程
|
6天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
9天前
|
运维 NoSQL Java
SpringBoot接入轻量级分布式日志框架GrayLog技术分享
在当今的软件开发环境中,日志管理扮演着至关重要的角色,尤其是在微服务架构下,分布式日志的统一收集、分析和展示成为了开发者和运维人员必须面对的问题。GrayLog作为一个轻量级的分布式日志框架,以其简洁、高效和易部署的特性,逐渐受到广大开发者的青睐。本文将详细介绍如何在SpringBoot项目中接入GrayLog,以实现日志的集中管理和分析。
45 1
|
13天前
|
缓存 Java 应用服务中间件
随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架
【9月更文挑战第6天】随着微服务架构的兴起,Spring Boot凭借其快速开发和易部署的特点,成为构建RESTful API的首选框架。Nginx作为高性能的HTTP反向代理服务器,常用于前端负载均衡,提升应用的可用性和响应速度。本文详细介绍如何通过合理配置实现Spring Boot与Nginx的高效协同工作,包括负载均衡策略、静态资源缓存、数据压缩传输及Spring Boot内部优化(如线程池配置、缓存策略等)。通过这些方法,开发者可以显著提升系统的整体性能,打造高性能、高可用的Web应用。
42 2
|
14天前
|
Cloud Native 安全 Java
Micronaut对决Spring Boot:谁是微服务领域的王者?揭秘两者优劣,选对框架至关重要!
【9月更文挑战第5天】近年来,微服务架构备受关注,Micronaut和Spring Boot成为热门选择。Micronaut由OCI开发,基于注解的依赖注入,内置多种特性,轻量级且启动迅速;Spring Boot则简化了Spring应用开发,拥有丰富的生态支持。选择框架需考虑项目需求、团队经验、性能要求及社区支持等因素。希望本文能帮助您选择合适的微服务框架,助力您的软件开发项目取得成功!
57 2
|
15天前
|
JavaScript 前端开发 Java
【颠覆传统】Spring框架如何用WebSocket技术重塑实时通信格局?揭秘背后的故事与技术细节!
【9月更文挑战第4天】随着Web应用对实时交互需求的增长,传统的HTTP模型已无法满足现代应用的要求,特别是在需要持续、双向通信的场景下。WebSocket协议由此诞生,提供全双工通信渠道,使服务器与客户端能实时互发消息。作为Java开发中最受欢迎的框架之一,Spring通过其WebSocket模块支持这一协议,简化了WebSocket在Spring应用中的集成。
33 0
|
4月前
|
Java API Spring
Spring容器如何使用一个注解来指定一个类型为配置类型
Spring容器如何使用一个注解来指定一个类型为配置类型
44 0
|
3月前
|
XML Java 数据格式
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
Spring5系列学习文章分享---第三篇(AOP概念+原理+动态代理+术语+Aspect+操作案例(注解与配置方式))
34 0
|
3月前
|
Java Spring
spring基于注解配置数据源
spring基于注解配置数据源