Spring,Spring boot mybatis常用注解

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路Spring,Spring boot mybatis常用注解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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;
    }
}

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

静态资源springboot默认读取路径

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

JPA注解

JPA注解

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156278.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!