[bootstrapTable] 부트스트랩 테이블  특정 클래스 적용하기


1. 필요한 라이브러리

     -JavaScript

 <!--  Jquery 가져오기 -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <!-- bootstrap 가져오기 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
    <!-- bootstrap table 가져오기  -->
    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>

     - CSS

<!-- 부트스트랩 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <!-- 부트스트랩 테이블 -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">

 


2. 테이블 생성하기

 - Table에 적용힐 CSS를 작성한다.

 <style>
        .largeText {
            font-size: 20px;
            color: blue;
        }

        .smallText {
            font-size: 10px;
            color: red;
        }

        .largePadding {
            padding: 10px;
        }

        .smallPadding {
            padding: 2px;
        }
        table{
            width: 100%;
        }
    </style>

- Html 테이블에 적용할 class들을 checkbox로 구현해둔다.

 <div class="container">
            <div>
                <label for="">테이블 테두리</label>
                <input type="checkbox" data-value="table-bordered">
            </div>
            <div> 
                <label for="">테이블 호버 클래스</label>
                <input type="checkbox" data-value="table-hover"></div>
            <div> 
                <label for="">테이블 줄무늬</label>
                <input type="checkbox" data-value="table-striped"></div>
            <div> 
                <label for="">테이블 어두운 테마 적용</label>
                <input type="checkbox" data-value="table-dark"></div>
            <div> 
                <label for="">테이블 테두리 없애기</label>
                <input type="checkbox" data-value="borderless"></div>
            <div> 
                <label for="">테이블 커스텀 큰 글자와 색깔</label>
                <input type="checkbox" data-value="largeText"></div>
            <div> 
                <label for="">테이블 커스텀 작은 글자와 색깔</label>
                <input type="checkbox" data-value="smallText"></div>
        </div>

 - JavaScript에서 checkbox의 변화가 있을 때, 테이블에 적용한다.

 // input 값의 변화 있을 경우 
            $('input').change(function () {
                // console.log(this)
                var classes = [];
                // check된 input 값의 data-value의 값을 통해서 class를 적용 
                $('input:checked').map(function () {
                    classes.push($(this).data("value"));
                });

                // array Classes를 join으로 class 형식으로 맞춰서 넣어준 후 , refresh 한다
                $table.bootstrapTable('refreshOptions', {
                    classes: classes.join(' ')
                })
            });

3. 결과화면

 -  checkbox 값 변화시 테이블 적용 결과


4. 전체코드

더보기

<!doctype html>

<html lang="ko">

 

<head>

    <!-- Required meta tags -->

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>테이블 클래스 적용하기</title>

 

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"

        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    

        integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> -->

    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">

    <style>

        .largeText {

            font-size20px;

            colorblue;

        }

 

        .smallText {

            font-size10px;

            colorred;

        }

 

        .largePadding {

            padding10px;

        }

 

        .smallPadding {

            padding2px;

        }

        table{

            width100%;

        }

    </style>

</head>

 

<body>

    <div id="wrap">

        <div class="pt-3"></div>

        <div class="container">

            <div>

                <label for="">테이블 테두리(table-bordered) </label>

                <input type="checkbox" data-value="table-bordered">

            </div>

            <div> 

                <label for="">테이블 호버 클래스(table-hover) </label>

                <input type="checkbox" data-value="table-hover"></div>

            <div> 

                <label for="">테이블 줄무늬(table-striped) </label>

                <input type="checkbox" data-value="table-striped"></div>

            <div> 

                <label for="">테이블 어두운 테마 적용(table-dark) </label>

                <input type="checkbox" data-value="table-dark"></div>

            <div> 

                <label for="">테이블 테두리 없애기(borderless) </label>

                <input type="checkbox" data-value="borderless"></div>

            <div> 

                <label for="">테이블 커스텀 큰 글자와 색깔(largeText) </label>

                <input type="checkbox" data-value="largeText"></div>

            <div> 

                <label for="">테이블 커스텀 작은 글자와 색깔(smallText) </label>

                <input type="checkbox" data-value="smallText"></div>

        </div>

        <div class="container">

            <!-- 테이블 생성 부분 -->

            <table id="table" data-width="460">

                <thead>

                    <tr>

                        <!-- JSON 값과 매칭될 field를 명시 -->

                        <th data-field="subject">학과</th>

                        <th data-field="name">이름</th>

                        <th data-field="number">학번</th>

                    </tr>

                </thead>

                <tbody>

                </tbody>

            </table>

        </div>

    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"

        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

    

        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"

        crossorigin="anonymous"></script> -->

    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"

        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"

        crossorigin="anonymous"></script>

    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>

 

    <script>

        // document ready 

        $(function () {

            var $table = $("#table");

            // 테이블 표현할 데이터 표현

            var data = [

                {

                    "subject": "경영학과",

                    "name": "가나다",

                    "number": "20191234"

                },

                {

                    "subject": "체육학과",

                    "name": "알란",

                    "number": "20194567"

                },

                {

                    "subject": "심리학과",

                    "name": "구론",

                    "number": "20171227"

                },

                {

                    "subject": "국문학과",

                    "name": "트레비",

                    "number": "20097892"

                }

            ];

            $table.bootstrapTable({ data: data });

 

            // input 값의 변화 있을 경우 

            $('input').change(function () {

                // console.log(this)

                var classes = [];

                // check된 input 값의 data-value의 값을 통해서 class를 적용 

                $('input:checked').map(function () {

                    classes.push($(this).data("value"));

                });

 

                // array Classes를 join으로 class 형식으로 맞춰서 넣어준 후 , refresh 한다

                $table.bootstrapTable('refreshOptions', {

                    classes: classes.join(' ')

                })

            });

        });

    </script>

</body>

 

</html>

블로그 이미지

미나미나미

,

[bootstrapTable] 부트스트랩 테이블 JSON 값으로 만들기 


1. 필요한 라이브러리

     -JavaScript

 <!--  Jquery 가져오기 -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <!-- bootstrap 가져오기 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
    <!-- bootstrap table 가져오기  -->
    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>

     - CSS

<!-- 부트스트랩 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <!-- 부트스트랩 테이블 -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">

 


2. 테이블 생성하기

 - Html 테이블 부분에서 field 값을 명시한다.

 <!-- 테이블 생성 부분 -->
            <table id="table">
                <thead>
                    <tr>
                        <!-- JSON 값과 매칭될 field를 명시 -->
                        <th data-field="subject">학과</th>
                        <th data-field="name">이름</th>
                        <th data-field="number">학번</th>
                    </tr>
                </thead>
                <tbody>
                </tbody>
            </table>

- JavaScript 부분에서 데이터값과 테이블을 생성한다.

// document ready 
        $(function () {
            var $table = $("#table");
            // 테이블 표현할 데이터 표현
            var data = [
                {
                    "subject": "경영학과",
                    "name": "가나다",
                    "number": "20191234"
                },
                {
                    "subject": "체육학과",
                    "name": "알란",
                    "number": "20194567"
                },
                {
                    "subject": "심리학과",
                    "name": "구론",
                    "number": "20171227"
                },
                {
                    "subject": "심리학과",
                    "name": "구론",
                    "number": "20171227"
                }
            ];
            $table.bootstrapTable({ data: data })
        });

