目录

  • 1. @SpringBootApplication(作用在启动类上)
  • 2. @EnableAutoConfiguration(作用在启动类上)
  • 3. @ComponentScan(作用在启动类上)
  • 4. @Configuration(作用在启动类上、配置类上)
  • 5. @Controller(作用在控制器类上)
  • 6. @RestController(作用在控制器类上)
  • 7. @Service((作用在服务(业务)类上))
  • 8. @Repository(作用在类上)
  • 9. @Component(作用在类上)
  • 10. @Bean(作用在方法上)
  • 11. @AutoWired(作用在属性上)
  • 12. @Resource(name=”name”,type=”type”,作用在属性上)
  • 13. @Qualifier(作用在属性上)
  • 14. @RequestMapping(作用在方法上)
  • 15. @ResponseBody(作用在方法上)
  • 16. @Import
  • 17. @ImportResource
  • 18. @PropertySource(作用在类上)
  • 19. @Value(作用在属性上)
  • 20. @Inject
  • 21. @PathVariable(作用在属性上)
  • 22.@Mapper
  • 23. @MapperScan

1. @SpringBootApplication(作用在启动类上)

声明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration + @EnableAutoConfiguration + @ComponentScan 三个配置。
例如:
@SpringBootApplication
/*@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.jamy.song.demo")*/
public class SpringThreadApplication {public static void main(String[] args) {SpringApplication.run(SpringThreadApplication.class, args);}
}

2. @EnableAutoConfiguration(作用在启动类上)

SpringBoot自动配置(auto-configuration):尝试根据你添加的jar依赖自动配置Spring应用。
例如,如果classpath下存在HSQLDB,并且你没有手动配置任何数据库连接beans,那么我们将自动配置一个内存型(in-memory)数据库。
也可以将@EnableAutoConfiguration或者@SpringBootApplication注解添加到一个@Configuration类上来选择自动配置。
如果发现应用了你不想要的特定自动配置类,你可以使用@EnableAutoConfiguration注解的排除属性来禁用它们

3. @ComponentScan(作用在启动类上)

表示将该类自动发现扫描组件,可以指定扫描范围。如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。当使用@ComponentScan注解搜索beans,结合@Autowired注解导入。如果没有配置的话,Spring Boot会扫描启动类所在包下以及子包下的使用了@Service,@Repository等注解的类.
例如:
//@SpringBootApplication
@Configuration
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.jamy.song.demo")
public class SpringThreadApplication {public static void main(String[] args) {SpringApplication.run(SpringThreadApplication.class, args);}
}

4. @Configuration(作用在启动类上、配置类上)

相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
例如:
@Configuration
/*@MapperScan(basePackages = "com.jamy.song.demo.dao",sqlSessionFactoryRef = "sqlSessionFactory"
)*/
@PropertySource(value="classpath:jdbc.properties")
public class MyDataSource {private static ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();@Value(value="${db.username}")private String username;@Value(value="${db.password}")private String password;@Value(value="${db.url}")private String url;@Value(value="${db.driverClassName}")private String driverClassName;@Value(value="${db.jdbcType}")private String jdbcType;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);dataSource.setDbType(jdbcType);return dataSource;}@Beanpublic FactoryBean<SqlSessionFactory> sqlSessionFactory() throws IOException {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(this.dataSource());factoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));return factoryBean;}public DataSourceTransactionManager transactionManager(){DataSourceTransactionManager txMgr = new DataSourceTransactionManager();txMgr.setDataSource(this.dataSource());return txMgr;}
}

5. @Controller(作用在控制器类上)

用于定义控制器类,在spring项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层),一般这个注解在类中,通常方法需要配合注解@RequestMapping
例如:
@Controller
public class DemoController {@Autowiredprivate JobLauncher jobLauncher;@Autowiredprivate Job userJob;@RequestMapping("/queryUser")@ResponseBodypublic String queryUser() throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException {JobParameters jobParameters = new JobParametersBuilder().addDate("date", new Date()).toJobParameters();jobLauncher.run(userJob, jobParameters);return "success";}
}

6. @RestController(作用在控制器类上)

用于标注控制层组件(如struts中的action),是@ResponseBody + @Controller的合集。

7. @Service((作用在服务(业务)类上))

一般用于修饰service层的组件

8. @Repository(作用在类上)

使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项

9. @Component(作用在类上)

泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注
例如:
@Component
@StepScope
public class MyListener implements StepExecutionListener {Map<String, JobParameter> parameters;@Overridepublic void beforeStep(StepExecution stepExecution) {parameters = stepExecution.getJobParameters().getParameters();}@Overridepublic ExitStatus afterStep(StepExecution stepExecution) {return null;}public Map<String, JobParameter> getParameters(){return parameters;}
}

10. @Bean(作用在方法上)

