웹개발/스프링부트
스프링부트 런타임시 호스트와 포트 주소 가져오기
수제개발자
2019. 3. 21. 15:43
일단 @SpringBootApplication 이 붙은 Applicaiton.java에서 ApplicationListner라는 인터페이스를
구현해주고 거기서 받은 ip, port값을 다른클래스에서 사용할수 잇게 햇다...
Application.java
@SpringBootApplication public class Application implements ApplicationListener{ @Autowired private ApplicationContext applicationContext; public int portnum; public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Override public void onApplicationEvent(ApplicationEvent event) { // TODO Auto-generated method stub try { String ip = InetAddress.getLocalHost().getHostAddress(); int port = applicationContext.getBean(Environment.class).getProperty("server.port", Integer.class, 8080); portnum = port; } catch (UnknownHostException e) { e.printStackTrace(); } } }
- @SpringbootApplication이 붙은 클래스가 ApplicationListener를 구현하도록 한다
- onApplicationEvent라는 메소드를 오버라이딩한다
- ip는 InetAddress 클래스의 getLocalHost()로 Localhost객체를 불러온후 getHostAddress()로 가져온다
- 포트는 applicationContext 클래스를 통해 가져온다
WebController.java
@Controller @AllArgsConstructor public class WebController { private PostsService postsService; private Application application; @GetMapping("/") public String main(Model model) { model.addAttribute("posts", postsService.findAllDesc()); int portnum = application.portnum; model.addAttribute("port", portnum); return "main"; } }원하는 클래스에서 Application.java에서 생성된 portnum이라는 변수를 가져와서 쓴다.