3. 결과화면


4. 전체코드

 

더보기

<!doctype html>

<html lang="ko">

 

<head>

    <!-- Required meta tags -->

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <title>Hello, Bootstrap Table!</title>

 

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"

        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

    

        integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> -->

    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">

</head>

 

<body>

    <div id="wrap">

        <div class="pt-3"></div>

        <div class="container">

            <!-- 테이블 생성 부분 -->

            <table id="table">

                <thead>

                    <tr>

                        <!-- JSON 값과 매칭될 field를 명시 -->

                        <th data-field="subject">학과</th>

                        <th data-field="name">이름</th>

                        <th data-field="number">학번</th>

                    </tr>

                </thead>

                <tbody>

                </tbody>

            </table>

        </div>

    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"

        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>

    

        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"

        crossorigin="anonymous"></script> -->

    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"

        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"

        crossorigin="anonymous"></script>

    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>

 

    <script>

        // document ready 

        $(function () {

            var $table = $("#table");

            // 테이블 표현할 데이터 표현

            var data = [

                {

                    "subject": "경영학과",

                    "name": "가나다",

                    "number": "20191234"

                },

                {

                    "subject": "체육학과",

                    "name": "알란",

                    "number": "20194567"

                },

                {

                    "subject": "심리학과",

                    "name": "구론",

                    "number": "20171227"

                },

                {

                    "subject": "국문학과",

                    "name": "트레비",

                    "number": "20097892"

                }

            ];

            $table.bootstrapTable({ data: data })

        });

    </script>

</body>

 

</html>

블로그 이미지

미나미나미

,

[Bootstrap Table] 부트스트랩 테이블 (bootstrapTable) 생성하기


1. 필요한 라이브러리

     -JavaScript

 <!--  Jquery 가져오기 -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <!-- bootstrap 가져오기 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
    <!-- bootstrap table 가져오기  -->
    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>

     - CSS

<!-- 부트스트랩 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <!-- 부트스트랩 테이블 -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">

 


2. 테이블 생성하기

<!doctype html>
<html lang="ko">

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>부트스트랩 테이블 만들기</title>

    <!-- 부트스트랩 -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <!-- 부트스트랩 테이블 -->
    <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.css">
</head>

<body>
    <!-- bootstrap container -->
    <div class="container">
        <!-- bootstrap 테이블 생성 -->
        <table data-toggle="table">
            <thead>
                <tr>
                    <th>학과</th>
                    <th>이름</th>
                    <th>학번</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>경영학과</td>
                    <td>가나다</td>
                    <td>20191234</td>
                </tr>
                <tr>
                    <td>체육학과</td>
                    <td>알란</td>
                    <td>20194567</td>
                </tr>
                <tr>
                    <td>심리학과</td>
                    <td>구론</td>
                    <td>20171227</td>
                </tr>
                <tr>
                    <td>심리학과</td>
                    <td>구론</td>
                    <td>20171227</td>
                </tr>
            </tbody>
        </table>
    </div>

    <!--  Jquery 가져오기 -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"
        integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
    <!-- bootstrap 가져오기 -->
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>
    <!-- bootstrap table 가져오기  -->
    <script src="https://unpkg.com/bootstrap-table@1.15.5/dist/bootstrap-table.min.js"></script>
</body>

</html>

 


3. 결과화면


 

블로그 이미지

미나미나미

,

1. 정보 사회의 특성과 정보화 역기능

  1. 정보 사회의 특성과 정보화 역기능
    1. 정보사회의 특성
      1. 단일 생활권
      2. 다양한 특성
        1. 신속한 정보 교환 (신속함만을 포함)
        2. 거리에 제약이 없어짐
        3. 사이버 전쟁 개념이 복합된 새로운 모습으로 바뀌어 가고 있다.
    1. 정보화 순기능
      1. 정보화는 편리하고 풍요로운 삶을 보장해주는 순기능적 역할 (거리 제약 해소)
    2. 정보화 역기능
      1. 심각한 사회 문제를 야기 (사이버 범죄 , 해킹) -> 정보보호 중요성 강조

  1. 정보보호(Information Security)

