小白第一次写博客,在这里记录下个人认为比较重要的知识整理,有错求评论指出.
1.springboot常用注解
1.1@SpringBootApplication
这个注解用于启动springboot项目,默认会在主类上添加,可以看做@Configuration,@EnableAutoConfiguration,@ComponentScan注解的合集.
这三个注解的作用分别是 :
@EnableAutoConfiguration : 启用SpringBoot的自动配置机制
@Configuration : spring项目中用于导入配置类或注入额外bean,例如jedis,restTemplete,经常与@Bean配合
@ComponentScan : 扫描该类所在包下的所有的类的注解,用于扫描@Component(@Service,@Controller)等注解的bean,生成对应实例
1.2Spring Bean相关注解
1.2.1Component相关注解
@Component: 将注解类生成的实例化对象交给spring容器管理,当Bean所属的层待定时,可使用该注解
@Repository : 对应持久层即Dao层,用于数据库操作
@Service : 多用于标记业务接口的实现类,拦截器上偶尔会标记使用,主要负责复杂的业务逻辑和vo对象包装
@Controller : 用于接收用户请求并调用对应的service层返回数据给前端页面,主要映射uri路径
1.2.2RestController
是@Controller的注解的升级版,包含@Controller和@ResponseBody,表示Bean在接收请求返回数据时将数据转换为JSON或Xml形式数据,是Rest风格的控制器.
单独的@Controller一般用于返回一个视图,需要在application.yml文件中配置前缀和后缀名,添加返回的数据可在形参上注入Model对象,属于传统SpringMVC的应用,前后端不分离的情况下常用.
1.2.3@Autowired
前提是已经将Bean对象交给了Springboot容器管理才可使用,否则容易报空指针异常,作用是自动导入对象到该类中,默认情况下是ByType,也就是按照类型注入,通常是@Service标记接口实现类,而@Autowired标记在接口上
@Resource 与@Autowired近似,规则按照byName优先,在未找到对应名字的实例对象时会按照类型注入,相对@Autowired更加友好.
Ps: @Autowired如果实例化对象加载顺序在后,需要改为@Autowired(required=false),表示在启动时不检查该类是否有实例化对象
1.2.4Scope
使用方法:
@Bean
@Scope("singleton")
public User user(){
return new user();
}
与@Bean注解配合,声明该对象的作用域,作用域声明参照以下链接
原文链接:https://blog.csdn.net/tzbugs/article/details/82142286
例:@scope默认是单例模式(singleton)即:@scope(“prototype”)
1.singleton单例模式,
全局有且仅有一个实例
2.prototype原型模式,
每次获取Bean的时候会有一个新的实例
3.request
request表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP request内有效,
4.session
session作用域表示该针对每一次HTTP请求都会产生一个新的bean,同时该bean仅在当前HTTP session内有效
5.global session
global session作用域类似于标准的HTTP Session作用域,不过它仅仅在基于portlet的web应用中才有意义。Portlet规范定义了全局Session的概念,它被所有构成某个 portlet web应用的各种不同的portlet所共享。在global session作用域中定义的bean被限定于全局portlet Session的生命周期范围内。如果你在web中使用global session作用域来标识bean,那么web会自动当成session类型来使用。