Spring基本运行
基本运行功能
pom.xml
格式
pom.xml配置详解
注意结构,如:dependencies中包括了多个dependency
JavaBean
常用注解
@Data:注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
有了@Data提供的get set方法才能顺利的从配置文件中读取信息@ConfigurationProperties(prefix = “zjh”)//配置zjh属性,这个注解要结合config中的EnableConfigurationProperties({Person.class,Pet.class})允许配置,还要结合controller中的
@Autowired
Person zjh;//注入到IOC容器才能反应
(@Component以被@EnableConfigurationProperties替代)
示例
@ConfigurationProperties(prefix = "zjh")//配置zjh属性
@Data
@ToString
public class Person {private String userName;private Boolean boss;private Date birth;private Integer age;private Pet pet;private String[] interests;private List<String> animal;private Map<String, Object> score;private Set<Double> salarys;private Map<String, List<Pet>> allPets;
}
config配置类
常用注解
@Configuration(proxyBeanMethods = false或true)
Full(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用Full模式默认。其他默认是否Lite模式@EnableConfigurationProperties({Person.class,Pet.class}){}中的类可以由配置文件配置
@Bean 给IOC容器添加组件,@Bean和@Import、@ConfigurationProperties 有冲突,并且@Bean也需要在controller下@Autowired注入
@Import 导入某个类,创建默认组件,组件名默认为全类名,和@Bean冲突
@ImportResource 解析xml配置
示例
@ImportResource("classpath:beans.xml")
@Import({ImportTest1.class})
//下面两个才是基本运行所必要的注解
@EnableConfigurationProperties({Person.class,Pet.class})
@Configuration(proxyBeanMethods = false)
public class MyConfig {@Beanpublic ImportTest1 importTest1(){ImportTest1 it1 = new ImportTest1("test");return it1;}//这个Bean组件就唯一添加到了IOC容器中,并且可以被Cotroller或main获取}
controller控制类
常用注解
- @RestController声明,== @ResponseBody+@Controller
- @RequestMapping("/hello"),RUL后缀映射访问请求
- @Autowired,每个要使用的Bean都需要@Autowired注入容器
示例
@RestController
public class hello {//映射请求:浏览器访问请求@RequestMapping("/hello")//收到hello请求public String handle01(){//反应return "world";}// 自动注入,需要Person有空参构造//或Person类直接实现@Data注解@AutowiredPerson zjh;@RequestMapping("/zjh")//zjh必须先//用 @ConfigurationProperties(prefix = "zjh")//并且在application.yaml中配置public Person handle02(){return zjh;}@AutowiredPet nn;@RequestMapping("/nn")public Pet handle03(){return nn;}
}
运行主类
- @SpringBootApplication声明为主类
- SpringApplication.run(MainApp.class, args)运行且返回IOC容器
- 该单独的类MainAPP.class和以上三个包同目录
单例、组件依赖:proxyBeanMethods
因为在config类中也遇到了proxyBeanMethods,主类中也有proxyBeanMethods参数
他们分别为:
@Configuration(proxyBeanMethods = true)
@SpringBootApplication(proxyBeanMethods = true)
Full(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用默认的Full模式,其他则默认使用Lite模式。
示例
@SpringBootApplication
public class MainApp {//这是入口public static void main(String[] args) {//不光可以启动,还可以有返回值IOC容器ConfigurableApplicationContext run = SpringApplication.run(MainApp.class, args);//返回容器run}}
Bean单例的体现
//单例实例的创建不能用new,而是反射机制
//并且在MyConfig中已创建该类的@Bean//或者//具体属性值由yaml配置
//总之,IOC容器中如下getBean得到的是该类的唯一:单例Person person1 = run.getBean(Person.class);Pet pet1 = run.getBean(Pet.class);System.out.println(pet1);System.out.println(person1);
体现2
System.out.println("***************************");String[] beanNamesForType = run.getBeanNamesForType(person1.getClass());//获取所有Person组件的所有名字for(String str : beanNamesForType){System.out.println(str);}//单例下只有一个zjh-ZJH.inditest.bean.Person
结构分析
- 属性设置:Bean声明@ConfigurationProperties(prefix = “zjh”)——>在application.yaml中配置
- 配置组件:声明@Configuration的类就是配置组件——>
@EnableConfigurationProperties({Person.class,Pet.class})
使配置好的Bean生效 - 控制组件:声明@RestController的类就是控制组件——>
结合@Autowired注入,@RequestMapping("/hello")映射请求 - 主类运行:声明@SpringBootApplication的类就是主类,有main方法体——> ConfigurableApplicationContext run = SpringApplication.run(MainApp.class, args);固定用法,运行且返回IOC容器
Spring基本运行相关推荐
- Java微框架Spring Boot 运行原理深入解读
本文节选自< JavaEE开发的颠覆者--Spring Boot实战 >一书.本书从Spring 基础.Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习.涵盖 ...
- 一步一步手绘Spring MVC运行时序图(Spring MVC原理)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- 一步一步手绘Spring IOC运行时序图二(基于XML的IOC容器初始化)
相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...
- spring boot 运行提示:Process finished with exit code 1
spring boot 运行提示:Process finished with exit code 1 经检查发现是由于在application.properties配置文件中将某些自定义配置项移除了, ...
- Spring 项目运行提示错误 Not a managed type
在启动 Spring 项目的时候提示下面的错误信息. 问题和原因 这个问题的原因是你的类没有在 Spring 管理的容器中注册. 主要原因是上面的包的路径不正确. 修改上面的包的路径后重启服务就可以解 ...
- java spring怎么运行_java – 如何使用spring异步运行方法?
下面的代码假设是异步工作,而是等待Async部分完成然后继续.如何使blah()方法异步运行? xmlns="http://www.springframework.org/schema/be ...
最新文章
- ONES 万事联合创始人 amp; CTO 冯斌:企业服务产品的探索实践
- mysql goto,如何在MySQL存储函数中使用goto标签
- JAVA面试题(27)
- c++中的全排列函数next_permutation()
- AUTOSAR从入门到精通100讲(二十)-特斯拉、高通、华为AI处理器深度分析
- 【工具使用】Xray与Burp联动--流量转发插件Passive Scan Client
- flash调用摄像头弹出设置框监听
- 20145328 《Java程序设计》第7周学习总结
- mysql中php编程实例_PHP连接MYSQL数据库实例代码
- vjc机器人灰度怎么编程_求用vc++编程实现显示灰度直方图的详细步骤,越详细越好...
- 技术美术个人笔记(五)——体素距离场及体积雾
- html 鼠标经过出现横线,CSS实现鼠标经过,文字下方横线划过特效
- 19款最好用的免费数据挖掘工具大汇总
- C/C++项目:魂斗罗游戏
- 前端案例——2.仿淘宝关闭二维码案例
- git基础教程(11) git checkout命令,掌握这些足以
- 微型计算机结构认识实验,实验一 微型计算机结构认识
- 这些样机模型,全部免费下载
- 积分电路和微分电路的工作原理
- Linux 对整个系统备份和还原
热门文章
- 基于飞凌RK3588核心板的无人机主控方案
- [思考][励志]《塔木德》
- WhatsApp客服系统,为什么使用SendWS拓客系统实现WhatsApp客服系统多账号管理?
- oracle中累计求和_oracle求和代码示例
- 电子商务B2C的新动态 - 个性化、专业化定制网站已经平民化
- C练题笔记之:Leetcode-38. 外观数列
- STM32单片机SPI通讯
- 24系列服务器,产品技术-H3C UniServer R4950 G5服务器-新华三集团-H3C
- http://blog.csdn.net/guolin_blog/article/details/17482095/
- ios 倒数器_Clover旗下iOS应用Widgets全线更新:倒数器、新闻画报、全球天气