개념 : 정보의 수집, 가공, 검색, 송신, 수신 중에 발생하는 정보의 훼손, 유출등을 방지하기 위한 관리적, 기술적, 수단 또는 그러한 수단을 이루어지는 행위 

 

  1. 정보의 가용성과 안전성(보안성)
    1. 정보의 활용과 정보의 통제 사이에서 균형 감각을 갖는 행위.

  1. 정보보호의 목표
    1. 기밀성(Confindentiality) - 보안 기술로는 접근 제어, 암호화
      1. 인가된 사람, 프로세스, 시스템만이 필요성(Need-to-know) 근거하여 시스템에 접근해야 한다는 원칙
      2. 데이터 처리의 모든 접속점에서 필요한 수준의 비밀엄수가 강제되도록하고, 허가 받지 않은 정보 유출에 예방하는 것을 보장
      3. 데이터가 네트워크로 내의 시스템의 장비에 보관 되었을 때나, 데이터가 전송될 , 데이터가 목적지에 도달한 이후에도 유지. (# 데이터 목적에 도달한 이후에 유지가 되어야 한다는 )
    2. 무결성(intergrity)
      1. 네트워크를 통하여 송수신 되는 정보의 내용이 불법적으로 생성 또는 변형 되거나 삭제되지 않도록 보호되어야하는 성질
    3. 가용성(Auailability) - 보안기술로는 데이터의 백업, 중복성 유지,
      1. 시스템이 지체없이 동작
      2. 합법적인 사용자가 서비스 사용을 거절당하지 않도록 하는것
    4. 인증성(Authenticity)
      1. 전송메시지, 메시지 출처 유효성에 대한 확신.
      2. 사용자가 정말 사용자인지와 시스템에 도착한 자료 정말로 신뢰할 있는 출처에서 것인지를 확신할 있는 것을 의미
    5. 책임추적성(Accountability) - 보안 기술로는 부인 봉쇄, 억제, 결함 분리, 침입 탐지 예방, 사후 복구와 법적인 조치 등이 포함.
      1. 보안 목적에는 개체의 행동을 유일하게 추적해서 찾아낼 있어야 한다는 사항
      2. 보안 침해에 대한 책임이 있는 곳까지 추적할 있어야하만 한다.

  1. CIA Triad
    1.  

 

  1. CIA Triad( Confindentiality , Intergrity , Availiability)

  1. 정보보호 관리 (Information Sercurity Management)
    1. 개념
      1. 정보는 기업이나 공공기관의 중요한 자산
      2. 기업이나 조직의 전략과 목적을 달성하는데 필수불가결한 요소
      3. 정보의 노출 갈취되면 위험을 초래 그러므로, 정보는 관리 되어야 한다.
    2. 정보보관리 대책
      1. 전산가+전산망+정보(데이터) < 기술적 < 물리적 < 관리적 보호대책(제도/ 교육 포함)
      2. 기술적 보호대책
        1. 정보시스템, 통신망, 정보를 보호하기 위한 가장기본적인 대책
        2. 접근 통제, 암호기술, 백업체제, 정보시스템 자체에 보완성이 강화된 시스템 소프트웨어를 사용하는 등의 대책이 기술적 보호대책
      3. 물리적 보호대책
        1. 화재, 수해, 지진 태풍 등과 같은 자연 재해로 부터 정보 시스템이 위치한 정보처리시설을 보호하기 위한 자연재해 대책
        2. 적의 파괴로 부터 정보시스템을 보호하기 위한 출입통제, 시건 장치등의 물리적 보안 대책
      4. 관리적 보호 대책
        1. 내부자의 부당 행위를 방지하기 위한 교육은 무엇보다 중요하게 취급

 

 

 

블로그 이미지

미나미나미

,

- 이 글은 아래의 내용에서 이어지는 내용입니다.

 

[Spring기초] Java로 Bean 만들기.(Java로 xml 대신하기)

- 이 글은 아래의 내용에서 이어지는 내용입니다. [Spring기초] 의존성 주입:DI(DEPENDENCY INJECTION) - 생성자Constructor DI - 이 글은 아래의 내용에서 이어지는 내용입니다. [Spring기초] 의존성 주입:DI(Dep..

minaminaworld.tistory.com


# @Autowired

    - 클래스 타입을 통한 자동 주입.

    - 하나의 클래스만 유일하게 존재할 때 사용하는 것을 추천.

# @Qualifier

    - 이름(아이디)을 통한 자동 주입.

    - 여러개의 동일 클래스가 존재할 때 사용하는 것을 추천.

 

# Autowired 어노테이션은 setter DI의 형식을 취함.


# XML을 통한 방식 / JAVA을 통한 방식

0. Java , Xml 방식의 기본 Beans 생성.

  - DataBean1.java

package AnnotationBean;

import org.springframework.stereotype.Component;

public class DataBean1 {
	private int a = 10;
	private String b = "간다";
	
	public int getA() {
		return a;
	}
	
	public String getB() {
		return b;
	}
	
	public void setA(int a) {
		this.a = a;
	}
	
	public void setB(String b) {
		this.b = b;
	}
}

  - DataBean2.java

package AnnotationBean;

public class DataBean2 {
	private int a = 20;
	private String b = "온다";
	
	public int getA() {
		return a;
	}
	
	public String getB() {
		return b;
	}
	
	public void setA(int a) {
		this.a = a;
	}
	
	public void setB(String b) {
		this.b = b;
	}
}

  - DataBean3.java

package AnnotationBean;

public class DataBean3 {
	private int a = 20;
	private String b = "온다";
	
	public int getA() {
		return a;
	}
	
	public String getB() {
		return b;
	}
	
	public void setA(int a) {
		this.a = a;
	}
	
	public void setB(String b) {
		this.b = b;
	}
}

  - DataBean4.java

package AnnotationBean;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

public class DataBean4 {
	private int a = 20;
	private String b = "온다";
	
	// 생성자 기본값을 지정.
	public DataBean4(@Value("1000") int a , @Value("안녕하세요") String b) {
		this.a = a;
		this.b = b;
	}
	
	public int getA() {
		return a;
	}
	
	public String getB() {
		return b;
	}

}

  - TestBean1.java 

package AnnotationBean;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;

public class TestBean1 {
	
	// data1, data2의 주입은 사실상 동일하다고 생각해도 된다.
	// @Autowired 어노테이션의 경우 data1에 대한 setter 메소드를 통해서 주입이 된다.	
	@Autowired
	private DataBean1 data1;
	
	// @Autowired가 setter 메소드에 붙힘으로써 setter 메소드를 통해서 주입이 된다.
	private DataBean2 data2;
	@Autowired
	public void setData2(DataBean2 data2) {
		this.data2 = data2;
	}
	
	// @Autowried는 클래스 형식으로 찾을 때, 
	// 동일한 클래스가 한 개 이상 지정되어 있으면,
	// @Qualifier를 통해서 이름(id)값을 통해 지정한다.
	@Autowired
	@Qualifier("data3_1")
	private DataBean3 data3_1;
	
	// @Autowried는 클래스 형식으로 찾을 때, 
	// 동일한 클래스가 한 개 이상 지정되어 있으면,
	// @Qualifier를 통해서 이름(id)값을 통해 지정한다.
	@Autowired
	@Qualifier("data3_2")
	private DataBean3 data3_2;
	
	@Autowired
	@Qualifier("data4_1")
	private DataBean4 data4_1;
	
	@Autowired
	@Qualifier("data4_2")
	private DataBean4 data4_2;
	
	public TestBean1() {
		System.out.println("TestBean1 Created");
	}
	
	// Getter 부분.	
	public DataBean1 getData1() {
		return data1;
	}
	
	public DataBean2 getData2() {
		return data2;
	}
	
	public DataBean3 getData3_1() {
		return data3_1;
	}
	
	public DataBean3 getData3_2() {
		return data3_2;
	}
	
	public DataBean4 getData4_1() {
		return data4_1;
	}
	
	public DataBean4 getData4_2() {
		return data4_2;
	}
}

 

 

1. JAVA을 통한 방식

- AnnotationJavaBeans.java : Object을 대한 정보를 정의.

package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import AnnotationBean.DataBean1;
import AnnotationBean.DataBean2;
import AnnotationBean.DataBean3;
import AnnotationBean.DataBean4;
import AnnotationBean.TestBean1;

// XML이 방식이 아닌 JAVA의 형식으로 beans.xml을 대체한다.
@Configuration
public class AnnotationJavaBeans {

	@Bean
	public TestBean1 java1() {
		TestBean1 t1 = new TestBean1();
		return t1;
	}

	@Bean
	public DataBean1 data1() {
		DataBean1 d1 = new DataBean1();
		return d1;
	}

	@Bean
	public DataBean2 data2() {
		DataBean2 d2 = new DataBean2();
		return d2;
	}

	// DataBean3의 경우 setter형식	
	@Bean
	public DataBean3 data3_1() {
		DataBean3 d3 = new DataBean3();
		d3.setA(111);
		d3.setB("DataBean3_1");
		return d3;
	}

	// DataBean3의 경우 setter형식
	@Bean
	public DataBean3 data3_2() {
		DataBean3 d3 = new DataBean3();
		return d3;
	}

	// DataBean4의 경우 생성자 형식
	@Bean
	public DataBean4 data4_1() {
		DataBean4 d4 = new DataBean4(1000, "문자열1");
		return d4;
	}

	// DataBean4의 경우 생성자 형식
	@Bean
	public DataBean4 data4_2() {
		DataBean4 d4 = new DataBean4(2000, "문자열1");
		return d4;
	}

}

- main.java : 실행 코드 부분.

// JAVA 파일을 사용하는 방식
		System.out.println("-------------------------------------------");
		AnnotationConfigApplicationContext ctx2 = new AnnotationConfigApplicationContext(AnnotationJavaBeans.class);

		TestBean1 java1 = ctx2.getBean("java1" , TestBean1.class);
		System.out.println("java1.getData1().getA() = > " + java1.getData1().getA());
		System.out.println("java1.getData1().getB() = > " + java1.getData1().getB());
		System.out.println("----------------------");
		
		System.out.println("java1.getData2().getA() = > " + java1.getData2().getA());
		System.out.println("java1.getData2().getB() = > " + java1.getData2().getB());
		
		System.out.println("----------------------");
		System.out.println("java1.getData3_1().getA() = > " + java1.getData3_1().getA());
		System.out.println("java1.getData3_1().getB() = > " + java1.getData3_1().getB());
		
		System.out.println("----------------------");
		System.out.println("java1.getData3_2().getA() = > " + java1.getData3_2().getA());
		System.out.println("java1.getData3_2().getB() = > " + java1.getData3_2().getB());
		
		System.out.println("----------------------");
		System.out.println("java1.getData4_1().getA() = > " + java1.getData4_1().getA());
		System.out.println("java1.getData4_1().getB() = > " + java1.getData4_1().getB());
		
		System.out.println("----------------------");
		System.out.println("java1.getData4_2().getA() = > " + java1.getData4_2().getA());
		System.out.println("java1.getData4_2().getB() = > " + java1.getData4_2().getB());

		System.out.println("----------------------");
		ctx2.close();

실행결과


 

 

2. XML을 통한 방식

- Annotataionbeans.xml : Object을 대한 정보를 정의.

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans
						http://www.springframework.org/schema/beans/spring-beans.xsd
						http://www.springframework.org/schema/context
						http://www.springframework.org/schema/context/spring-context.xsd">

	<!--  bean 클래스에 설정되어 있는 어노테이션을 이용한다. -->
	<context:annotation-config></context:annotation-config>
	<bean class="AnnotationBean.TestBean1"></bean>
	
	<bean class="AnnotationBean.DataBean1"></bean>
	<bean class="AnnotationBean.DataBean2"></bean>
	
	<bean id="data3_1" class="AnnotationBean.DataBean3" lazy-init="true">
		<property name="a" value="100"></property>
		<property name="b" value="가나다라"></property>
	</bean>
	
	<bean id="data3_2" class="AnnotationBean.DataBean3" lazy-init="true">
		<property name="a" value="200"></property>
		<property name="b" value="뮤뮤뮤뮤뮤뮤~~"></property>
	</bean>
	
	<bean id="data4_1" class="AnnotationBean.DataBean4"></bean>
	<bean id="data4_2" class="AnnotationBean.DataBean4">
		<constructor-arg index="0" value="20000"></constructor-arg>
		<constructor-arg index="1" value="Hello"></constructor-arg>
	</bean>
	
</beans>

- main.java : 실행 코드 부분.

TestBean1 xml1 = ctx1.getBean(TestBean1.class);
		
		System.out.println("xml1.getData1().getA() = > " + xml1.getData1().getA());
		System.out.println("xml1.getData1().getB() = > " + xml1.getData1().getB());
		System.out.println("----------------------");
		
		System.out.println("xml1.getData2().getA() = > " + xml1.getData2().getA());
		System.out.println("xml1.getData2().getB() = > " + xml1.getData2().getB());
		
		System.out.println("----------------------");
		System.out.println("xml1.getData3_1().getA() = > " + xml1.getData3_1().getA());
		System.out.println("xml1.getData3_1().getB() = > " + xml1.getData3_1().getB());
		
		System.out.println("----------------------");
		System.out.println("xml1.getData3_2().getA() = > " + xml1.getData3_2().getA());
		System.out.println("xml1.getData3_2().getB() = > " + xml1.getData3_2().getB());
		
		System.out.println("----------------------");
		System.out.println("xml1.getData4_1().getA() = > " + xml1.getData4_1().getA());
		System.out.println("xml1.getData4_1().getB() = > " + xml1.getData4_1().getB());
		
		System.out.println("----------------------");
		System.out.println("xml1.getData4_2().getA() = > " + xml1.getData4_2().getA());
		System.out.println("xml1.getData4_2().getB() = > " + xml1.getData4_2().getB());

		System.out.println("----------------------");

실행결과


 

블로그 이미지

미나미나미

,

# Json 값을 받아서 화면에 표현해야 하는 경우.

    - JSON 값을 div에 보여줘야하는 경우, JsonView.js을 통해서 보여주려고 한다.

   

# 결과화면 밑에 전체코드가 있습니다.

 


1. head에 선언한 Script : Jquery , jsonview.js , jsonview.css 

 <!-- Jquery -->
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
        crossorigin="anonymous"></script>

    <link rel="stylesheet" href="Module/JsonView/jquery.jsonview.css">
    <script src="Module/JsonView/jquery.jsonview.js"></script>

    <!-- CDN 연결 방식 -->
    <!-- <link rel="stylesheet" href="https://rawgithub.com/yesmeck/jquery-jsonview/master/dist/jquery.jsonview.css" /> -->
    <!-- <script type="text/javascript"src="https://rawgithub.com/yesmeck/jquery-jsonview/master/dist/jquery.jsonview.js"></script> -->

2. body 부분. 

    - textarea 값에 테스트를 위해서 좀 길게 넣었습니다.

 <p>textArea에 json 값을 넣어주세요</p>
    <textarea id="jsonValue" rows="10" cols="100">
         [
  {
    "_id": "5dac8d111cd0990d5d52b96a",
    "index": 0,
    "guid": "f9cf4cfd-8a42-4a1d-9fc4-81049c3080aa",
    "isActive": true,
    "balance": "$1,780.36",
    "address": "229 Kermit Place, Nipinnawasee, District Of Columbia, 1696",
    "about": "Est mollit eiusmod dolor aliqua labore deserunt excepteur occaecat minim. Cupidatat est aliqua sint duis do. In voluptate aliquip eiusmod velit.\r\n",
    "registered": "2014-05-15T03:59:40 -09:00",
    "latitude": 37.243509,
    "longitude": -171.874641,
    "tags": [
      "mollit",
      "exercitation",
      "nisi",
      "consequat",
      "non",
      "adipisicing",
      "ullamco"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Vega Wallace"
      },
      {
        "id": 1,
        "name": "Ingrid Neal"
      },
      {
        "id": 2,
        "name": "Janie Soto"
      }
    ],
    "greeting": "Hello, undefined! You have 6 unread messages.",
    "favoriteFruit": "strawberry"
  },
  {
    "_id": "5dac8d11b430a10d199a3697",
    "index": 1,
    "guid": "6b02729a-8328-429e-b965-a8553eff4d09",
    "isActive": true,
    "balance": "$3,770.58",
    "address": "234 Lewis Avenue, Shasta, Kansas, 1815",
    "about": "Laboris ipsum incididunt sunt Lorem. Lorem officia nostrud laboris quis consequat ullamco elit magna irure. Consectetur duis cupidatat est in quis velit quis mollit.\r\n",
    "registered": "2016-05-15T04:52:17 -09:00",
    "latitude": 12.9566,
    "longitude": 61.266088,
    "tags": [
      "cillum",
      "sint",
      "consequat",
      "veniam",
      "quis",
      "nisi",
      "eu"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Shaw Haney"
      },
      {
        "id": 1,
        "name": "Lavonne Pace"
      },
      {
        "id": 2,
        "name": "Kemp Ingram"
      }
    ],
    "greeting": "Hello, undefined! You have 6 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "5dac8d113641fe4d5b543d7d",
    "index": 2,
    "guid": "48d1dddf-70e0-4a92-8ae4-ec6662a0584d",
    "isActive": true,
    "balance": "$2,200.18",
    "address": "744 Crosby Avenue, Kersey, Virginia, 5923",
    "about": "Nostrud ad reprehenderit voluptate dolore irure cupidatat qui nulla id ullamco non mollit veniam ullamco. Sit qui ad tempor tempor commodo ea sunt sunt duis commodo. Proident laborum velit nostrud proident mollit esse laboris sit cillum eu consequat veniam ad consectetur. Voluptate amet excepteur non sit. Veniam nisi est duis officia et irure.\r\n",
    "registered": "2014-11-29T05:10:48 -09:00",
    "latitude": -10.512397,
    "longitude": 156.17502,
    "tags": [
      "laboris",
      "aliquip",
      "labore",
      "aliquip",
      "occaecat",
      "qui",
      "Lorem"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Harding Reilly"
      },
      {
        "id": 1,
        "name": "Pierce Pena"
      },
      {
        "id": 2,
        "name": "Leonard Padilla"
      }
    ],
    "greeting": "Hello, undefined! You have 8 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "5dac8d118842409a7b4a592a",
    "index": 3,
    "guid": "8454e85a-4404-432e-80f3-dd7539e1c0ef",
    "isActive": false,
    "balance": "$2,683.27",
    "address": "466 Navy Walk, Brewster, Texas, 6693",
    "about": "Veniam officia aute aliqua reprehenderit deserunt ut cupidatat anim aliqua esse incididunt nulla sunt exercitation. Culpa non voluptate nostrud in. Dolore laboris enim cillum ut proident aliqua aliquip dolore magna veniam fugiat enim. Officia eiusmod do culpa fugiat ut eiusmod consequat enim duis. Anim consequat est aliquip id laborum nisi minim do occaecat. Elit irure amet ipsum nulla ut reprehenderit quis labore ut. Elit eiusmod sunt dolore mollit consectetur velit dolor.\r\n",
    "registered": "2016-03-07T08:32:31 -09:00",
    "latitude": 1.005155,
    "longitude": 67.81042,
    "tags": [
      "veniam",
      "duis",
      "in",
      "ex",
      "laboris",
      "amet",
      "mollit"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Bradshaw Castaneda"
      },
      {
        "id": 1,
        "name": "Nellie Merrill"
      },
      {
        "id": 2,
        "name": "Sandoval Hickman"
      }
    ],
    "greeting": "Hello, undefined! You have 4 unread messages.",
    "favoriteFruit": "apple"
  },
  {
    "_id": "5dac8d116840f5652fec481f",
    "index": 4,
    "guid": "567f7cef-bbf3-431a-bc96-06250cfd39ad",
    "isActive": true,
    "balance": "$1,726.97",
    "address": "490 Durland Place, Aurora, Massachusetts, 7419",
    "about": "Sint magna fugiat laborum consequat enim enim qui in nostrud incididunt eiusmod aliqua adipisicing pariatur. Tempor reprehenderit incididunt incididunt eiusmod ut elit mollit excepteur et culpa commodo. Culpa laborum et veniam est culpa voluptate. Dolore aliqua in nisi mollit commodo aliquip nisi aliquip velit aute mollit. Sit et est ut mollit aute adipisicing. Deserunt eu eu pariatur eiusmod commodo adipisicing culpa exercitation ut. Enim esse eiusmod fugiat reprehenderit adipisicing adipisicing culpa minim magna reprehenderit.\r\n",
    "registered": "2018-10-21T05:49:28 -09:00",
    "latitude": -58.404005,
    "longitude": -95.751783,
    "tags": [
      "ullamco",
      "nulla",
      "id",
      "reprehenderit",
      "quis",
      "consectetur",
      "sit"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Allison Burnett"
      },
      {
        "id": 1,
        "name": "David Sharp"
      },
      {
        "id": 2,
        "name": "Hattie Osborn"
      }
    ],
    "greeting": "Hello, undefined! You have 4 unread messages.",
    "favoriteFruit": "strawberry"
  },
  {
    "_id": "5dac8d11eca02cdd7090c991",
    "index": 5,
    "guid": "60ab4eb0-991a-425c-ad3c-919329a13142",
    "isActive": true,
    "balance": "$1,204.71",
    "address": "330 Stewart Street, Harviell, Wyoming, 9337",
    "about": "Est irure ex aute amet adipisicing incididunt exercitation incididunt laborum reprehenderit. Aliquip aliquip tempor deserunt magna qui nostrud velit ea eu voluptate laborum. Occaecat reprehenderit dolore consectetur eiusmod. Do ea adipisicing velit eiusmod quis laborum commodo nostrud. Dolore eiusmod occaecat elit ad proident elit velit nisi fugiat labore excepteur officia.\r\n",
    "registered": "2014-11-09T02:33:56 -09:00",
    "latitude": -2.544352,
    "longitude": 152.762735,
    "tags": [
      "tempor",
      "culpa",
      "adipisicing",
      "amet",
      "aliquip",
      "ad",
      "commodo"
    ],
    "friends": [
      {
        "id": 0,
        "name": "Middleton Lewis"
      },
      {
        "id": 1,
        "name": "Aguilar Lindsey"
      },
      {
        "id": 2,
        "name": "Douglas Finch"
      }
    ],
    "greeting": "Hello, undefined! You have 5 unread messages.",
    "favoriteFruit": "apple"
  }
]  </textarea>

    <!-- JSON을 담을 div -->
    <div id="json" style="width: 500px; height: 500px; border: 1px solid;"></div>

    <div>
        <!-- textarea에 쓰여진 string 값을 읽어서 json으로 표현 -->
        <button id="transJson">Json 값 표현하기</button>
        <!-- 표현된 json 값 뭉치기 -->
        <button id="collapse-btn">Json 합치기</button>
        <!-- json 값 펼치기  -->
        <button id="expand-btn">Json 펼치기</button>
        <!-- Toggle -->
        <button id="toggle-btn">Toggle</button>
        <!-- 깊이 1  -->
        <button id="toggle-level1-btn">Toggle 깊이 1</button>
        <!-- 깊이 2  -->
        <button id="toggle-level2-btn">Toggle 깊이 2</button>
        <!-- 깊이 3  -->
        <button id="toggle-level3-btn">Toggle 깊이 3</button>
    </div>

 

 