用@Bean标注方法等价于XML中配置的bean,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
例如:
@Configuration
@EnableBatchProcessing
public class UserBatchDemo {private Logger logger = LoggerFactory.getLogger(UserBatchDemo.class);@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate StepBuilderFactory stepBuilderFactory;@Autowiredprivate UserDao dao;@Autowiredprivate MyListener listener;@Beanpublic Job userJob(){return jobBuilderFactory.get("userJob").incrementer(new RunIdIncrementer()) //设置job的id保证每一次执行都是唯一的(可重复执行).flow(userStep()).end().build();}@Beanpublic Step userStep() {return stepBuilderFactory.get("userStep").listener(listener).<User, User>chunk(1).reader(userRead()).writer(new UserWriter()).build();}@Bean@StepScopepublic UserItemReader userRead() {System.out.println(listener.getParameters());List<User> list = dao.queryUser();return new UserItemReader(list);}
}

11. @AutoWired(作用在属性上)

自动导入依赖的bean。byType方式。把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。当加上(required=false)时,就算找不到bean也不报错。和@Resource用法差不多,只不过它是按类型注入的
例如:
@Service
public class UserService {@Autowiredprivate Schedule schedule;@Autowiredprivate UserDao userDao;ExecutorService executorService = Executors.newFixedThreadPool(10);public void addUser(JSONObject jsonObject){schedule.setProperties(userDao, jsonObject);executorService.submit(schedule);}
}

12. @Resource(name=”name”,type=”type”,作用在属性上)

没有括号内内容的话,默认按byName注入。与@Autowired作用差不多。

13. @Qualifier(作用在属性上)

当有多个同一类型的Bean时,可以用@Qualifier(“name”)来指定。与@Autowired配合使用。@Qualifier限定描述符除了能根据名字进行注入,但能进行更细粒度的控制如何选择候选者
例如:
@Service
public class UserService {@Autowired@Qualifier(value="schedule")private Schedule schedule;@Autowiredprivate UserDao userDao;ExecutorService executorService = Executors.newFixedThreadPool(10);public void addUser(JSONObject jsonObject){schedule.setProperties(userDao, jsonObject);executorService.submit(schedule);}
}

14. @RequestMapping(作用在方法上)

提供路由信息,负责URL到Controller中的具体函数的映射
例如:
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("addUser")@ResponseBodypublic String addUser() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "zhangsan");jsonObject.put("age", 21);jsonObject.put("address", "上海市浦东新区松涛路80号");userService.addUser(jsonObject);return "hello world";}}

15. @ResponseBody(作用在方法上)

表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用,用于构建RESTful的api。在使用@RequestMapping后,返回值通常解析为跳转路径,加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。比如异步获取json数据,加上@Responsebody后,会直接返回json数据。该注解一般会配合@RequestMapping一起使用
例如:
@Controller
public class UserController {@Autowiredprivate UserService userService;@RequestMapping("addUser")@ResponseBodypublic String addUser() {JSONObject jsonObject = new JSONObject();jsonObject.put("name", "zhangsan");jsonObject.put("age", 21);jsonObject.put("address", "上海市浦东新区松涛路80号");userService.addUser(jsonObject);return "hello world";}}

16. @Import

用来导入其他配置类。

17. @ImportResource

用来加载xml配置文件

18. @PropertySource(作用在类上)

用来加载application.properties外的普通配置文件,例如jdbc.properties
例如:
@Configuration
@PropertySource(value="classpath:jdbc.properties")
public class MyDataSource {private static ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();@Value(value="${db.username}")private String username;@Value(value="${db.password}")private String password;@Value(value="${db.url}")private String url;@Value(value="${db.driverClassName}")private String driverClassName;@Value(value="${db.jdbcType}")private String jdbcType;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);dataSource.setDbType(jdbcType);return dataSource;}@Beanpublic FactoryBean<SqlSessionFactory> sqlSessionFactory() throws IOException {SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();factoryBean.setDataSource(this.dataSource());factoryBean.setMapperLocations(resolver.getResources("classpath:mapper/*.xml"));return factoryBean;}public DataSourceTransactionManager transactionManager(){DataSourceTransactionManager txMgr = new DataSourceTransactionManager();txMgr.setDataSource(this.dataSource());return txMgr;}}

19. @Value(作用在属性上)

注入Spring boot application.properties配置的属性的值
例如:
@Configuration
/*@MapperScan(basePackages = "com.jamy.song.demo.dao",sqlSessionFactoryRef = "sqlSessionFactory"
)*/
@PropertySource(value="classpath:jdbc.properties")
public class MyDataSource {private static ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();@Value(value="${db.username}")private String username;@Value(value="${db.password}")private String password;@Value(value="${db.url}")private String url;@Value(value="${db.driverClassName}")private String driverClassName;@Value(value="${db.jdbcType}")private String jdbcType;@Beanpublic DruidDataSource dataSource() {DruidDataSource dataSource = new DruidDataSource();dataSource.setUsername(username);dataSource.setPassword(password);dataSource.setUrl(url);dataSource.setDriverClassName(driverClassName);dataSource.setDbType(jdbcType);return dataSource;}
}

20. @Inject

