基本运行功能

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基本运行相关推荐

  1. Java微框架Spring Boot 运行原理深入解读

    本文节选自< JavaEE开发的颠覆者--Spring Boot实战 >一书.本书从Spring 基础.Spring MVC 基础讲起,从而无难度地引入Spring Boot 的学习.涵盖 ...

  2. 一步一步手绘Spring MVC运行时序图(Spring MVC原理)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  3. 一步一步手绘Spring AOP运行时序图(Spring AOP 源码分析)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  4. 一步一步手绘Spring DI运行时序图(Spring 自动装配之依赖注入)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  5. 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  6. 一步一步手绘Spring IOC运行时序图三(基于Annotation的IOC容器初始化)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  7. 一步一步手绘Spring IOC运行时序图二(基于XML的IOC容器初始化)

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 一步一步手绘Spring IOC运行时序图一(Spring 核心容器 IOC初始化过程) 一步一步手绘Spring IOC运行时序图二(基于XM ...

  8. spring boot 运行提示:Process finished with exit code 1

    spring boot 运行提示:Process finished with exit code 1 经检查发现是由于在application.properties配置文件中将某些自定义配置项移除了, ...

  9. Spring 项目运行提示错误 Not a managed type

    在启动 Spring 项目的时候提示下面的错误信息. 问题和原因 这个问题的原因是你的类没有在 Spring 管理的容器中注册. 主要原因是上面的包的路径不正确. 修改上面的包的路径后重启服务就可以解 ...

  10. java spring怎么运行_java – 如何使用spring异步运行方法?

    下面的代码假设是异步工作,而是等待Async部分完成然后继续.如何使blah()方法异步运行? xmlns="http://www.springframework.org/schema/be ...

最新文章

  1. ONES 万事联合创始人 amp; CTO 冯斌:企业服务产品的探索实践
  2. mysql goto,如何在MySQL存储函数中使用goto标签
  3. JAVA面试题(27)
  4. c++中的全排列函数next_permutation()
  5. AUTOSAR从入门到精通100讲(二十)-特斯拉、高通、华为AI处理器深度分析
  6. 【工具使用】Xray与Burp联动--流量转发插件Passive Scan Client
  7. flash调用摄像头弹出设置框监听
  8. 20145328 《Java程序设计》第7周学习总结
  9. mysql中php编程实例_PHP连接MYSQL数据库实例代码
  10. vjc机器人灰度怎么编程_求用vc++编程实现显示灰度直方图的详细步骤,越详细越好...
  11. 技术美术个人笔记(五)——体素距离场及体积雾
  12. html 鼠标经过出现横线,CSS实现鼠标经过,文字下方横线划过特效
  13. 19款最好用的免费数据挖掘工具大汇总
  14. C/C++项目:魂斗罗游戏
  15. 前端案例——2.仿淘宝关闭二维码案例
  16. git基础教程(11) git checkout命令,掌握这些足以
  17. 微型计算机结构认识实验,实验一 微型计算机结构认识
  18. 这些样机模型,全部免费下载
  19. 积分电路和微分电路的工作原理
  20. Linux 对整个系统备份和还原

热门文章

  1. 基于飞凌RK3588核心板的无人机主控方案
  2. [思考][励志]《塔木德》
  3. WhatsApp客服系统,为什么使用SendWS拓客系统实现WhatsApp客服系统多账号管理?
  4. oracle中累计求和_oracle求和代码示例
  5. 电子商务B2C的新动态 - 个性化、专业化定制网站已经平民化
  6. C练题笔记之:Leetcode-38. 外观数列
  7. STM32单片机SPI通讯
  8. 24系列服务器,产品技术-H3C UniServer R4950 G5服务器-新华三集团-H3C
  9. http://blog.csdn.net/guolin_blog/article/details/17482095/
  10. ios 倒数器_Clover旗下iOS应用Widgets全线更新:倒数器、新闻画报、全球天气