3. Script 부분.

<script>
        $(function () {
            // 값 뭉치기
            $('#collapse-btn').on('click', function () {
                $('#json').JSONView('collapse');
            });
            // 값 펼치기
            $('#expand-btn').on('click', function () {
                $('#json').JSONView('expand');
            });
            // toggle
            $('#toggle-btn').on('click', function () {
                $('#json').JSONView('toggle');
            });
            // 깊이 1
            $('#toggle-level1-btn').on('click', function () {
                $('#json').JSONView('toggle', 1);
            });
            // 깊이 2
            $('#toggle-level2-btn').on('click', function () {
                $('#json').JSONView('toggle', 2);
            });
            // 깊이 3
            $('#toggle-level3-btn').on('click', function () {
                $('#json').JSONView('toggle', 3);
            });
            // string json 값을 Json으로 변환.
            $("#transJson").on("click", function () {
                let jsonValue = $("#jsonValue").val().trim();
                // String의 값 json을 변환.
                jsonValue = JSON.parse(jsonValue);
                $('#json').JSONView(jsonValue);
            });
        });
    </script>

4. 결과화면.


#전체코드

...더보기

<!DOCTYPE html>

<html>

 

<head>

    <meta charset="utf-8">

    <title>JS Bin</title>

 

    <!-- Jquery -->

    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"

        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"

        crossorigin="anonymous"></script>

 

    <link rel="stylesheet" href="Module/JsonView/jquery.jsonview.css">

    <script src="Module/JsonView/jquery.jsonview.js"></script>

 

    <!-- CDN 연결 방식 -->

    

    

