
์๋ฐ์์ ๋ณ์๋ช ์ผ๋ก ํด๋์ค๋ฅผ ์ธ์คํด์คํ ํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค.
1. ๋ฐฉ๋ฒ 1-์ธ์๋ ์๊ณ ์์ฑ์๋ง ์๋ ํด๋์ค์๋ง ํด๋น
ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Class๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
<html />Class<?> domainClass = Class.forName("com.femarket.domain." + domainName); Object domain = domainClass.newInstance();
2. ๋ฐฉ๋ฒ 2
ํด๋์ค์ ์ธ์๊ฐ์๋ ์์ฑ์๊ฐ์๋ ๊ฒฝ์ฐ์๋ ์๋ํ๋ ๋ ์์ ํ ๋ฐฉ๋ฒ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฟผ๋ฆฌํ์ฌ ํด๋น Constructor๊ฐ์ฒด ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ด ๊ฐ์ฒด์ ๋ํ newInstance()๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒ์ ๋๋ค.
<javascript />
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
๊ทธ๋ฆฌ๊ณ ์ 2๊ฐ์ง ๋ฐฉ๋ฒ์ Reflection์ด๋ผ๊ณ ํฉ๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ํ ์ด๋ฐ์์ผ๋ก ๋ณ์๋ช ์ ์ด์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์ฝ๋ ์คํ์ Node.js์์ ์งํํ์์ต๋๋ค.
<javascript />
const service_01 = {
log : () =>{
return "service_01";
}
}
module.exports = service_01;
<javascript />
const service_02 = {
log : () =>{
return "service_02";
}
}
module.exports = service_02;
2๊ฐ์ Service ๊ฐ์ฒด๋ฅผ ๋ง๋ ํ ์์ฒญํ๋ url์ ๋ฐ๋ผ์ ๊ฐ์ฒด๋ฅผ ๋ค๋ฅด๊ฒ ํธ์ถํ์ฌ ๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ๊ฒฐ๊ณผ ํ๋ฉด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.

/service_01๋ก ์์ฒญํด service_01.js์ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํ ํ์ฌ service_01์ log ๋ฉ์๋๋ฅผ ํธ์ถํ์์ต๋๋ค.

/service_02๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์๋๋ ๋ผ์ฐํฐ์์์ ์ฝ๋์ ๋๋ค.
<javascript />
const express = require('express');
const router = express.Router();
const service_01 = require('../service/service_01');
const service_02 = require('../service/service_02');
const service = {
service_01
,service_02
}
/* GET home page. */
router.get('/:service_name', function(req, res, next) {
const service_name = req.params.service_name;
const obj = Reflect.get(service, `${service_name}`);
res.render('index.pug' , {service_name: obj.log()});
});
module.exports = router;
const service ์์ ๊ฐ๊ฐ์ service ๊ฐ์ฒด๋ฅผ ๋ด์ต๋๋ค. ์ดํ ๋ค์ด์ค๋ ์์ฒญ๊ฐ(/:service_name)์ ๋ฐ๋ผ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
Reflect.get ๋ฉ์๋๋ฅผ ๋ณด๋ฉด service ๊ฐ์ฒด ์ค ํด๋นํ๋ service_name์ Reflection ํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ดํ res.render์์ ๋ฟ๋ ค์ฃผ๋ ๊ฐ์ value๋ฅผ obj.log๋ฅผ ํด์ค์ผ๋ก ๊ฐ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํ ํ๋ ๊ฑธ ์ ์ ์์ต๋๋ค.
์ด๋ฅผ ํ์ฉํ๋ฉด ์์ฒญ url์ ๋ฐ๋ผ ๊ฐ๊ฐ์ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์คํ ํ ์ ์๋ ์ด์ ์ด ์์ต๋๋ค.
'...' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] EC2 root ๊ณ์ ์ฌ์ฉํ๊ธฐ (0) | 2021.10.05 |
---|---|
[AWS] ์๋ง์กด ๋ฆฌ๋ ์ค์ nginx ์ค์นํ๊ธฐ (0) | 2021.09.26 |
[EKS] EKS๋ก ๊ตฌ์ถํ cluster ์ธ๋ถ ์ ๊ทผํ๊ธฐ (0) | 2021.09.10 |
[JavaScript] ํ์ฌ ๋ ์ง, ์๊ฐ ๊ตฌํ๊ธฐ (yyyy-MM-dd HH:mm:ss) (0) | 2021.09.09 |
[Javascript] JSON๊ณผ JavaScript Object์ ์ฐจ์ด์ (0) | 2021.09.03 |