小工具      在线工具  汉语词典  dos游戏  css  js  c++  java

Spring,Spring boot mybatis常用注解

# Spring Boot,spring,spring boot,java 额外说明

收录于:17天前

spring注解

@Value
该注解的作用是将我们配置文件的属性读出来,有@Value(“${}”)和@Value(“#{}”)两种方式

@Value(“#{}”) 表示SpEl表达式通常用来获取IoC的bean的属性,或者调用bean的某个方法,当然还有可以表示常量。
在这里插入图片描述
@Value(“${}”) 可以获取对应属性文件(properties,yaml,yml文件)中定义的属性值

一个类似于 IoC 容器,另一个用于配置文件。

配置文件的参数很多,通过"${...}"获取需要定义许多成员变量,Spring提供一个配置文件对象Environment,通过该对象的getProperty()方法获取对象的属性值,就不需要定义众多属性了。

//由于spring boot默认读取application.properties文件所以不用注解导入
@RestController
@RequestMapping("/print")
public class Test1Ctrl {
    

    @Value("${name}") private  String name;   //字符串注入
    @Value("${address[0]}") private String address;  //数组注入
    @Value("${person.name}") private String person;  //注入对象属性

    @Autowired
    private Environment environment;  //springboot默认读取的文件装配到配置文件对象

    @GetMapping("/name")
    public String printName(){
    
        return name;
    }

    @GetMapping("/list")
    protected String printList(){
    
        return address;
    }

    @GetMapping("/person")
    public String printPerson(){
    
        return person;
    }

    @GetMapping("/environment")
    public String printEnvironment(){
    
        return environment.getProperty("description");
    }

}

@ConfigurationProperties
将配置文件映射为一个配置类,在自动装配来获取值。

//Student.java:
@Component   //将该类注入到IoC容器
@ConfigurationProperties(prefix = "student")  //该注解实现了将配置文件映射为一个类,prefix绑定配置类的其中一个对象
public class Student {
    
    private String name;
    private String id;
}


//application.yaml
student:
  name: lihua
  id: s001


//controller
@RestController
@RequestMapping("/property")
public class Test2Ctrl {
    

    @Resource
    private Student student;   //注意将Student类注入IoC容器并通过@ConfigurationProperties注解将配置文件映射为一个bean

    @GetMapping("/student")
    protected Student printStudent(){
    
        return student;
    }
}

@Repository
@Repository注解是spring的注解,把当前类注册成一个bean
在这里插入图片描述
@Configuration:等同于spring的XML配置文件;用于初始化IoC容器。

@RestController 注解是@Controller和@ResponseBody的合集,表示这是个控制器bean,并且是将函数的返回值直 接填入HTTP响应体中,是REST风格的控制器。
@Autowired 自动装配,自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。
@Inject: 等价于默认的@Autowired,只是没有required属性;
@Qualifier:当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入。
@Resource:@Resource(name=”name”,type=”type”): 没有括号内内容的话,默认byName。与@Autowired干类似的事。
@PathVariable获取参数。
@ResponseBody该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在spring boot,比如异步获取json数据,加上@responsebody后,会直接返回json数据
@RequestMapping:处理http请求。

@Import: 用来导入其他配置类。
@ImportResource: 用来加载xml配置文件。
@Autowired: 自动导入依赖的bean.
@Service: 一般用于修饰service层的组件

@Repository: 使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
@Conponent:注册组件。
@Bean: 用@Bean标注方法等价于XML中配置的bean。(和之前三个注解用法差不多)

@RequestMapping: @RequestMapping(“/path”)表示该控制器处理所有“/path”的UR L请求。
@RequestParam: 用在方法的参数前面。
@PathVariable: 路径变量
@ControllerAdvice: 包含@Component。可以被扫描到。统一处理异常。
@ExceptionHandler(Exception.class): 用在方法上面表示遇到这个异常就执行以下方法。

mybatis注解

@MapperScan和@Mapper是maybatis注解

mybatis的配置文件与maper映射后是可以自动识别@Select注解的,从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件。在普通项目中我们需要读取xml配置文件,构建SqlSessionFactory和SqlSession获取Mapper类,再调用方法。而@Mapper注解集成了这些功能,无需配置。注解在一个Mapper映射类上,就能完成SqlSessionFactory和SqlSession的创建,并调用getMapper()方法返回一个Mapper类。
在这里插入图片描述
@Mapper需要通过@Repository注入IoC容器,而@MapperScan是org.mybatis.spring提供的是两者的结合。指定需要指定Mapper的路径的包,会扫描包小所有mapper接口生产bean注入IoC容器,作用与spring boot主程序,就不用再每个Mapper映射类上使用@Mapper注解了。
@MapperScan

Spring boot注解

@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
@EnableAutoConfiguration:自动配置,个注释告诉Spring Boot根据你添加的jar依赖关系“猜测”你想要如何配置Spring。
@Configuration等同于spring的XML配置文件
@ComponentScan组件扫描,可自动发现和装配一些Bean。
@Component 可配合CommandLineRunner使用,在程序启动后执行一些基础任务.

@JsonBackReference解决嵌套外链问题,是jackson的注解。

三种不同方式读取配置文件

@SpringBootApplication //声明当前类是一个springBoot引导类,项目中只能有一个,是一个组合注解,其中有三个主要注解
@SpringBootConfiguration //声明当前类是SpringBoot应用的配置类,项目中只能有一个,它里面包含了Configuration注解
@Configuration
@EnableAutoConfiguration //开启自动配置
@ComponentScan //开启注解扫描

Spring读取jdbc.properties配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

@PropertySource指定配置文件

@Configuration //声明一个类作为配置类而不是xml文件

@PropertySource //指定外部属性文件

@Bean //在方法上声明,将方法的返回值添加到Bean容器中,而不是标签上

@Value //将值注入属性

@Configuration
@PropertySource("classpath:jdbc.properties")
public class JdbcConfiguration {
    

    @Value("${jdbc.url}")
    String url;
    @Value("${jdbc.driverClassName}")
    String driverClassName;
    @Value("${jdbc.username}")
    String username;
    @Value("${jdbc.password}")
    String password;

    @Bean
    public DataSource dataSource() {
    
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(url);
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}

//使用@Bean将DataSource注入了spring容器,因此就可以在任意位置通过@Autowired注入DataSource了。

SpringBoot默认会读取名为application.properties的资源文件

# 默认读取直接配置即可
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/leyou?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=123456

@ConfigurationProperties
自定义配置文件使用@ConfigurationProperties ,声明当前类是属性读取类,prefix="jdbc"读取属性文件中,前缀为jdbc的值。

@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
    
    private String url;
    private String driverClassName;
    private String username;
    private String password;
    // getters 和 setters
}

@EnableConfigurationProperties
注解@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象。
使用三种方式注入:@Autowired注入、构造函数注入、@Bean方法的参数注入

//@Autowired注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
    

    @Autowired
    private JdbcProperties jdbcProperties;

    @Bean
    public DataSource dataSource() {
    
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setUrl(jdbcProperties.getUrl());
        dataSource.setDriverClassName(jdbcProperties.getDriverClassName());
        dataSource.setUsername(jdbcProperties.getUsername());
        dataSource.setPassword(jdbcProperties.getPassword());
        return dataSource;
    }

}


//构造函数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
    

    private JdbcProperties jdbcProperties;

    public JdbcConfiguration(JdbcProperties jdbcProperties){
    
        this.jdbcProperties = jdbcProperties;
    }

    @Bean
    public DataSource dataSource() {
    
        // 略
    }

}