</head>

 

<body>

    <p>textArea에 json 값을 넣어주세요</p>

    <textarea id="jsonValue" rows="10" cols="100">

    [

  {

    "_id": "5dac8d111cd0990d5d52b96a",

    "index": 0,

    "guid": "f9cf4cfd-8a42-4a1d-9fc4-81049c3080aa",

    "isActive": true,

    "balance": "$1,780.36",

    "address": "229 Kermit Place, Nipinnawasee, District Of Columbia, 1696",

    "about": "Est mollit eiusmod dolor aliqua labore deserunt excepteur occaecat minim. Cupidatat est aliqua sint duis do. In voluptate aliquip eiusmod velit.\r\n",

    "registered": "2014-05-15T03:59:40 -09:00",

    "latitude": 37.243509,

    "longitude": -171.874641,

    "tags": [

      "mollit",

      "exercitation",

      "nisi",

      "consequat",

      "non",

      "adipisicing",

      "ullamco"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Vega Wallace"

      },

      {

        "id": 1,

        "name": "Ingrid Neal"

      },

      {

        "id": 2,

        "name": "Janie Soto"

      }

    ],

    "greeting": "Hello, undefined! You have 6 unread messages.",

    "favoriteFruit": "strawberry"

  },

  {

    "_id": "5dac8d11b430a10d199a3697",

    "index": 1,

    "guid": "6b02729a-8328-429e-b965-a8553eff4d09",

    "isActive": true,

    "balance": "$3,770.58",

    "address": "234 Lewis Avenue, Shasta, Kansas, 1815",

    "about": "Laboris ipsum incididunt sunt Lorem. Lorem officia nostrud laboris quis consequat ullamco elit magna irure. Consectetur duis cupidatat est in quis velit quis mollit.\r\n",

    "registered": "2016-05-15T04:52:17 -09:00",

    "latitude": 12.9566,

    "longitude": 61.266088,

    "tags": [

      "cillum",

      "sint",

      "consequat",

      "veniam",

      "quis",

      "nisi",

      "eu"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Shaw Haney"

      },

      {

        "id": 1,

        "name": "Lavonne Pace"

      },

      {

        "id": 2,

        "name": "Kemp Ingram"

      }

    ],

    "greeting": "Hello, undefined! You have 6 unread messages.",

    "favoriteFruit": "apple"

  },

  {

    "_id": "5dac8d113641fe4d5b543d7d",

    "index": 2,

    "guid": "48d1dddf-70e0-4a92-8ae4-ec6662a0584d",

    "isActive": true,

    "balance": "$2,200.18",

    "address": "744 Crosby Avenue, Kersey, Virginia, 5923",

    "about": "Nostrud ad reprehenderit voluptate dolore irure cupidatat qui nulla id ullamco non mollit veniam ullamco. Sit qui ad tempor tempor commodo ea sunt sunt duis commodo. Proident laborum velit nostrud proident mollit esse laboris sit cillum eu consequat veniam ad consectetur. Voluptate amet excepteur non sit. Veniam nisi est duis officia et irure.\r\n",

    "registered": "2014-11-29T05:10:48 -09:00",

    "latitude": -10.512397,

    "longitude": 156.17502,

    "tags": [

      "laboris",

      "aliquip",

      "labore",

      "aliquip",

      "occaecat",

      "qui",

      "Lorem"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Harding Reilly"

      },

      {

        "id": 1,

        "name": "Pierce Pena"

      },

      {

        "id": 2,

        "name": "Leonard Padilla"

      }

    ],

    "greeting": "Hello, undefined! You have 8 unread messages.",

    "favoriteFruit": "apple"

  },

  {

    "_id": "5dac8d118842409a7b4a592a",

    "index": 3,

    "guid": "8454e85a-4404-432e-80f3-dd7539e1c0ef",

    "isActive": false,

    "balance": "$2,683.27",

    "address": "466 Navy Walk, Brewster, Texas, 6693",

    "about": "Veniam officia aute aliqua reprehenderit deserunt ut cupidatat anim aliqua esse incididunt nulla sunt exercitation. Culpa non voluptate nostrud in. Dolore laboris enim cillum ut proident aliqua aliquip dolore magna veniam fugiat enim. Officia eiusmod do culpa fugiat ut eiusmod consequat enim duis. Anim consequat est aliquip id laborum nisi minim do occaecat. Elit irure amet ipsum nulla ut reprehenderit quis labore ut. Elit eiusmod sunt dolore mollit consectetur velit dolor.\r\n",

    "registered": "2016-03-07T08:32:31 -09:00",

    "latitude": 1.005155,

    "longitude": 67.81042,

    "tags": [

      "veniam",

      "duis",

      "in",

      "ex",

      "laboris",

      "amet",

      "mollit"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Bradshaw Castaneda"

      },

      {

        "id": 1,

        "name": "Nellie Merrill"

      },

      {

        "id": 2,

        "name": "Sandoval Hickman"

      }

    ],

    "greeting": "Hello, undefined! You have 4 unread messages.",

    "favoriteFruit": "apple"

  },

  {

    "_id": "5dac8d116840f5652fec481f",

    "index": 4,

    "guid": "567f7cef-bbf3-431a-bc96-06250cfd39ad",

    "isActive": true,

    "balance": "$1,726.97",

    "address": "490 Durland Place, Aurora, Massachusetts, 7419",

    "about": "Sint magna fugiat laborum consequat enim enim qui in nostrud incididunt eiusmod aliqua adipisicing pariatur. Tempor reprehenderit incididunt incididunt eiusmod ut elit mollit excepteur et culpa commodo. Culpa laborum et veniam est culpa voluptate. Dolore aliqua in nisi mollit commodo aliquip nisi aliquip velit aute mollit. Sit et est ut mollit aute adipisicing. Deserunt eu eu pariatur eiusmod commodo adipisicing culpa exercitation ut. Enim esse eiusmod fugiat reprehenderit adipisicing adipisicing culpa minim magna reprehenderit.\r\n",

    "registered": "2018-10-21T05:49:28 -09:00",

    "latitude": -58.404005,

    "longitude": -95.751783,

    "tags": [

      "ullamco",

      "nulla",

      "id",

      "reprehenderit",

      "quis",

      "consectetur",

      "sit"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Allison Burnett"

      },

      {

        "id": 1,

        "name": "David Sharp"

      },

      {

        "id": 2,

        "name": "Hattie Osborn"

      }

    ],

    "greeting": "Hello, undefined! You have 4 unread messages.",

    "favoriteFruit": "strawberry"

  },

  {

    "_id": "5dac8d11eca02cdd7090c991",

    "index": 5,

    "guid": "60ab4eb0-991a-425c-ad3c-919329a13142",

    "isActive": true,

    "balance": "$1,204.71",

    "address": "330 Stewart Street, Harviell, Wyoming, 9337",

    "about": "Est irure ex aute amet adipisicing incididunt exercitation incididunt laborum reprehenderit. Aliquip aliquip tempor deserunt magna qui nostrud velit ea eu voluptate laborum. Occaecat reprehenderit dolore consectetur eiusmod. Do ea adipisicing velit eiusmod quis laborum commodo nostrud. Dolore eiusmod occaecat elit ad proident elit velit nisi fugiat labore excepteur officia.\r\n",

    "registered": "2014-11-09T02:33:56 -09:00",

    "latitude": -2.544352,

    "longitude": 152.762735,

    "tags": [

      "tempor",

      "culpa",

      "adipisicing",

      "amet",

      "aliquip",

      "ad",

      "commodo"

    ],

    "friends": [

      {

        "id": 0,

        "name": "Middleton Lewis"

      },

      {

        "id": 1,

        "name": "Aguilar Lindsey"

      },

      {

        "id": 2,

        "name": "Douglas Finch"

      }

    ],

    "greeting": "Hello, undefined! You have 5 unread messages.",

    "favoriteFruit": "apple"

  }

]

    </textarea>

 

    <!-- JSON을 담을 div -->

    <div id="json" style="width: 500px; height: 500px; border: 1px solid; overflow: auto;"></div>

 

    <div>

        <!-- textarea에 쓰여진 string 값을 읽어서 json으로 표현 -->

        <button id="transJson">Json 값 표현하기</button>

        <!-- 표현된 json 값 뭉치기 -->

        <button id="collapse-btn">Json 합치기</button>

        <!-- json 값 펼치기  -->

        <button id="expand-btn">Json 펼치기</button>

        <!-- Toggle -->

        <button id="toggle-btn">Toggle</button>

        <!-- 깊이 1  -->

        <button id="toggle-level1-btn">Toggle 깊이 1</button>

        <!-- 깊이 2  -->

        <button id="toggle-level2-btn">Toggle 깊이 2</button>

        <!-- 깊이 3  -->

        <button id="toggle-level3-btn">Toggle 깊이 3</button>

    </div>

 

    <script>

        $(function () {

            // 값 뭉치기

            $('#collapse-btn').on('click'function () {

                $('#json').JSONView('collapse');

            });

            // 값 펼치기

            $('#expand-btn').on('click'function () {

                $('#json').JSONView('expand');

            });

            // toggle

            $('#toggle-btn').on('click'function () {

                $('#json').JSONView('toggle');

            });

            // 깊이 1

            $('#toggle-level1-btn').on('click'function () {

                $('#json').JSONView('toggle'1);

            });

            // 깊이 2

            $('#toggle-level2-btn').on('click'function () {

                $('#json').JSONView('toggle'2);

            });

            // 깊이 3

            $('#toggle-level3-btn').on('click'function () {

                $('#json').JSONView('toggle'3);

            });

            // string json 값을 Json으로 변환.

            $("#transJson").on("click"function () {

                let jsonValue = $("#jsonValue").val().trim();

                // String의 값 json을 변환.

                jsonValue = JSON.parse(jsonValue);

                $('#json').JSONView(jsonValue);

            });

        });

    </script>

