快速下载生成一个springboot项目
https://spring.io/quickstart
效果
1 启动
2 访问
Building a RESTful Web Service
https://spring.io/guides/gs/rest-service/#scratch
译文:@RequestParam将查询字符串参数name的值绑定到greeting)方法的name参数中。如果在请求中没有name参数,则使用World的defaultValue。方法主体的实现创建并返回一个新的Greeting对象,该对象具有基于计数器的下一个值的id和内容属性,并使用Greeting模板格式化给定的名称
译文:传统MVC控制器和前面展示的RESTful web服务控制器之间的一个关键区别是HTTP响应体的创建方式。这个RESTful web服务控制器不是依赖视图技术来执行问候数据到HTML的服务器端呈现,而是填充并返回一个greeting对象。对象数据将作为JSON直接写入HTTP响应。这段代码使用Spring @RestController注释,它将类标记为控制器,其中每个方法返回一个域对象而不是视图。它是包含@Controller和@ResponseBody的缩写
Greeting对象必须转换为JSON。由于Spring的HTTP消息转换器支持,您不需要手动进行此转换。因为Jackson2位于类路径上,Spring的MappingJackson2HttpMessageConverter被自动选择来将Greeting实例转换为JSON。
@SpringBootApplication是一个方便的注释,它添加了以下所有内容:
@Configuration:将类标记为应用程序上下文的bean定义源。
@EnableAutoConfiguration:告诉Spring Boot开始基于类路径设置、其他bean和各种属性设置添加bean。例如,如果spring-webmvc在类路径上,该注释将应用程序标记为web应用程序并激活关键行为,例如设置DispatcherServlet。
@ComponentScan:告诉Spring在com/example包中查找其他组件、配置和服务,让它找到控制器。
main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。您是否注意到没有一行XML?也没有web.xml文件。这个web应用程序是100%纯Java的,您不需要配置任何管道或基础设施。
@RestController public class GreetingController { private static final String template = "Hello, %s!"; private final AtomicLong counter = new AtomicLong(); @GetMapping("/greeting") public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) { return new Greeting(counter.incrementAndGet(), String.format(template, name)); } } @SpringBootApplication public class DemoRestApplication { public static void main(String[] args) { SpringApplication.run(DemoRestApplication.class, args); } }
效果
粗整体学习
https://www.bilibili.com/video/BV13R4y1F7aq/?spm_id_from=333.999.0.0&vd_source=562955621af926e4655ded0199c26c61
构造函数
所以
spring调用构造方法,是通过预定好的规律,推断使用哪个构造方法
循环依赖
单例
orderservice是单例bean, 我们往springbean容器中存orderservice对象的时候,要看我们自己定义了多少bean,并不是springbean就只会存一个。
接着看,
根据类型去找, 找到j几个bean,在根据名字找到一个,否则报错。 如果根据类型去找,只找到一个,就不会根据名字去找。
规则:1 bytype 2 byname
aop, 代理对象, cglib
代理对象没有依赖注入
但是执行的时候填充值了
解释
需要了解的原理
cglib+ 代理模式
完成代理对象,设计模式的源码
普通对象是存在jvm堆里面的,spring的代理对象会在容器中,指向普通对象
、
spring事务及其传播机制
上面是现象
如果希望a方法的注解起作用,怎么办
执行的对象变了。
@configuration
也是依赖注入的,代理对象的原理。 也就是最终拿到的对象问题。
循环依赖