等价于默认的@Autowired,只是没有required属性

21. @PathVariable(作用在属性上)

获取参数

22.@Mapper

用来注解数据持久化接口(dao接口)
例如:
@Mapper
public interface UserDao {List<User> queryUser();
}

23. @MapperScan

用来扫描数据持久化接口包(dao包)
例如:
@SpringBootApplication
@EnableScheduling
@MapperScan(basePackages = "com.jamy.song.demo.dao",sqlSessionFactoryRef = "sqlSessionFactory"
)
public class ApplicationDemo {public static void main(String[] args) {SpringApplication.run(ApplicationDemo.class, args);}
}

Spring注解(包含SpringBoot)相关推荐

  1. 注解整理 - 元注解,lombok注解,spring 注解,springboot注解,springmvc注解

    注解大全 java四种元注解 @Target @Retention @Documented @Inherited lombok注解 lombok注解为什么强大 lombok注解的使用方式 1.安装lo ...

  2. Spring注解之@validated的使用

    Spring注解之@validated的使用 spring-boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理. 比如,我们判断一个输入参数是否合法,可 ...

  3. Spring注解之@Import用法解析

    前言:最近在回顾阅读Springboot源码时发现框架层面大量使用@Import注解,特别是Springboot自动装配机制更是大量使用该注解,搜索部分结果图如下.简单来说就是Springboot中用 ...

  4. Spring注解驱动

    文章目录 SpringBoot注解驱动 SpringBoot的事件监听 关于Spring *PostProcessor的总结 几种*Aware反注入的实现 SpringBoot注解驱动 SpringB ...

  5. Spring注解开发学习笔记

    1 IOC 1.1 工厂模式 使用工厂中方法代替new形式创建对象的一种设计模式 1.2 Inversion of Control控制翻转 一种思想,用于消减代码间的耦合. 实现思想:利用工厂设计模式 ...

  6. Spring全家桶--SpringBoot

    SpringBoot 一.SpringBoot入门 1.1 什么是SpringBoot 1.2 SpringBoot优缺点 1.3 SpringBoot快速入门 1.3.1 通过Maven导入依赖 1 ...

  7. Spring注解大全(史上最全,字母编号,有实例)

    目录 A @Accessors 链式编程使用.需要搭配@Getter和@Setter使用.主要有三个参数: 序号 参数名 介绍 1 chain 链式 2 fluent 流式(若无显示指定chain的值 ...

  8. 项目从Spring转到SpringBoot Migrating from Spring to Spring Boot

    原文链接:Migrating from Spring to Spring Boot 1. Overview 概述 In this article, we're going to take a look ...

  9. SPRING注解驱动开发-雷神课程超详细笔记

    SPRING注解驱动开发-雷神课程超详细笔记 时间:2021-03-21 2022-04-06更新:最近翻起一年多前写的笔记复习,还是收获颇多,很多当时无法理解的知识现在慢慢能理解了,可能是工作一年的 ...

  10. Spring注解开发【源码分析】

    一.注册组件 @ComponentScan 扫描指定包下的组件. String[] value():扫描基础包范围 Filter[] includeFilters():扫描并获取符合过滤规则的组件 F ...

最新文章

  1. Mysterious Bacteria LightOJ - 1220[唯一分解定理+思维题]
  2. 推荐:微服务架构的深度解析!
  3. Java并发编程(2):线程中断(含代码)
  4. Matlab坐标轴中的希腊字母
  5. 理解几个网络硬件(调制解调器、路由器、交换机)的基本作用
  6. 1976年,提出公钥密码体制概念的学者
  7. delphi开发LINUX程序,DELPHI开发LINUX包
  8. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
  9. nginx的模块化体系结构
  10. javascript 自动完成下拉框
  11. python中pandas库里的read_table和read_csv的区别
  12. java源码编译_java 源码编译
  13. 因子分解机(FM,FFM,DeepFM,libfm,xlearn)
  14. mysql主从怎么确保数据一致_如何保证主从复制数据一致性
  15. httpd三种MPM的原理剖析
  16. router 路由守卫
  17. 苹果电脑网速怎么测试软件,macbookpro怎么检测网速?
  18. JDK参考文档的使用
  19. 电影解说的配音都是真人配音吗?
  20. 天玥运维安全网关_中国工业网络安全厂商综合能力概览

热门文章

  1. Ahb2ApbBridge
  2. Extjs学习 数据模型Molde
  3. vnc连接后没桌子黑屏_vnc win10,vnc远程桌面黑屏只有光标
  4. 蓝牙耳机品牌排行榜前十名!2023年超全蓝牙耳机合集!
  5. Mac本地部署蘑菇个人博客详解
  6. 探索车险未来方向,2018平安产险数据建模大赛圆满落幕,获得第五名
  7. Java之动态规划之子序列问题
  8. 郑州财经计算机专业咋样,郑州财经学院怎么样 2021年全国排名多少
  9. new在c语言中的作用,C语言中new的用法
  10. DDD实战课(2):进阶篇