</body>

 

</html>

블로그 이미지

미나미나미

,

- 이 글은 아래의 내용에서 이어지는 내용입니다.

 

[Spring기초] 의존성 주입:DI(DEPENDENCY INJECTION) - 생성자Constructor DI

- 이 글은 아래의 내용에서 이어지는 내용입니다. [Spring기초] 의존성 주입:DI(Dependency Injection) - Setter DI # 의존성 주입 : DI(Dependency Injection) -Setter DI 주입 - Spring 의존성 주입 중 Setter를..

minaminaworld.tistory.com


# 자바로 Bean 만들기 

    - Spring 의존성 주입을 XML 방식이 아닌 자바로 생성하는 방법.

 


1. Package JavaBean , JavaTestBean1.java 

   - 패키지 JavaBean에는 생성할 Bean JavaTestBean1.java를 만든다.

 

package JavaBean;

public class JavaTestBean1 {

	public JavaTestBean1() {
		System.out.println("JavaTestBean1이 생성이 되었습니다.");
	}
}


2. Package config, JavaBeans.java

   - 패키지 config에 JavaBeans.java는 기존의 XML 방식에서 Java형식으로 Bean을 정의한다.

package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;

import JavaBean.JavaTestBean1;

// XML이 방식이 아닌 JAVA의 형식으로 beans.xml을 대체한다.
@Configuration
public class JavaBeans {
		
