关注△mikechen的架构笔记△,十余年BAT架构经验倾囊相授
大家好,我是mikechen。
SpringBoot注解是SpringBoot的核心,也是是大厂经常考察对象,下面我就重点详解9大最常见的SpringBoot注解@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《最全大厂面试题及答案总结》,请关注本公众号【mikechen的架构笔记】,后台回复:资料,即可领取。
启动注解@SpringBootApplication
SpringBoot启动类注解,它是 Spring Boot 的核心注解,如下所示:
publicclassStartEurekaApplication
{publicstaticvoidmain(String[] args)
{SpringApplication.run(StartEurekaApplication.class, args);
}
}
这个注解是Spring Boot最核心的注解,用在 Spring Boot的主类上,标识这是一个 Spring Boot 应用,用来开启 Spring Boot 的各项能力。
实际上@SpringBootApplication注解,主要组合包含:
@Configuration;
@EnableAutoConfiguration;
@ComponentScan;
是以上这三个注解的组合,由于这些注解一般都是一起使用,所以Spring Boot提供了一个统一的注解@SpringBootApplication。
自动配置@EnableAutoConfiguration
Spring Boot自动配置注解,开启这个注解之后,此注释自动载入应用程序所需的所有Bean——这依赖于Spring Boot在类路径中的查找。
public EnableAutoConfiguration {
String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration";
Class<?>[] exclude() default {};
String[] excludeName() default {};
}
组件扫描@ComponentScan
组件扫描其实很简单,@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中。
比如:
public class SpringbootApplication {
这么做扫描的范围扩大到整个父包com.mikechen.test包。
@ComponentScan注解默认就会装配标识了:
@Controller
@Service
@Repository
@Component
等这些注解的类到spring容器中,下面我分别详解。
@Service注解
@Service注解用于类上,标记当前类是一个service类,加上该注解会将当前类自动注入到spring容器中,不需要再在applicationContext.xml文件定义bean了。
比如:
"courseDAO") (
"prototype") (
public class CourseDAOImpl extends HibernateDaoSupport implements CourseDAO{
...
}
然后就可以使用了,如下所示:
@Autowriedprivate CourseDAOImpl courseDAOImpl;
@Repository注解
用于标注数据访问组件,即DAO组件。
使用@Repository注解可以确保DAO或者repositories提供异常转译,这个注解修饰的DAO或者repositories类会被ComponetScan发现并配置,同时也不需要为它们提供XML配置项。
具体示例,如下:
public class UserDaoImpl implements UserDao{
public int insertUser(){
JdbcTemplate template = new JdbcTemplate();
...
}
}
@Component注解
@component是spring中的一个注解,它的作用就是实现bean的注入。
在Java的web开发中,提供3个@Component注解衍生注解分别是:
1)@Controller 控制器注入服务,用于标注控制层;
2)@Service 服务注入dao,用于标注服务层,主要用来进行业务的逻辑处理;
3)@Repository实现dao访问,用于标注数据访问层,即DAO组件;
而@Component泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
@RestController注解
在一个类上添加@Controller注解,表明了这个类是一个控制器类,类似struts中的action。
RestController注解可以直接返回一个对象,配合fastjson,可以将对象转换为json字符串返回给前端,适合ajax异步调用的场景,也是前后端分离中使用最频繁的开发方式。
具体示例如下:
public class UserController {
public Map addGoodsToCartList(Long itemId, Integer num) {
Map map = new HashMap();
map.put("success", true);
map.put("message", "welcome");
return map;
}
}
@Bean注解
@Bean:Spring的@Bean注解用于告诉方法,产生一个Bean对象,然后这个Bean对象交给Spring管理。
相当于XML中的<bean></bean>,放在方法的上面,而不是类,意思是产生一个bean,并交给spring管理。
具体示例,如下:
public class BeanConfig {
public Person person() {
return new Person("mikechen");
}
}
@ResponseBody注解
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。
具体示例如下:
public class HelloWorld {
public String testSpringBoot() {
return "Hello SpringBoot 2 !";
}
}
@AutoWired注解
@autowired注解,来源于英文单词autowire,这个单词的意思是自动装配的意思。
@AutoWired注解的作用:主要就是把配置好的Bean拿来用,完成属性、方法的组装,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。
具体示例,比如用于set方法上:
public class SimpleMovieLister {
private MovieFinder movieFinder;
public void setMovieFinder(MovieFinder movieFinder) {
this.movieFinder = movieFinder;
}
// ...
}
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料