//@Bean方法的参数注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
    

    @Bean
    public DataSource dataSource(JdbcProperties jdbcProperties) {
    
        // ...
    }
}

在方法上使用@ConfigurationProperties
如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类(JdbcProperties)中。而是直接在需要的地方声明即可.

@Configuration
public class JdbcConfiguration {
    
    
    @Bean
    // 声明要注入的属性前缀,SpringBoot会自动把相关属性通过set方法注入到DataSource中
    @ConfigurationProperties(prefix = "jdbc")
    public DataSource dataSource() {
    
        DruidDataSource dataSource = new DruidDataSource();
        return dataSource;
    }
}

直接在需要使用的@Bean方法上声明@ConfigurationProperties(prefix = "jdbc"),然后SpringBoot会自动调用这个Bean(这里是DataSource)的set方法,然后完成注入。使用的前提是:类必须有对应属性的set方法!

静态资源springboot默认读取路径

classpath:/META-INF/resources/
classpath:/resources/
classpath:/static/
classpath:/public/

JPA注解

JPA注释

. . .

相关推荐

额外说明

Intellij IDEA 导入 eclipse web 项目详细操作

Eclipse当中的web项目都会有这两个文件。但是idea当中应该是没有的,所以导入会出现兼容问题。但是本篇文章会教大家如何导入,并且导入过后还能使用tomcat运行。文章尽可能以图片的形式进行演示。我的idea使用的版本是2022.3.3版本。当然按