	// AnnotationConfigApplcationContext 되는 순간 생성.
	// getBean할 때 마다 동일한 객체 전달.	
	@Bean
	public JavaTestBean1 testBean1_1() {
		System.out.println("testBean1_1");
		JavaTestBean1 jtb1 = new JavaTestBean1();
		return jtb1;
	}
	
	// getBean하는 순간에 생성 
	// getBean할 때 마다, 객체 생성.
	@Bean
	@Lazy(true)
	@Scope("prototype")
	public JavaTestBean1 testBean1_2() {
		System.out.println("testBean1_2");
		JavaTestBean1 jtb1 = new JavaTestBean1();
		return jtb1;
	}
	
	// testBean50이라는 이름으로 부르도 명시.
	// name이 없는 경우 메소드명으로 부름(default 경우)
	@Bean(name="testBean50")
	public JavaTestBean1 testBean1_3() {
		System.out.println("testBean1_3");
		System.out.println("naming testBean50");
		JavaTestBean1 jtb1 = new JavaTestBean1();
		return jtb1;
	}
		
	@Bean(name="testBean100")
	@Lazy(true)
	public JavaTestBean1 testBean1_4() {
		System.out.println("testBean1_4");
		System.out.println("naming testBean100");
		JavaTestBean1 jtb1 = new JavaTestBean1();
		return jtb1;
	}
}

 

 


