Spring 通过构造方法注入对象
Spring 通过构造方法注入对象
今天在看一段代码的时候,觉得很奇怪如下:
public class NitroEnclaveServer { private static final Logger LOG = LoggerFactory.getLogger(NitroEnclaveServer.class); private final Listener clientListenerPort; private final ListenerConsumer listenerConsumer; public NitroEnclaveServer(Listener clientListenerPort, ListenerConsumer listenerConsumer) { this.clientListenerPort = clientListenerPort; this.listenerConsumer = listenerConsumer; } }
直接通过构造方法就可以注入这个对象了????下面做了一个测试
验证
一个实体类
@Data @AllArgsConstructor @NoArgsConstructor public class TestEntity { private String name; private String value; }
配置类:
@Configuration public class MyConfig { @Bean public TestEntity testEntity() { return new TestEntity("zhangsan","23"); } }
service类:
public interface TestEntityService { }
@Service public class TestEntityServiceImpl implements TestEntityService { }
测试类:
@RestController public class TestController { private final TestEntity testEntity; private final TestEntityService testEntityService; public TestController(TestEntity testEntity, TestEntityService testEntityService) { this.testEntityService = testEntityService; this.testEntity = testEntity; } }
启动打断点:
发现是可以获取的,并且不用加上 @Autowired 注解。
下面验证一下是不是从容器中获取的:
@RestController public class TestController { @Autowired private ApplicationContext applicationContext; private final TestEntity testEntity; private final TestEntityService testEntityService; public TestController(TestEntity testEntity, TestEntityService testEntityService) { this.testEntityService = testEntityService; this.testEntity = testEntity; } @PostMapping("/test") public String testDemo(@RequestBody TestEntity entity) { return entity.getName(); } }
发请求: 发现: 发现是从容器里面获取的。
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
记录 mybatis-plus 使用问题