Spring常见的注解及其含义(Spring小结)
你好我是辰兮,很高兴你能来阅读,本篇小结了关于Spring的常见注解,分享给初学者,希望学有所获,大家一起进步。
1.JAVA基础面试常考问题
: JAVA面试基础常考题汇集2.JAVA面试SSM框架常考
:JAVA框架面试题汇集
一、@Component()
@Repository、@Service、@Controller 和 @Component 将类标识为Bean
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:
@Repository、@Service 和 @Controller。
在目前的 Spring 版本中,这 3 个注释和 @Component 是等效的,但是从注释类的命名上,很容易看出这 3 个注释分别和持久层、业务层和控制层(Web 层)相对应。
虽然目前这3 个注释和 @Component 相比没有什么新意,但 Spring 将在以后的版本中为它们添加特殊的功能。
所以,如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用上述注解对分层中的类进行注释。
- @Service用于标注业务层组件
- @Controller用于标注控制层组件(如struts中的action)
- @Repository用于标注数据访问组件,即DAO组件
- @Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。
二、@RestController和@Controller的区别
@RestController从Spring 4.0以后产生的,用来将json/xml数据发送到前台页面,而不是返回视图页面。
- @RestController注解等价于@ResponseBody + @Controller。
- @RestController和@Controller的共同点是都用来表示Spring某个类是否可以接收HTTP请求,
二者区别:
- @RestController无法返回指定页面,而@Controller可以;
- 前者可以直接返回数据,后者需要@ResponseBody辅助。
三、@Resource和@Autowired
@Resource的作用相当于@Autowired,
只不过@Autowired按byType自动注入,而@Resource默认按 byName自动注入罢了。
@Resource有两个属性是比较重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。
如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。
@Resource装配顺序
- 如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常
- 如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常
- 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常
- 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;
四、@Data注解 与 lombok
@Data 注解的主要作用是提高代码的简洁,使用这个注解可以省去代码中大量的get()、 set()、 toString()等方法;
- ps:因为项目开发过程中你难免会加一个字段,如果加完还要补充get()、 set()方法,重写 toString()就太麻烦了。
1.引入lombok
要使用 @Data 注解要先引入lombok,lombok 是什么,它是一个工具类库,可以用简单的注解形式来简化代码,提高开发效率。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
@Data
public class Post {
private Long id;
private Long postId;
private Long userId;
private Integer status;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
在编译器中添加插件
这里以IDEA为例,在setting的plugin里搜索lombok plugin,安装插件。
常用的几个注解:
- @Data : 注在类上,提供类的get、set、equals、hashCode、canEqual、toString方法
- @AllArgsConstructor : 注在类上,提供类的全参构造
- @NoArgsConstructor : 注在类上,提供类的无参构造
- @Setter : 注在属性上,提供 set 方法
- @Getter : 注在属性上,提供 get 方法
- @EqualsAndHashCode : 注在类上,提供对应的 equals 和 hashCode 方法
- @Log4j/@Slf4j : 注在类上,提供对应的 Logger 对象,变量名为 log
注解@Slf4j的使用
声明:如果不想每次都写private final Logger logger = LoggerFactory.getLogger(当前类名.class); 可以用注解@Slf4j;
log.error("getHostName error:{}",e);
- 1
五、@MapperScan和@Mapper
通过使用@MapperScan可以指定要扫描的Mapper类的包的路径
添加位置:是在Springboot启动类上面添加,
@SpringBootApplication
@MapperScan("com.it.dao")
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisDemoApplication.class, args);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
添加@MapperScan(“com.it.dao”)注解以后,com.it.dao包下面的接口类,在编译之后都会生成相应的实现类。
@Mapper注解:
作用:在接口类上添加了@Mapper,在编译之后会生成相应的接口实现类
添加位置:接口类上面
@Mapper
public interface UserDAO {
//代码
}
- 1
- 2
- 3
- 4
六、@CrossOrigin
@CrossOrigin是用来处理跨域请求的注解
七、@EnableScheduling
springboot使用@EnableScheduling注解进行定时任务
- 添加@EnableScheduling注解到入口类声明上面,如下所示:
@SpringBootApplication
@EnableScheduling
public class SpringbootDemoApplication{
...
}
- 1
- 2
- 3
- 4
- 5
- 将@Scheduled添加到不带参数的方法上,如下所示:
@Component
public class ScheduleTaskService implements IScheduleTaskService {
@Override
@Scheduled(fixedRate = 6000)
public void autosync() {
System.out.print(".");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
其中@Scheduled注解后面括号里面可以指定各种参数,在上面代码里面的fixedRate = 6000意思是下面的任务每隔6000毫秒,即每隔6秒执行一次。
八、@Bean和@Configuration
@Bean 注解将会告诉 Spring 其修饰的方法将会返回一个对象,该方法要注册为 Spring 应用上下文的 bean。
@Configuration
public class AppConfig {
@Bean
public TransferService transferService() {
return new TransferServiceImpl();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
@Configuration注解表明这个类是一个配置类。可以启动组件扫描,用来将带有@Bean的实体进行实例化bean等
<beans>
<bean id="transferService" class="com.it.TransferServiceImpl"/>
</beans>
- 1
- 2
- 3
The best investment is to invest in yourself
2020.06.07 记录辰兮的第79篇博客
文章来源: blessing.blog.csdn.net,作者:辰兮要努力,版权归原作者所有,如需转载,请联系作者。
原文链接:blessing.blog.csdn.net/article/details/106587820
- 点赞
- 收藏
- 关注作者
评论(0)