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注解
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156278.html