3. Main.java

package main;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import JavaBean.JavaTestBean1;
import config.JavaBeans;
import constructorDI.StudentData;
import constructorDI.StudentTestBean;

public class Main {

	public static void main(String[] args) {
		// JAVA 파일을 사용하는 방식
		AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(JavaBeans.class);
		JavaTestBean1 testBean1_1 = ctx.getBean("testBean1_1", JavaTestBean1.class);
		System.out.printf("testBean1_1 = > %s\n", testBean1_1);
		System.out.println("-------------------------------------------");

		JavaTestBean1 testBean1_2 = ctx.getBean("testBean1_2", JavaTestBean1.class);
		System.out.printf("testBean1_2 = > %s\n", testBean1_2);
		System.out.println("-------------------------------------------");

		JavaTestBean1 testBean50 = ctx.getBean("testBean50", JavaTestBean1.class);
		System.out.printf("testBean50 = > %s\n", testBean50);
		System.out.println("-------------------------------------------");

		JavaTestBean1 testBean100 = ctx.getBean("testBean100", JavaTestBean1.class);
		System.out.printf("testBean100 = > %s\n", testBean100);
		System.out.println("-------------------------------------------");

		ctx.close();
		System.out.println("-ctx.close() 됨");
	}
}

4. 결과화면


 

블로그 이미지

미나미나미

,

# Justify-content


- Justify-content : 내용에 대한 항목의 정렬 방법을 명시

    - start : 왼쪽 기준

    - end : 오른쪽 끝 기준

    - center : 가운데 기준
    - between / around


<div class="container">
        <!-- nav 적용  -->
        <p><h3>justify-content-start 적용</h3></p>
        <ul id="nav1" class="nav justify-content-start bg-light">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link2</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link3</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link4</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>

        <!-- 구분선 -->
        <hr class="my-5">
        <p><h3>justify-content-center 적용</h3></p>
        <ul id="nav2" class="nav justify-content-center bg-light">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link2</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link3</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link4</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>

        <!-- 구분선 -->
        <hr class="my-5">
        <p><h3>justify-content-end 적용</h3></p>
        <ul id="nav3" class="nav justify-content-end bg-light">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link2</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link3</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link4</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>

        <!-- 구분선 -->
        <hr class="my-5">
        <p><h3>justify-content-between 적용</h3></p>
        <ul id="nav4" class="nav justify-content-between bg-light">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link2</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link3</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link4</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>

        <!-- 구분선 -->
        <hr class="my-5">
        <p><h3>justify-content-around 적용</h3></p>
        <ul id="nav5" class="nav justify-content-around bg-light">
            <li class="nav-item">
                <a class="nav-link active" href="#">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link1</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link2</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link3</a>
            </li>
            <li class="nav-item">
                <a class="nav-link" href="#">Link4</a>
            </li>
            <li class="nav-item">
                <a class="nav-link disabled" href="#">Disabled</a>
            </li>
        </ul>
    </div>

# 결과화면


# 전체코드

...더보기

<!doctype html>

<html lang="en">

 

<head>

    <!-- Required meta tags -->

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

 

    <!-- Bootstrap CSS -->

    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"

        integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

 

    <title>Hello, world!</title>

    <!-- Optional JavaScript -->

    <!-- jQuery first, then Popper.js, then Bootstrap JS -->

    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"

        integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"

        crossorigin="anonymous"></script>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"

        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"

        crossorigin="anonymous"></script>

    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"

        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"

        crossorigin="anonymous"></script>

</head>

 

<body>

    <div class="container">

        <!-- nav 적용  -->

        <p><h3>justify-content-start 적용</h3></p>

        <ul id="nav1" class="nav justify-content-start bg-light">

            <li class="nav-item">

                <a class="nav-link active" href="#">Home</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link1</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link2</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link3</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link4</a>

            </li>

            <li class="nav-item">

                <a class="nav-link disabled" href="#">Disabled</a>

            </li>

        </ul>

 

        <!-- 구분선 -->

        <hr class="my-5">

        <p><h3>justify-content-center 적용</h3></p>

        <ul id="nav2" class="nav justify-content-center bg-light">

            <li class="nav-item">

                <a class="nav-link active" href="#">Home</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link1</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link2</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link3</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link4</a>

            </li>

            <li class="nav-item">

                <a class="nav-link disabled" href="#">Disabled</a>

            </li>

        </ul>

 

        <!-- 구분선 -->

        <hr class="my-5">

        <p><h3>justify-content-end 적용</h3></p>

        <ul id="nav3" class="nav justify-content-end bg-light">

            <li class="nav-item">

                <a class="nav-link active" href="#">Home</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link1</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link2</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link3</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link4</a>

            </li>

            <li class="nav-item">

                <a class="nav-link disabled" href="#">Disabled</a>

            </li>

        </ul>

 

        <!-- 구분선 -->

        <hr class="my-5">

        <p><h3>justify-content-between 적용</h3></p>

        <ul id="nav4" class="nav justify-content-between bg-light">

            <li class="nav-item">

                <a class="nav-link active" href="#">Home</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link1</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link2</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link3</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link4</a>

            </li>

            <li class="nav-item">

                <a class="nav-link disabled" href="#">Disabled</a>

            </li>

        </ul>

 

        <!-- 구분선 -->

        <hr class="my-5">

        <p><h3>justify-content-around 적용</h3></p>

        <ul id="nav5" class="nav justify-content-around bg-light">

            <li class="nav-item">

                <a class="nav-link active" href="#">Home</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link1</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link2</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link3</a>

            </li>

            <li class="nav-item">

                <a class="nav-link" href="#">Link4</a>

            </li>

            <li class="nav-item">

                <a class="nav-link disabled" href="#">Disabled</a>

            </li>

        </ul>

    </div>

    <script>

        $(function () {

 

            // 좌측 정렬  

            $("#nav1 .nav-item > .active").css("color""red");

            $('#nav1 .nav-link').click(function () {

                // .nav-link 클릭시 이전의 active 값 해제 후, 

                $("#nav1 .nav-item > .active").css("color""#007bff");

                $('#nav1 .nav-link').removeClass('active');

 

                // 클릭한 위치 active 적용 

                $(this).addClass('active');

                $("#nav1 > .nav-item > .active").css("color""red");

            });

 

            // 중앙 정렬된 nav

            $("#nav2 .nav-item > .active").css("color""red");

            $('#nav2 .nav-link').click(function () {

                // .nav-link 클릭시 이전의 active 값 해제 후, 

                $("#nav2 .nav-item > .active").css("color""#007bff");

                $('#nav2 .nav-link').removeClass('active');

 

                // 클릭한 위치 active 적용 

                $(this).addClass('active');

                $("#nav2 > .nav-item > .active").css("color""red");

            });

        });

    </script>

</body>

 

</html>

블로그 이미지

미나미나미

,