额外说明

若易如何修改数据监控登录账户密码?

控制台管理用户名和密码默认为: 默认账号:ruoyi 默认密码:123456 找到ruoyi-admin\src\main\resources下面的application-druid.yml配置文件 找到如下节点配置,设置控制台账号密码 # 控制台管理用

额外说明

springboot环境下将对象注入到工具类中或者静态方法中将对象注入到工具类中

众所周知工具类一般为static的,如果我们在工具类中需要操作数据库,那么spring环境下需要注入service或者dao将对象交给spring进行管控,但是静态的的对象是无法被注入的,代码可能会出现各种空指针。需要采用@PostConstruct注解

额外说明

/etc/init.d/mysqld启动和关闭mysql报错

文章目录 /etc/init.d/mysqld 启动和关闭 mysql 报错 情景描述 原因 解决方案 /etc/init.d/mysqld 启动和关闭 mysql 报错 情景描述 按照以下步骤操作 使用下面的命令将服务脚本放在 /etc/ini.d/

额外说明

2023年最新组织软件测试常见面试题及答案

包含的模块: 本文分为十九个模块,分别是:软件测试 基础、liunx、MySQL、web测试、接口测试、APP测试 、管理工具、Python、性能测试、selenium、lordrunner、计算机网络、组成原理、数据结构与算法、逻辑题、人力资源!! 如

额外说明

对象深拷贝工具类

/** *序列化方式实现深拷贝,对象obj需要实现序列化 * @param obj * @param <T> * @return */ public static <T extends Serializable> T clone(T obj){

额外说明

jenkins配置maven和JDK

前言 在使用jenkins进行持续集成的时候,需要对拉取到本地仓库的代码进行编译和打包,因此离不开JDK和maven的配置,下面简单演示下jenkins上配置maven和JDK 配置Maven和JDK jenkins所在服务器安装maven 1、下载ma

额外说明

Linux命令200例:man用于显示和阅读关于Linux内置命令的使用说明

-作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 -数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 -本文已收录于专栏:Linux命令大全。 -本专

额外说明

10.1.1 Ext JS 面板添加工具栏的方式汇总

Ext JS的面板(比如form, grid) 中添加工具栏按钮的方式有多种, 具体如下表: 配置方式 说明 tbar Top Bar ,顶部工具栏 bbar Bottom Bar,底部工具栏 lbar Left Bar ,左侧工具栏 rbar Righ

额外说明

[设计模式-行为型]解释器模式(Interpreter)

一句话 看起来是用来解释一种语言的文法。(类似不同的解释器子类解释不同的字符) 和编译器类似的解释器, 实际状况可能使用的比较少。 概括 解析 INTERPRETER—俺有一个《泡MM真经》,上面有各种泡MM的攻略,比如说去吃西餐的步骤、去看电影的方法等

ads via 小工具