diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index dc2002f6bfa2f6944c271dab888a6e232cf710ac..0000000000000000000000000000000000000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 73f69e0958611ac6e00bde95641f6699030ad235..0000000000000000000000000000000000000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index efd261bf79519c997d1c2ac4154798d551f022dd..0000000000000000000000000000000000000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -demo \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 919ce1f1f77253454105acb2aad9997c1047a0e6..0000000000000000000000000000000000000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index a55e7a179bde3e4e772c29c0c85e53354aa54618..0000000000000000000000000000000000000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index cb923d125b4f9158812faf8569f6f8acadd3788e..0000000000000000000000000000000000000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index aa00ffab7828f4818589659c804ec2cfd99baed3..0000000000000000000000000000000000000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml deleted file mode 100644 index 712ab9d985c20018a0c97b93d2148ac1ffe588a5..0000000000000000000000000000000000000000 --- a/.idea/jarRepositories.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 33cdd3f1f28e1eb18aa793c89e59804b05ffe96c..0000000000000000000000000000000000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 0fb971708620d3c2447d1028eab98ae248560a10..0000000000000000000000000000000000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml deleted file mode 100644 index e96534fb27b68192f27f985d3879e173ec77adb8..0000000000000000000000000000000000000000 --- a/.idea/uiDesigner.xml +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddfbbc029bcab630581847471d7f238ec53..0000000000000000000000000000000000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/LICENSE b/LICENSE index 80a61fa12afec5b92cf1e85350854ff9b8df1c9d..dbbe3558157f5861bff35dcb37b328b679b0ccfd 100644 --- a/LICENSE +++ b/LICENSE @@ -1,661 +1,661 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +. diff --git a/demo.iml b/demo.iml deleted file mode 100644 index 1da5558890ae737845ab2ce16463c9e1f3d0566a..0000000000000000000000000000000000000000 --- a/demo.iml +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/log/logback_debug.log b/log/logback_debug.log deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/log/logback_error.log b/log/logback_error.log deleted file mode 100644 index 3838a045a50cbba23ad26efa0208e4722d67ea69..0000000000000000000000000000000000000000 --- a/log/logback_error.log +++ /dev/null @@ -1,609 +0,0 @@ -2021-07-28 09:31:27,073 ERROR [http-nio-8083-exec-4] c.b.s.e.BaseControllerExceptionHandler [BaseControllerExceptionHandler.java : 124] occur bie error-->>errorUrl:http://localhost:8083/login----->>>errorMessage:{} -org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unexpected character ('}' (code 125)): was expecting double-quote to start field name; nested exception is com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name - at [Source: (PushbackInputStream); line: 4, column: 2] - at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:243) - at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:225) - at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:206) - at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:157) - at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:130) - at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:124) - at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) - at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:131) - at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:877) - at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:783) - at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) - at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) - at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) - at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) - at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) - at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) - at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) - at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) - at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) - at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) - at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) - at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) - at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) - at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) - at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) - at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383) - at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) - at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800) - at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) - at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:800) - at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1471) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) - at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) - at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) - at java.lang.Thread.run(Thread.java:748) -Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character ('}' (code 125)): was expecting double-quote to start field name - at [Source: (PushbackInputStream); line: 4, column: 2] - at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1804) - at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:669) - at com.fasterxml.jackson.core.base.ParserMinimalBase._reportUnexpectedChar(ParserMinimalBase.java:567) - at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._handleOddName(UTF8StreamJsonParser.java:1990) - at com.fasterxml.jackson.core.json.UTF8StreamJsonParser._parseName(UTF8StreamJsonParser.java:1641) - at com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextFieldName(UTF8StreamJsonParser.java:999) - at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:376) - at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:159) - at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013) - at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3084) - at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:237) - ... 69 common frames omitted -2021-07-28 15:26:36,244 ERROR [main] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 567] HikariPool-1 - Exception during pool initialization. -java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) - at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:932) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:857) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:444) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:534) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:486) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:434) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:633) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:190) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b.CGLIB$sqlSessionFactory$2() - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b$$FastClassBySpringCGLIB$$2b897e59.invoke() - at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) - at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b.sqlSessionFactory() - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1421) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1323) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:943) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:826) - at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:562) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:426) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389) - at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1273) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1098) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) - at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:224) - at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) - at com.bupt.springboot.Application.main(Application.java:15) -Caused by: com.mysql.cj.exceptions.CJException: Access denied for user 'root'@'localhost' (using password: YES) - at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) - at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) - at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) - at java.lang.reflect.Constructor.newInstance(Constructor.java:423) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:127) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:819) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:744) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:713) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:135) - at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:553) - at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:217) - at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1411) - at com.mysql.cj.NativeSession.connect(NativeSession.java:165) - at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:876) - ... 111 common frames omitted -2021-07-28 15:26:36,259 ERROR [main] o.s.boot.SpringApplication [SpringApplication.java : 845] Application run failed -org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) - at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:224) - at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) - at com.bupt.springboot.Application.main(Application.java:15) -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:943) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:826) - at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:562) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:426) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389) - at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1273) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1098) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 19 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 33 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 47 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1436) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1323) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) - ... 61 common frames omitted -Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1421) - ... 72 common frames omitted -Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) - ... 84 common frames omitted -Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:489) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:434) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:633) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:190) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b.CGLIB$sqlSessionFactory$2() - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b$$FastClassBySpringCGLIB$$2b897e59.invoke() - at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) - at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b.sqlSessionFactory() - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) - ... 85 common frames omitted -2021-07-28 15:32:10,144 ERROR [main] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 567] HikariPool-1 - Exception during pool initialization. -java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:108) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61) - at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71) - at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:932) - at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:857) - at com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:444) - at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230) - at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:117) - at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:123) - at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:365) - at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:194) - at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:460) - at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:534) - at com.zaxxer.hikari.pool.HikariPool.(HikariPool.java:115) - at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:486) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:434) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:633) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:190) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489.CGLIB$sqlSessionFactory$2() - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489$$FastClassBySpringCGLIB$$aaa301f2.invoke() - at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) - at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489.sqlSessionFactory() - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1421) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1323) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:943) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:826) - at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:562) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:426) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389) - at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1273) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1098) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) - at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:224) - at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) - at com.bupt.springboot.Application.main(Application.java:15) -Caused by: com.mysql.cj.exceptions.CJException: Access denied for user 'root'@'localhost' (using password: YES) - at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) - at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) - at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) - at java.lang.reflect.Constructor.newInstance(Constructor.java:423) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:59) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:103) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:149) - at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:127) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:819) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:744) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:713) - at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:135) - at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:553) - at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:217) - at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1411) - at com.mysql.cj.NativeSession.connect(NativeSession.java:165) - at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:876) - ... 111 common frames omitted -2021-07-28 15:32:10,158 ERROR [main] o.s.boot.SpringApplication [SpringApplication.java : 845] Application run failed -org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:204) - at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:224) - at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:710) - at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) - at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140) - at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762) - at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:330) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1258) - at org.springframework.boot.SpringApplication.run(SpringApplication.java:1246) - at com.bupt.springboot.Application.main(Application.java:15) -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:943) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:826) - at org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:562) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:426) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:389) - at org.springframework.beans.factory.BeanFactoryUtils.beanNamesForTypeIncludingAncestors(BeanFactoryUtils.java:208) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1273) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1098) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 19 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:474) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 33 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586) - at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818) - at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724) - ... 47 common frames omitted -Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1436) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1323) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) - ... 61 common frames omitted -Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:590) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) - at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) - at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) - at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) - at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) - at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) - at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) - at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1421) - ... 72 common frames omitted -Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) - at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) - ... 84 common frames omitted -Caused by: com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. - at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:489) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:434) - at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:633) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:190) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489.CGLIB$sqlSessionFactory$2() - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489$$FastClassBySpringCGLIB$$aaa301f2.invoke() - at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) - at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) - at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489.sqlSessionFactory() - at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) - at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) - at java.lang.reflect.Method.invoke(Method.java:498) - at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) - ... 85 common frames omitted diff --git a/log/logback_error.log.2021-07-25-0.zip b/log/logback_error.log.2021-07-25-0.zip deleted file mode 100644 index 93020fcd28d1c3d03d487d54ae51e2940813d007..0000000000000000000000000000000000000000 Binary files a/log/logback_error.log.2021-07-25-0.zip and /dev/null differ diff --git a/log/logback_error.log.2021-07-27-0.zip b/log/logback_error.log.2021-07-27-0.zip deleted file mode 100644 index e40e7e90ba9a098985df7cb3c44e54cd1dbe00e9..0000000000000000000000000000000000000000 Binary files a/log/logback_error.log.2021-07-27-0.zip and /dev/null differ diff --git a/log/logback_info.log b/log/logback_info.log deleted file mode 100644 index cc3448e874ef12bc2ac54f2ad91584e246a8ed6f..0000000000000000000000000000000000000000 --- a/log/logback_info.log +++ /dev/null @@ -1,751 +0,0 @@ -2021-07-28 00:03:06,202 INFO [Thread-15] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 993] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2e377400: startup date [Tue Jul 27 23:36:26 CST 2021]; root of context hierarchy -2021-07-28 00:03:06,249 INFO [Thread-15] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 366] Stopping beans in phase 2147483647 -2021-07-28 00:03:06,259 INFO [Thread-15] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 451] Unregistering JMX-exposed beans on shutdown -2021-07-28 00:03:06,261 INFO [Thread-15] o.s.j.e.a.AnnotationMBeanExporter [MBeanRegistrationSupport.java : 185] Unregistering JMX-exposed beans -2021-07-28 00:03:07,426 INFO [Thread-15] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 381] HikariPool-1 - Shutdown initiated... -2021-07-28 00:03:07,433 INFO [Thread-15] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 383] HikariPool-1 - Shutdown completed. -2021-07-28 00:03:15,379 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on localhost with PID 30557 (/Users/melooo/Desktop/SpringBoot_login_demo/target/classes started by melooo in /Users/melooo/Desktop/SpringBoot_login_demo) -2021-07-28 00:03:15,382 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 00:03:15,474 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2e377400: startup date [Wed Jul 28 00:03:15 CST 2021]; root of context hierarchy -2021-07-28 00:03:16,799 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$c86331ed] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:16,857 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:16,954 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:16,965 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$39a3c124] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:16,983 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:16,997 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$17a7e3f1] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,002 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,031 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,097 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,120 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,129 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 00:03:17,428 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 00:03:17,446 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,459 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,681 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,686 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy80] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,728 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:17,754 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$eef935a1] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,006 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,097 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,098 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$6301ccc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,133 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,134 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,135 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,416 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,464 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:18,503 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$d9df7757] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:19,039 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 00:03:19,053 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 00:03:19,062 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 00:03:19,062 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 00:03:19,065 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/melooo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] -2021-07-28 00:03:19,155 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 00:03:19,156 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 3681 ms -2021-07-28 00:03:19,265 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 00:03:19,291 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 00:03:19,293 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 00:03:19,294 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 00:03:19,294 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 00:03:19,295 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 00:03:20,023 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:03:20,024 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:03:20,025 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 00:03:20,025 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 00:03:20,031 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 00:03:20,032 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 00:03:20,033 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 00:03:20,035 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 00:03:20,035 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:03:20,221 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 00:03:20,382 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:03:20,598 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2e377400: startup date [Wed Jul 28 00:03:15 CST 2021]; root of context hierarchy -2021-07-28 00:03:20,665 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:03:20,666 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:03:20,666 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:03:20,686 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 00:03:20,727 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 00:03:21,064 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 00:03:21,066 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 00:03:21,072 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 00:03:21,077 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 00:03:21,077 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 00:03:21,094 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 00:03:21,130 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 00:03:21,327 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 00:03:21,357 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 00:03:21,372 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 00:03:21,377 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 6.5 seconds (JVM running for 7.35) -2021-07-28 00:03:24,460 INFO [http-nio-8083-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 00:03:24,570 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 00:03:24,594 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 24 ms -2021-07-28 00:03:47,139 INFO [Thread-15] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 993] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@2e377400: startup date [Wed Jul 28 00:03:15 CST 2021]; root of context hierarchy -2021-07-28 00:03:47,141 INFO [Thread-15] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 366] Stopping beans in phase 2147483647 -2021-07-28 00:03:47,144 INFO [Thread-15] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 451] Unregistering JMX-exposed beans on shutdown -2021-07-28 00:03:47,145 INFO [Thread-15] o.s.j.e.a.AnnotationMBeanExporter [MBeanRegistrationSupport.java : 185] Unregistering JMX-exposed beans -2021-07-28 00:03:47,164 INFO [Thread-15] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 381] HikariPool-1 - Shutdown initiated... -2021-07-28 00:03:47,167 INFO [Thread-15] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 383] HikariPool-1 - Shutdown completed. -2021-07-28 00:03:50,863 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on localhost with PID 30577 (/Users/melooo/Desktop/SpringBoot_login_demo/target/classes started by melooo in /Users/melooo/Desktop/SpringBoot_login_demo) -2021-07-28 00:03:50,870 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 00:03:51,014 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@663411de: startup date [Wed Jul 28 00:03:51 CST 2021]; root of context hierarchy -2021-07-28 00:03:53,008 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$621646ad] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,072 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,142 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,149 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$d356d5e4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,159 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,166 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$b15af8b1] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,169 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,182 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,206 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,219 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,228 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 00:03:53,331 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 00:03:53,344 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,351 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,514 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,519 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy80] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,546 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,556 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$88ac4a61] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,804 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,887 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,890 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$9fe3318c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,924 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,925 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:53,926 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:54,153 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:54,202 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:54,239 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$73928c17] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:03:54,715 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 00:03:54,726 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 00:03:54,734 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 00:03:54,735 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 00:03:54,738 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/melooo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] -2021-07-28 00:03:54,835 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 00:03:54,836 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 3823 ms -2021-07-28 00:03:54,931 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 00:03:54,937 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 00:03:54,937 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 00:03:54,937 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 00:03:54,937 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 00:03:54,938 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 00:04:02,803 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:04:02,804 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:04:02,805 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 00:04:02,805 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 00:04:02,811 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 00:04:02,812 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 00:04:02,813 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 00:04:02,816 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 00:04:02,816 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:04:03,052 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 00:04:03,166 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:04:03,661 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@663411de: startup date [Wed Jul 28 00:03:51 CST 2021]; root of context hierarchy -2021-07-28 00:04:03,905 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:04:03,906 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:04:03,906 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:04:03,931 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 00:04:03,972 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 00:04:04,358 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 00:04:04,360 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 00:04:04,367 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 00:04:04,371 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 00:04:04,371 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 00:04:04,386 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 00:04:04,423 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 00:04:04,586 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 00:04:04,608 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 00:04:04,628 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 00:04:04,635 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 14.389 seconds (JVM running for 15.566) -2021-07-28 00:04:10,439 INFO [http-nio-8083-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 00:04:10,440 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 00:04:10,466 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 25 ms -2021-07-28 00:14:23,010 INFO [Thread-18] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 993] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@663411de: startup date [Wed Jul 28 00:03:51 CST 2021]; root of context hierarchy -2021-07-28 00:14:23,058 INFO [Thread-18] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 366] Stopping beans in phase 2147483647 -2021-07-28 00:14:23,075 INFO [Thread-18] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 451] Unregistering JMX-exposed beans on shutdown -2021-07-28 00:14:23,077 INFO [Thread-18] o.s.j.e.a.AnnotationMBeanExporter [MBeanRegistrationSupport.java : 185] Unregistering JMX-exposed beans -2021-07-28 00:14:23,135 INFO [Thread-18] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 381] HikariPool-1 - Shutdown initiated... -2021-07-28 00:14:23,151 INFO [Thread-18] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 383] HikariPool-1 - Shutdown completed. -2021-07-28 00:14:29,077 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on localhost with PID 30708 (/Users/melooo/Desktop/SpringBoot_login_demo/target/classes started by melooo in /Users/melooo/Desktop/SpringBoot_login_demo) -2021-07-28 00:14:29,080 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 00:14:29,151 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 00:14:29 CST 2021]; root of context hierarchy -2021-07-28 00:14:30,168 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$ef224dd8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,219 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,294 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,302 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$6062dd0f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,315 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,324 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$3e66ffdc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,329 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,344 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,388 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,399 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,404 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 00:14:30,513 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 00:14:30,525 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,531 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,680 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,683 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy80] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,705 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,712 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$15b8518c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,843 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,897 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,898 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$2cef38b7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,919 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,921 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:30,922 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:31,071 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:31,111 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:31,163 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$9e9342] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 00:14:31,576 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 00:14:31,586 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 00:14:31,593 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 00:14:31,593 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 00:14:31,596 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/melooo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] -2021-07-28 00:14:31,676 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 00:14:31,676 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 2525 ms -2021-07-28 00:14:31,756 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 00:14:31,759 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 00:14:31,760 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 00:14:31,760 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 00:14:31,760 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 00:14:31,760 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 00:14:32,340 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:14:32,341 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:14:32,341 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 00:14:32,342 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 00:14:32,346 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 00:14:32,347 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 00:14:32,347 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 00:14:32,349 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 00:14:32,350 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 00:14:32,500 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 00:14:32,613 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:14:32,824 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 00:14:29 CST 2021]; root of context hierarchy -2021-07-28 00:14:32,878 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:14:32,878 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:14:32,879 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 00:14:32,897 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 00:14:32,926 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 00:14:33,214 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 00:14:33,216 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 00:14:33,221 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 00:14:33,225 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 00:14:33,226 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 00:14:33,237 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 00:14:33,257 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 00:14:33,362 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 00:14:33,378 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 00:14:33,387 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 00:14:33,391 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 4.682 seconds (JVM running for 5.323) -2021-07-28 00:14:39,060 INFO [http-nio-8083-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 00:14:39,060 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 00:14:39,083 INFO [http-nio-8083-exec-2] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 22 ms -2021-07-28 09:06:29,242 INFO [Thread-11] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 993] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 00:14:29 CST 2021]; root of context hierarchy -2021-07-28 09:06:29,386 INFO [Thread-11] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 366] Stopping beans in phase 2147483647 -2021-07-28 09:06:29,422 INFO [Thread-11] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 451] Unregistering JMX-exposed beans on shutdown -2021-07-28 09:06:29,431 INFO [Thread-11] o.s.j.e.a.AnnotationMBeanExporter [MBeanRegistrationSupport.java : 185] Unregistering JMX-exposed beans -2021-07-28 09:06:29,558 INFO [Thread-11] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 381] HikariPool-1 - Shutdown initiated... -2021-07-28 09:06:29,568 INFO [Thread-11] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 383] HikariPool-1 - Shutdown completed. -2021-07-28 09:06:36,666 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on localhost with PID 31291 (/Users/melooo/Desktop/SpringBoot_login_demo/target/classes started by melooo in /Users/melooo/Desktop/SpringBoot_login_demo) -2021-07-28 09:06:36,669 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 09:06:36,745 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 09:06:36 CST 2021]; root of context hierarchy -2021-07-28 09:06:37,793 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$817fbef4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,855 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,934 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,940 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$f2c04e2b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,953 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,960 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$d0c470f8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,963 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:37,981 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,017 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,028 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,034 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 09:06:38,166 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 09:06:38,181 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,188 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,302 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,303 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy80] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,315 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,322 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$a815c2a8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,487 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,545 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,546 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$bf4ca9d3] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,586 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,587 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,587 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,746 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,785 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:38,818 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$92fc045e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:06:39,284 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 09:06:39,299 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 09:06:39,306 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 09:06:39,306 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 09:06:39,309 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/melooo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] -2021-07-28 09:06:39,392 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 09:06:39,393 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 2648 ms -2021-07-28 09:06:39,480 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 09:06:39,483 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 09:06:39,484 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 09:06:39,484 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 09:06:39,485 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 09:06:39,485 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 09:06:40,035 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:06:40,035 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:06:40,036 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 09:06:40,036 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 09:06:40,040 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 09:06:40,041 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 09:06:40,042 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 09:06:40,044 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:06:40,044 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 09:06:40,191 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 09:06:40,269 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:06:40,494 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 09:06:36 CST 2021]; root of context hierarchy -2021-07-28 09:06:40,545 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:06:40,546 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:06:40,546 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:06:40,563 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 09:06:40,594 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 09:06:40,854 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 09:06:40,856 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 09:06:40,861 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 09:06:40,865 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 09:06:40,865 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 09:06:40,884 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 09:06:40,911 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 09:06:41,041 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 09:06:41,061 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 09:06:41,070 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 09:06:41,074 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 4.793 seconds (JVM running for 5.417) -2021-07-28 09:07:01,759 INFO [http-nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 09:07:01,759 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 09:07:01,779 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 20 ms -2021-07-28 09:07:18,200 INFO [http-nio-8083-exec-3] io.lettuce.core.EpollProvider [Slf4JLogger.java : 101] Starting without optional epoll library -2021-07-28 09:07:18,201 INFO [http-nio-8083-exec-3] io.lettuce.core.KqueueProvider [Slf4JLogger.java : 101] Starting without optional kqueue library -2021-07-28 09:08:11,511 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 116] USERNAME : test -2021-07-28 09:08:11,512 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 117] URL : http://localhost:8083/test -2021-07-28 09:08:11,512 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 118] HTTP_METHOD : POST -2021-07-28 09:08:11,512 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 119] IP : 0:0:0:0:0:0:0:1 -2021-07-28 09:08:11,512 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 120] CLASS_METHOD : com.bupt.springboot.controller.LoginController.test -2021-07-28 09:08:11,513 INFO [http-nio-8083-exec-4] com.bupt.springboot.aspect.LogAspect [LogAspect.java : 121] ARGS : [] -2021-07-28 09:41:30,045 INFO [Thread-11] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 993] Closing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 09:06:36 CST 2021]; root of context hierarchy -2021-07-28 09:41:30,420 INFO [Thread-11] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 366] Stopping beans in phase 2147483647 -2021-07-28 09:41:30,533 INFO [Thread-11] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 451] Unregistering JMX-exposed beans on shutdown -2021-07-28 09:41:30,558 INFO [Thread-11] o.s.j.e.a.AnnotationMBeanExporter [MBeanRegistrationSupport.java : 185] Unregistering JMX-exposed beans -2021-07-28 09:41:32,211 INFO [Thread-11] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 381] HikariPool-1 - Shutdown initiated... -2021-07-28 09:41:32,268 INFO [Thread-11] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 383] HikariPool-1 - Shutdown completed. -2021-07-28 09:41:52,491 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on localhost with PID 31576 (/Users/melooo/Desktop/SpringBoot_login_demo/target/classes started by melooo in /Users/melooo/Desktop/SpringBoot_login_demo) -2021-07-28 09:41:52,496 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 09:41:52,597 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 09:41:52 CST 2021]; root of context hierarchy -2021-07-28 09:41:55,514 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$b9df8318] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,568 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,638 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,644 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$2b20124f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,653 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,660 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$924351c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,662 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,672 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,697 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,706 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,710 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 09:41:55,822 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 09:41:55,838 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,845 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,962 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,965 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy80] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,983 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:55,992 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$e07586cc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,131 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,180 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,181 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$f7ac6df7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,201 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,202 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,202 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,342 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,379 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,407 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$cb5bc882] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 09:41:56,824 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 09:41:56,833 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 09:41:56,840 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 09:41:56,841 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 09:41:56,844 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/melooo/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.] -2021-07-28 09:41:56,921 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 09:41:56,921 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 4324 ms -2021-07-28 09:41:57,016 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 09:41:57,020 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 09:41:57,020 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 09:41:57,020 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 09:41:57,021 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 09:41:57,021 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 09:41:57,502 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:41:57,503 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:41:57,504 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 09:41:57,504 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 09:41:57,508 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 09:41:57,509 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 09:41:57,510 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 09:41:57,512 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 09:41:57,513 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 09:41:57,667 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 09:41:57,744 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:41:57,919 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@1757cd72: startup date [Wed Jul 28 09:41:52 CST 2021]; root of context hierarchy -2021-07-28 09:41:57,974 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:41:57,975 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:41:57,975 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 09:41:57,993 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 09:41:58,023 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 09:41:58,261 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 09:41:58,263 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 09:41:58,269 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 09:41:58,273 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 09:41:58,273 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 09:41:58,285 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 09:41:58,305 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 09:41:58,413 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 09:41:58,430 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 09:41:58,441 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 09:41:58,445 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 6.34 seconds (JVM running for 6.979) -2021-07-28 15:26:29,948 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 6536 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:26:29,951 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:26:29,996 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@5fbe4146: startup date [Wed Jul 28 15:26:29 CST 2021]; root of context hierarchy -2021-07-28 15:26:30,994 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$f7e9ba07] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,035 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,090 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,094 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$692a493e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,103 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,108 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$472e6c0b] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,109 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,116 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,133 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,140 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:26:31,143 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:26:36,254 INFO [main] o.s.b.a.l.ConditionEvaluationReportLoggingListener [ConditionEvaluationReportLoggingListener.java : 101] - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2021-07-28 15:32:04,117 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 16780 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:32:04,120 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:32:04,148 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:32:04 CST 2021]; root of context hierarchy -2021-07-28 15:32:04,888 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$8baa2285] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:04,928 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:04,983 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:04,988 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$fceab1bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:04,996 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,002 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,004 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,011 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,027 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,034 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:32:05,038 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:32:10,153 INFO [main] o.s.b.a.l.ConditionEvaluationReportLoggingListener [ConditionEvaluationReportLoggingListener.java : 101] - -Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. -2021-07-28 15:33:05,619 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 8260 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:33:05,624 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:33:05,664 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:33:05 CST 2021]; root of context hierarchy -2021-07-28 15:33:06,593 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$8baa2285] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,634 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,686 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,691 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$fceab1bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,698 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,704 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,705 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,711 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,727 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,734 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,737 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:33:06,817 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 15:33:06,827 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,832 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,914 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,916 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy82] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,924 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:06,929 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$b2402639] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,021 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,066 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,067 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$c9770d64] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,084 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,085 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,085 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,261 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,290 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,315 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$9d2667ef] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:33:07,657 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 15:33:07,665 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 15:33:07,671 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 15:33:07,671 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 15:33:07,682 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] Loaded APR based Apache Tomcat Native library [1.2.30] using APR version [1.7.0]. -2021-07-28 15:33:07,682 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. -2021-07-28 15:33:07,682 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] -2021-07-28 15:33:07,685 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021] -2021-07-28 15:33:07,758 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 15:33:07,759 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 2095 ms -2021-07-28 15:33:07,817 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 15:33:07,820 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 15:33:07,820 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 15:33:07,821 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 15:33:07,821 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 15:33:07,821 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 15:33:08,216 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 15:33:08,218 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:33:08,218 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:33:08,219 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register/usernameIsExisted],methods=[POST],produces=[application/json;charset=utf-8]}" onto public boolean com.bupt.springboot.controller.RegisterController.usernameIsExisted(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:33:08,219 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 15:33:08,222 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 15:33:08,223 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 15:33:08,223 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 15:33:08,225 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 15:33:08,225 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:33:08,341 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 15:33:08,396 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:33:08,537 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:33:05 CST 2021]; root of context hierarchy -2021-07-28 15:33:08,579 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:33:08,579 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:33:08,579 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:33:08,592 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 15:33:08,615 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 15:33:08,821 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 15:33:08,822 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 15:33:08,826 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 15:33:08,829 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 15:33:08,829 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 15:33:08,839 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 15:33:08,857 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 15:33:08,952 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 15:33:08,957 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 15:33:08,966 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 15:33:08,969 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 3.657 seconds (JVM running for 4.275) -2021-07-28 15:33:20,247 INFO [http-nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 15:33:20,247 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 15:33:20,263 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms -2021-07-28 15:36:20,941 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 17936 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:36:20,943 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:36:20,971 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:36:20 CST 2021]; root of context hierarchy -2021-07-28 15:36:21,736 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$8baa2285] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,775 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,828 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,832 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$fceab1bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,840 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,845 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,847 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,854 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,869 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,875 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,878 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:36:21,961 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 15:36:21,971 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:21,976 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,056 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,058 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy82] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,066 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,070 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$b2402639] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,166 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,208 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,209 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$c9770d64] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,227 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,227 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,228 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,407 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,436 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,461 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$9d2667ef] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:36:22,783 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 15:36:22,791 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 15:36:22,796 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 15:36:22,797 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 15:36:22,799 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] Loaded APR based Apache Tomcat Native library [1.2.30] using APR version [1.7.0]. -2021-07-28 15:36:22,799 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. -2021-07-28 15:36:22,799 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] -2021-07-28 15:36:22,801 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021] -2021-07-28 15:36:22,889 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 15:36:22,889 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 1918 ms -2021-07-28 15:36:22,950 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 15:36:22,953 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 15:36:22,953 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 15:36:22,953 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 15:36:22,954 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 15:36:22,954 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 15:36:23,341 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:36:23,342 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 15:36:23,343 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register/usernameIsExisted],methods=[POST],produces=[application/json;charset=utf-8]}" onto public boolean com.bupt.springboot.controller.RegisterController.usernameIsExisted(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:36:23,343 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:36:23,344 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 15:36:23,346 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 15:36:23,347 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 15:36:23,348 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 15:36:23,350 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:36:23,350 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 15:36:23,476 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 15:36:23,534 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:36:23,672 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:36:20 CST 2021]; root of context hierarchy -2021-07-28 15:36:23,712 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:36:23,712 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:36:23,712 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:36:23,727 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 15:36:23,749 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 15:36:23,991 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 15:36:23,993 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 15:36:23,997 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 15:36:24,000 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 15:36:24,000 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 15:36:24,011 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 15:36:24,029 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 15:36:24,127 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 15:36:24,133 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 15:36:24,142 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 15:36:24,145 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 3.51 seconds (JVM running for 4.261) -2021-07-28 15:36:32,869 INFO [http-nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 15:36:32,869 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 15:36:32,885 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 16 ms -2021-07-28 15:43:32,631 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 17348 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:43:32,633 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:43:32,672 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:43:32 CST 2021]; root of context hierarchy -2021-07-28 15:43:33,517 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$ef224dd8] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,557 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,612 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,617 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$6062dd0f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,625 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,630 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$3e66ffdc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,632 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,638 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,655 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,661 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,664 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:43:33,746 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 15:43:33,756 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,762 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,843 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,844 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy82] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,852 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,856 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$15b8518c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,950 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,995 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:33,996 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$2cef38b7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,013 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,013 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,014 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,191 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,221 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,245 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$9e9342] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:43:34,567 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 15:43:34,575 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 15:43:34,581 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 15:43:34,581 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 15:43:34,583 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] Loaded APR based Apache Tomcat Native library [1.2.30] using APR version [1.7.0]. -2021-07-28 15:43:34,583 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. -2021-07-28 15:43:34,583 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] -2021-07-28 15:43:34,586 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021] -2021-07-28 15:43:34,718 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 15:43:34,718 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 2046 ms -2021-07-28 15:43:34,779 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 15:43:34,782 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 15:43:34,782 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 15:43:34,782 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 15:43:34,782 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 15:43:34,782 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 15:43:35,181 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:43:35,182 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 15:43:35,182 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register/usernameIsExisted],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.usernameIsExisted(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:43:35,184 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:43:35,184 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 15:43:35,187 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 15:43:35,188 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 15:43:35,188 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 15:43:35,190 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:43:35,190 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 15:43:35,306 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 15:43:35,363 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:43:35,511 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:43:32 CST 2021]; root of context hierarchy -2021-07-28 15:43:35,555 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:43:35,555 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:43:35,555 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:43:35,570 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 15:43:35,595 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 15:43:35,812 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 15:43:35,813 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 15:43:35,818 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 15:43:35,821 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 15:43:35,822 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 15:43:35,832 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 15:43:35,853 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 15:43:35,951 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 15:43:35,957 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 15:43:35,965 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 15:43:35,968 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 3.672 seconds (JVM running for 4.305) -2021-07-28 15:43:38,669 INFO [http-nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 15:43:38,670 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 15:43:38,684 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 14 ms -2021-07-28 15:46:47,266 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 50] Starting Application on Reindeer with PID 9220 (E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes started by gaolu in E:\data\Git_Data\privacy_project\SpringBoot_login_demo) -2021-07-28 15:46:47,268 INFO [main] com.bupt.springboot.Application [SpringApplication.java : 662] No active profile set, falling back to default profiles: default -2021-07-28 15:46:47,295 INFO [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 590] Refreshing org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:46:47 CST 2021]; root of context hierarchy -2021-07-28 15:46:48,025 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'shiroConfig' of type [com.bupt.springboot.shiro.ShiroConfig$$EnhancerBySpringCGLIB$$8baa2285] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,065 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.context.properties.ConversionServiceDeducer$Factory' of type [org.springframework.boot.context.properties.ConversionServiceDeducer$Factory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,118 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,123 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'mybatisPlusConfig' of type [com.bupt.springboot.config.MybatisPlusConfig$$EnhancerBySpringCGLIB$$fceab1bc] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,130 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,135 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$daeed489] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,137 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration$Hikari] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,144 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,159 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'dataSource' of type [com.zaxxer.hikari.HikariDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,165 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'myMetaObjectHandler' of type [com.bupt.springboot.handler.MyMetaObjectHandler] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,168 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 110] HikariPool-1 - Starting... -2021-07-28 15:46:48,251 INFO [main] com.zaxxer.hikari.HikariDataSource [HikariDataSource.java : 123] HikariPool-1 - Start completed. -2021-07-28 15:46:48,261 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,267 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,349 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,350 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userMapper' of type [com.sun.proxy.$Proxy82] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,358 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'spring.redis-org.springframework.boot.autoconfigure.data.redis.RedisProperties' of type [org.springframework.boot.autoconfigure.data.redis.RedisProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,362 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration' of type [org.springframework.boot.autoconfigure.data.redis.LettuceConnectionConfiguration$$EnhancerBySpringCGLIB$$b2402639] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,456 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'lettuceClientResources' of type [io.lettuce.core.resource.DefaultClientResources] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,498 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisConnectionFactory' of type [org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,499 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisCacheConfig' of type [com.bupt.springboot.config.RedisCacheConfig$$EnhancerBySpringCGLIB$$c9770d64] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,516 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisTemplate' of type [org.springframework.data.redis.core.RedisTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,517 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'redisUtil' of type [com.bupt.springboot.utils.RedisUtil] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,517 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'userRealm' of type [com.bupt.springboot.shiro.UserRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,692 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,721 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:48,746 INFO [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker [PostProcessorRegistrationDelegate.java : 326] Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$9d2667ef] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) -2021-07-28 15:46:49,069 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 91] Tomcat initialized with port(s): 8083 (http) -2021-07-28 15:46:49,077 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Initializing ProtocolHandler ["http-nio-8083"] -2021-07-28 15:46:49,082 INFO [main] o.a.catalina.core.StandardService [DirectJDKLog.java : 180] Starting service [Tomcat] -2021-07-28 15:46:49,083 INFO [main] o.a.catalina.core.StandardEngine [DirectJDKLog.java : 180] Starting Servlet Engine: Apache Tomcat/8.5.32 -2021-07-28 15:46:49,085 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] Loaded APR based Apache Tomcat Native library [1.2.30] using APR version [1.7.0]. -2021-07-28 15:46:49,085 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. -2021-07-28 15:46:49,085 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true] -2021-07-28 15:46:49,088 INFO [localhost-startStop-1] o.a.c.core.AprLifecycleListener [DirectJDKLog.java : 180] OpenSSL successfully initialized [OpenSSL 1.1.1k 25 Mar 2021] -2021-07-28 15:46:49,176 INFO [localhost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring embedded WebApplicationContext -2021-07-28 15:46:49,177 INFO [localhost-startStop-1] o.s.web.context.ContextLoader [ServletWebServerApplicationContext.java : 285] Root WebApplicationContext: initialization completed in 1882 ms -2021-07-28 15:46:49,237 INFO [localhost-startStop-1] o.s.b.w.s.ServletRegistrationBean [ServletRegistrationBean.java : 187] Servlet dispatcherServlet mapped to [/] -2021-07-28 15:46:49,240 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'characterEncodingFilter' to: [/*] -2021-07-28 15:46:49,240 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'hiddenHttpMethodFilter' to: [/*] -2021-07-28 15:46:49,240 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'httpPutFormContentFilter' to: [/*] -2021-07-28 15:46:49,240 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'requestContextFilter' to: [/*] -2021-07-28 15:46:49,240 INFO [localhost-startStop-1] o.s.b.w.s.FilterRegistrationBean [AbstractFilterRegistrationBean.java : 245] Mapping filter: 'shiroFilter' to: [/*] -2021-07-28 15:46:49,627 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/test],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.test() -2021-07-28 15:46:49,630 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/login],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.LoginController.login(com.bupt.springboot.dto.LoginDTO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:46:49,631 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.register(com.bupt.springboot.entity.User,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:46:49,631 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/register/usernameIsExisted],methods=[POST],produces=[application/json;charset=utf-8]}" onto public com.bupt.springboot.result.RestResponse com.bupt.springboot.controller.RegisterController.usernameIsExisted(java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:46:49,631 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/upload],methods=[POST]}" onto public java.lang.String com.bupt.springboot.controller.UploadController.upload(org.springframework.web.multipart.MultipartFile) -2021-07-28 15:46:49,642 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/security]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.securityConfiguration() -2021-07-28 15:46:49,642 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources]}" onto public org.springframework.http.ResponseEntity> springfox.documentation.swagger.web.ApiResourceController.swaggerResources() -2021-07-28 15:46:49,643 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/swagger-resources/configuration/ui]}" onto public org.springframework.http.ResponseEntity springfox.documentation.swagger.web.ApiResourceController.uiConfiguration() -2021-07-28 15:46:49,645 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest) -2021-07-28 15:46:49,645 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerMapping [AbstractHandlerMethodMapping.java : 547] Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) -2021-07-28 15:46:49,759 INFO [main] s.d.s.w.PropertySourcedRequestMappingHandlerMapping [PropertySourcedRequestMappingHandlerMapping.java : 69] Mapped URL path [/v2/api-docs] onto method [public org.springframework.http.ResponseEntity springfox.documentation.swagger2.web.Swagger2Controller.getDocumentation(java.lang.String,javax.servlet.http.HttpServletRequest)] -2021-07-28 15:46:49,815 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:46:49,949 INFO [main] o.s.w.s.m.m.a.RequestMappingHandlerAdapter [RequestMappingHandlerAdapter.java : 574] Looking for @ControllerAdvice: org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext@7530ad9c: startup date [Wed Jul 28 15:46:47 CST 2021]; root of context hierarchy -2021-07-28 15:46:49,991 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:46:49,992 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:46:49,992 INFO [main] o.s.w.s.h.SimpleUrlHandlerMapping [AbstractUrlHandlerMapping.java : 373] Mapped URL path [/files/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] -2021-07-28 15:46:50,005 INFO [main] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver [ExceptionHandlerExceptionResolver.java : 288] Detected @ExceptionHandler methods in baseControllerExceptionHandler -2021-07-28 15:46:50,028 INFO [main] o.s.b.a.w.s.WelcomePageHandlerMapping [WelcomePageHandlerMapping.java : 56] Adding welcome page: class path resource [static/index.html] -2021-07-28 15:46:50,235 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 433] Registering beans for JMX exposure on startup -2021-07-28 15:46:50,236 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 895] Bean with name 'dataSource' has been autodetected for JMX exposure -2021-07-28 15:46:50,240 INFO [main] o.s.j.e.a.AnnotationMBeanExporter [MBeanExporter.java : 668] Located MBean 'dataSource': registering with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource] -2021-07-28 15:46:50,243 INFO [main] o.s.c.s.DefaultLifecycleProcessor [DefaultLifecycleProcessor.java : 351] Starting beans in phase 2147483647 -2021-07-28 15:46:50,243 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 160] Context refreshed -2021-07-28 15:46:50,254 INFO [main] s.d.s.w.p.DocumentationPluginsBootstrapper [DocumentationPluginsBootstrapper.java : 163] Found 1 custom documentation plugin(s) -2021-07-28 15:46:50,272 INFO [main] s.d.s.w.s.ApiListingReferenceScanner [ApiListingReferenceScanner.java : 41] Scanning for api listing references -2021-07-28 15:46:50,366 INFO [main] o.a.coyote.http11.Http11NioProtocol [DirectJDKLog.java : 180] Starting ProtocolHandler ["http-nio-8083"] -2021-07-28 15:46:50,372 INFO [main] o.a.tomcat.util.net.NioSelectorPool [DirectJDKLog.java : 180] Using a shared selector for servlet write/read -2021-07-28 15:46:50,380 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer [TomcatWebServer.java : 206] Tomcat started on port(s): 8083 (http) with context path '' -2021-07-28 15:46:50,383 INFO [main] com.bupt.springboot.Application [StartupInfoLogger.java : 59] Started Application in 3.396 seconds (JVM running for 4.059) -2021-07-28 15:46:53,611 INFO [http-nio-8083-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/] [DirectJDKLog.java : 180] Initializing Spring FrameworkServlet 'dispatcherServlet' -2021-07-28 15:46:53,613 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 494] FrameworkServlet 'dispatcherServlet': initialization started -2021-07-28 15:46:53,626 INFO [http-nio-8083-exec-1] o.s.web.servlet.DispatcherServlet [FrameworkServlet.java : 509] FrameworkServlet 'dispatcherServlet': initialization completed in 13 ms diff --git a/log/logback_info.log.2021-07-19-0.zip b/log/logback_info.log.2021-07-19-0.zip deleted file mode 100644 index 87f785ba0a2699d88057ff55729147d3f8f97534..0000000000000000000000000000000000000000 Binary files a/log/logback_info.log.2021-07-19-0.zip and /dev/null differ diff --git a/log/logback_info.log.2021-07-25-0.zip b/log/logback_info.log.2021-07-25-0.zip deleted file mode 100644 index 40ce3c459fe01fd3cf3cd07cb9a2c06f83025b17..0000000000000000000000000000000000000000 Binary files a/log/logback_info.log.2021-07-25-0.zip and /dev/null differ diff --git a/log/logback_info.log.2021-07-26-0.zip b/log/logback_info.log.2021-07-26-0.zip deleted file mode 100644 index c0d088f41f6989739d66134f2faf5024f49f6750..0000000000000000000000000000000000000000 Binary files a/log/logback_info.log.2021-07-26-0.zip and /dev/null differ diff --git a/log/logback_info.log.2021-07-27-0.zip b/log/logback_info.log.2021-07-27-0.zip deleted file mode 100644 index 11be54f73be7978b4379a1b2ec48db0cb0a0ffcc..0000000000000000000000000000000000000000 Binary files a/log/logback_info.log.2021-07-27-0.zip and /dev/null differ diff --git a/log/logback_warn.log b/log/logback_warn.log deleted file mode 100644 index 8413c9cf44eac9d58338006d419119b21a5e7c8f..0000000000000000000000000000000000000000 --- a/log/logback_warn.log +++ /dev/null @@ -1,50 +0,0 @@ -2021-07-28 00:03:16,312 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:03:16,313 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:03:16,314 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 00:03:17,132 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 00:03:52,043 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:03:52,044 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:03:52,045 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 00:03:53,231 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 00:05:12,919 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1m19s481ms). -2021-07-28 00:14:22,930 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=9m10s12ms). -2021-07-28 00:14:29,752 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:14:29,752 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 00:14:29,753 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 00:14:30,406 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 01:10:13,328 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=34m4s474ms). -2021-07-28 01:55:40,696 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=44m57s258ms). -2021-07-28 03:01:36,621 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h5m25s915ms). -2021-07-28 05:02:06,353 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=2h29s734ms). -2021-07-28 06:49:33,583 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h46m56s895ms). -2021-07-28 08:35:23,351 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=1h45m19s777ms). -2021-07-28 08:57:16,115 WARN [HikariPool-1 housekeeper] com.zaxxer.hikari.pool.HikariPool [HikariPool.java : 758] HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=21m52s623ms). -2021-07-28 09:06:37,330 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 09:06:37,330 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 09:06:37,330 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 09:06:38,038 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 09:41:55,097 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 09:41:55,099 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 09:41:55,100 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 09:41:55,711 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 15:26:30,694 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:26:30,694 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:26:30,694 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 15:26:31,145 WARN [main] c.z.hikari.util.DriverDataSource [DriverDataSource.java : 68] Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation. -2021-07-28 15:26:36,249 WARN [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 558] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. -2021-07-28 15:32:04,625 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:32:04,625 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:32:04,626 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 15:32:10,148 WARN [main] o.s.b.w.s.c.AnnotationConfigServletWebServerApplicationContext [AbstractApplicationContext.java : 558] Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'methodValidationPostProcessor' defined in class path resource [org/springframework/boot/autoconfigure/validation/ValidationAutoConfiguration.class]: Unsatisfied dependency expressed through method 'methodValidationPostProcessor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroFilter' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'factory' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [com/bupt/springboot/shiro/ShiroConfig.class]: Unsatisfied dependency expressed through method 'getManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userRealm': Unsatisfied dependency expressed through field 'userMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userMapper' defined in file [E:\data\Git_Data\privacy_project\SpringBoot_login_demo\target\classes\com\bupt\springboot\mapper\UserMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: GlobalConfigUtils setMetaData Fail ! Cause:java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. -2021-07-28 15:33:06,306 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:33:06,306 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:33:06,307 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 15:36:21,475 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:36:21,475 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:36:21,476 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 15:43:33,257 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:43:33,257 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:43:33,257 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. -2021-07-28 15:46:47,767 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'logMapper' and 'com.bupt.springboot.mapper.LogMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:46:47,768 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] Skipping MapperFactoryBean with name 'userMapper' and 'com.bupt.springboot.mapper.UserMapper' mapperInterface. Bean already defined with the same name! -2021-07-28 15:46:47,768 WARN [main] o.m.s.mapper.ClassPathMapperScanner [Logger.java : 44] No MyBatis mapper was found in '[com.bupt.springboot.mapper]' package. Please check your configuration. diff --git a/log/logback_warn.log.2021-07-19-0.zip b/log/logback_warn.log.2021-07-19-0.zip deleted file mode 100644 index 470b23c31c02ebaa3887ac7348b5c455d645a098..0000000000000000000000000000000000000000 Binary files a/log/logback_warn.log.2021-07-19-0.zip and /dev/null differ diff --git a/log/logback_warn.log.2021-07-25-0.zip b/log/logback_warn.log.2021-07-25-0.zip deleted file mode 100644 index 6db4662a8b72c7742463a0b24132e03f38b0bd1a..0000000000000000000000000000000000000000 Binary files a/log/logback_warn.log.2021-07-25-0.zip and /dev/null differ diff --git a/log/logback_warn.log.2021-07-26-0.zip b/log/logback_warn.log.2021-07-26-0.zip deleted file mode 100644 index d1fb1ce8a89c0c983622a86398793ee9c4c15ceb..0000000000000000000000000000000000000000 Binary files a/log/logback_warn.log.2021-07-26-0.zip and /dev/null differ diff --git a/log/logback_warn.log.2021-07-27-0.zip b/log/logback_warn.log.2021-07-27-0.zip deleted file mode 100644 index cc6712f6481e2975940e81f283618b34916d2eb3..0000000000000000000000000000000000000000 Binary files a/log/logback_warn.log.2021-07-27-0.zip and /dev/null differ diff --git a/springboot-demo.iml b/springboot-demo.iml deleted file mode 100644 index f276a547d96be9287e57ab47cf4899315661c1f4..0000000000000000000000000000000000000000 --- a/springboot-demo.iml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/com/bupt/springboot/Application.java b/src/main/java/com/bupt/springboot/Application.java index a0031aeafd82035643a3073499883a7070314f5c..7e96e978985ef95159a495fc056c95ca2da21302 100644 --- a/src/main/java/com/bupt/springboot/Application.java +++ b/src/main/java/com/bupt/springboot/Application.java @@ -1,17 +1,17 @@ -package com.bupt.springboot; - -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@SpringBootApplication -@MapperScan("com.bupt.springboot.mapper") -@EnableSwagger2 -public class Application { - - public static void main(String[] args) { - System.out.println("启动 Spring Boot..."); - SpringApplication.run(Application.class, args); - } +package com.bupt.springboot; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@SpringBootApplication +@MapperScan("com.bupt.springboot.mapper") +@EnableSwagger2 +public class Application { + + public static void main(String[] args) { + System.out.println("启动 Spring Boot..."); + SpringApplication.run(Application.class, args); + } } \ No newline at end of file diff --git a/src/main/java/com/bupt/springboot/config/MybatisPlusConfig.java b/src/main/java/com/bupt/springboot/config/MybatisPlusConfig.java index 00d522075818325fb8c4995aabfbb836ebcf457e..0fe3d2f0a0855b76c74dbd463896d9339b6969b0 100644 --- a/src/main/java/com/bupt/springboot/config/MybatisPlusConfig.java +++ b/src/main/java/com/bupt/springboot/config/MybatisPlusConfig.java @@ -1,27 +1,27 @@ -package com.bupt.springboot.config; - -import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; -import org.mybatis.spring.annotation.MapperScan; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * MybatisPlus配置 - * - * @author lst - * @since 2019-12-17 - */ -@Configuration -@MapperScan(basePackages = {"com.bupt.springboot.mapper"})// -public class MybatisPlusConfig { - - - /** - * mybatis-plus分页插件 - */ - @Bean - public PaginationInterceptor paginationInterceptor() { - return new PaginationInterceptor(); - } - -} +package com.bupt.springboot.config; + +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * MybatisPlus配置 + * + * @author lst + * @since 2019-12-17 + */ +@Configuration +@MapperScan(basePackages = {"com.bupt.springboot.mapper"})// +public class MybatisPlusConfig { + + + /** + * mybatis-plus分页插件 + */ + @Bean + public PaginationInterceptor paginationInterceptor() { + return new PaginationInterceptor(); + } + +} diff --git a/src/main/java/com/bupt/springboot/config/RedisCacheConfig.java b/src/main/java/com/bupt/springboot/config/RedisCacheConfig.java index 05acf6923f06099f99a1b7210bba5ae9cd32cbc0..3a716e81f09760b2cbf939b6d90b6ed5d467ca1a 100644 --- a/src/main/java/com/bupt/springboot/config/RedisCacheConfig.java +++ b/src/main/java/com/bupt/springboot/config/RedisCacheConfig.java @@ -1,73 +1,73 @@ -package com.bupt.springboot.config; - - -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.cache.RedisCacheManager; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; - -/** - * 注意:RedisCacheConfig这里也可以不用继承:CachingConfigurerSupport, - * 也就是直接一个普通的Class就好了 这里主要我们之后要重新实现 - * key的生成策略,只要这里修改KeyGenerator,其它位置不用修改就生效了。 - * 普通使用普通类的方式的话,那么在使用@Cacheable的时候还需要指定KeyGenerator的名称; - * 这样编码的时候比较麻烦。 - */ -@Configuration -@EnableCaching // 启用缓存,这个注解很重要; -public class RedisCacheConfig { - - @Autowired - private RedisConnectionFactory redisConnectionFactory; - - /** - * 缓存配置初始化一个cacheManager - * @param connectionFactory - * @return - */ - @Bean - public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { - RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory).build(); - return redisCacheManager; - } - - - /** - * 防止redis入库序列化乱码的问题 - * @param redisConnectionFactory - * @return RedisTemplate - */ - @Bean - public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { - //StringBoot中自动注入的RedisTemplate为Obejct->Object类型的,我们需要重写一个 - RedisTemplate redisTemplate = new RedisTemplate<>(); - redisTemplate.setConnectionFactory(redisConnectionFactory); - - // 使用Jackson2JsonRedisSerialize 替换默认的jdk序列化 - // 存储对象k,v类型为String->Object,因此key的序列化器为StringRedisSerializer,value的序列化器为jackson2JsonRedisSerializer - - Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); - - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); - jackson2JsonRedisSerializer.setObjectMapper(objectMapper); - - // 设置value的序列化规则和 key的序列化规则 - redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); - redisTemplate.setHashKeySerializer(new StringRedisSerializer()); - redisTemplate.setHashValueSerializer(new StringRedisSerializer()); - redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.afterPropertiesSet(); - return redisTemplate; - } -} +package com.bupt.springboot.config; + + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * 注意:RedisCacheConfig这里也可以不用继承:CachingConfigurerSupport, + * 也就是直接一个普通的Class就好了 这里主要我们之后要重新实现 + * key的生成策略,只要这里修改KeyGenerator,其它位置不用修改就生效了。 + * 普通使用普通类的方式的话,那么在使用@Cacheable的时候还需要指定KeyGenerator的名称; + * 这样编码的时候比较麻烦。 + */ +@Configuration +@EnableCaching // 启用缓存,这个注解很重要; +public class RedisCacheConfig { + + @Autowired + private RedisConnectionFactory redisConnectionFactory; + + /** + * 缓存配置初始化一个cacheManager + * @param connectionFactory + * @return + */ + @Bean + public CacheManager cacheManager(RedisConnectionFactory connectionFactory) { + RedisCacheManager redisCacheManager = RedisCacheManager.builder(connectionFactory).build(); + return redisCacheManager; + } + + + /** + * 防止redis入库序列化乱码的问题 + * @param redisConnectionFactory + * @return RedisTemplate + */ + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + //StringBoot中自动注入的RedisTemplate为Obejct->Object类型的,我们需要重写一个 + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + // 使用Jackson2JsonRedisSerialize 替换默认的jdk序列化 + // 存储对象k,v类型为String->Object,因此key的序列化器为StringRedisSerializer,value的序列化器为jackson2JsonRedisSerializer + + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); + + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(objectMapper); + + // 设置value的序列化规则和 key的序列化规则 + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(new StringRedisSerializer()); + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } +} diff --git a/src/main/java/com/bupt/springboot/config/SpringBootWebMvcConfigurer.java b/src/main/java/com/bupt/springboot/config/SpringBootWebMvcConfigurer.java index 0fd0ea4260598b1e45c7460b64d39fc017c424dc..c0ac5a9b797364c5a39ac37c8fd23500f3f1589f 100644 --- a/src/main/java/com/bupt/springboot/config/SpringBootWebMvcConfigurer.java +++ b/src/main/java/com/bupt/springboot/config/SpringBootWebMvcConfigurer.java @@ -1,13 +1,13 @@ -package com.bupt.springboot.config; - -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -@Configuration -public class SpringBootWebMvcConfigurer implements WebMvcConfigurer { - public void addResourceHandlers(ResourceHandlerRegistry registry) { - //registry.addResourceHandler("/files/**").addResourceLocations("file:D:\\upload\\"); - registry.addResourceHandler("/files/**").addResourceLocations("file:/home/project/upload/"); - } -} +package com.bupt.springboot.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class SpringBootWebMvcConfigurer implements WebMvcConfigurer { + public void addResourceHandlers(ResourceHandlerRegistry registry) { + //registry.addResourceHandler("/files/**").addResourceLocations("file:D:\\upload\\"); + registry.addResourceHandler("/files/**").addResourceLocations("file:/home/project/upload/"); + } +} diff --git a/src/main/java/com/bupt/springboot/controller/LoginController.java b/src/main/java/com/bupt/springboot/controller/LoginController.java index 51265aef4fa6f36d55adf9d6e2bcbcbbe859c3fd..eb6be902e0743634b9cb6fbd34a2288c75e0ac93 100644 --- a/src/main/java/com/bupt/springboot/controller/LoginController.java +++ b/src/main/java/com/bupt/springboot/controller/LoginController.java @@ -1,43 +1,42 @@ -package com.bupt.springboot.controller; - - -import com.bupt.springboot.annotation.Weblog; -import com.bupt.springboot.dto.LoginDTO; -import com.bupt.springboot.service.LoginService; -import com.bupt.springboot.entity.User; -import com.bupt.springboot.result.RestResponse; -import com.bupt.springboot.result.ResultGenerator; -import io.swagger.annotations.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Map; - - -@RestController -@Api(tags = "登录接口") -public class LoginController { - - @Autowired - private LoginService loginService; - - @PostMapping(value = "/login", produces = "application/json; charset=utf-8") -// @ApiOperation(value = "登录授权", notes = "登录授权", code = 200, produces = "application/json") - @ApiOperation("登录授权") -// @ApiImplicitParam(name = "登录信息", dataType = "loginDTO") - public RestResponse login(@RequestBody LoginDTO loginDTO, - HttpServletRequest request, HttpServletResponse response) { - return loginService.login(loginDTO.getUsername(), loginDTO.getPassword(), request, response); - - } - - @Weblog("这是一条测试的日志") - @PostMapping(value = "/test", produces = "application/json; charset=utf-8") - @ApiOperation("测试的相关接口") - public RestResponse test() { - return ResultGenerator.genSuccessResult(); - } - -} +package com.bupt.springboot.controller; + + +import com.bupt.springboot.annotation.Weblog; +import com.bupt.springboot.dto.LoginDTO; +import com.bupt.springboot.service.LoginService; +import com.bupt.springboot.entity.User; +import com.bupt.springboot.result.RestResponse; +import com.bupt.springboot.result.ResultGenerator; +import io.swagger.annotations.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + + +@RestController +@Api(tags = "登录接口") +public class LoginController { + + @Autowired + private LoginService loginService; + + @PostMapping(value = "/login", produces = "application/json; charset=utf-8") +// @ApiOperation(value = "登录授权", notes = "登录授权", code = 200, produces = "application/json") + @ApiOperation("登录授权") +// @ApiImplicitParam(name = "登录信息", dataType = "loginDTO") + public RestResponse login(@RequestBody LoginDTO loginDTO, + HttpServletRequest request, HttpServletResponse response) { + return loginService.login(loginDTO.getUsername(), loginDTO.getPassword(), request, response); + + } + + @Weblog("这是一条测试的日志") + @PostMapping(value = "/test", produces = "application/json; charset=utf-8") + @ApiOperation("测试的相关接口") + public RestResponse test() { + return ResultGenerator.genSuccessResult(); + } + +} diff --git a/src/main/java/com/bupt/springboot/controller/UploadController.java b/src/main/java/com/bupt/springboot/controller/UploadController.java index 621af9cd7b4fcb46ec968430afd54dc1140b702a..95f488fb62fca44ce67a2257f6a0f4a9b36dfa1a 100644 --- a/src/main/java/com/bupt/springboot/controller/UploadController.java +++ b/src/main/java/com/bupt/springboot/controller/UploadController.java @@ -1,48 +1,48 @@ -package com.bupt.springboot.controller; - -import io.swagger.annotations.ApiOperation; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Random; - -@Controller -public class UploadController { - - //private final static String FILE_UPLOAD_PATH = "D:\\upload\\"; - private final static String FILE_UPLOAD_PATH = "/home/project/upload/"; - - @RequestMapping(value = "/upload", method = RequestMethod.POST) - @ResponseBody - @ApiOperation("上传文件的接口") - public String upload(@RequestParam("file") MultipartFile file) { - if (file.isEmpty()) { - return "上传失败"; - } - String fileName = file.getOriginalFilename(); - String suffixName = fileName.substring(fileName.lastIndexOf(".")); - //生成文件名称通用方法 - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); - Random r = new Random(); - StringBuilder tempName = new StringBuilder(); - tempName.append(sdf.format(new Date())).append(r.nextInt(100)).append(suffixName); - String newFileName = tempName.toString(); - try { - // 保存文件 - byte[] bytes = file.getBytes(); - Path path = Paths.get(FILE_UPLOAD_PATH + newFileName); - Files.write(path, bytes); - - } catch (IOException e) { - e.printStackTrace(); - } - return "上传成功,图片地址为:/files/" + newFileName; - } +package com.bupt.springboot.controller; + +import io.swagger.annotations.ApiOperation; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Random; + +@Controller +public class UploadController { + + //private final static String FILE_UPLOAD_PATH = "D:\\upload\\"; + private final static String FILE_UPLOAD_PATH = "/home/project/upload/"; + + @RequestMapping(value = "/upload", method = RequestMethod.POST) + @ResponseBody + @ApiOperation("上传文件的接口") + public String upload(@RequestParam("file") MultipartFile file) { + if (file.isEmpty()) { + return "上传失败"; + } + String fileName = file.getOriginalFilename(); + String suffixName = fileName.substring(fileName.lastIndexOf(".")); + //生成文件名称通用方法 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss"); + Random r = new Random(); + StringBuilder tempName = new StringBuilder(); + tempName.append(sdf.format(new Date())).append(r.nextInt(100)).append(suffixName); + String newFileName = tempName.toString(); + try { + // 保存文件 + byte[] bytes = file.getBytes(); + Path path = Paths.get(FILE_UPLOAD_PATH + newFileName); + Files.write(path, bytes); + + } catch (IOException e) { + e.printStackTrace(); + } + return "上传成功,图片地址为:/files/" + newFileName; + } } \ No newline at end of file diff --git a/src/main/java/com/bupt/springboot/entity/User.java b/src/main/java/com/bupt/springboot/entity/User.java index ede065f5ff93eeb14549e4bf8f28e0634879b149..336d7cd493a10646b140630440d1fdcf7bd203a8 100644 --- a/src/main/java/com/bupt/springboot/entity/User.java +++ b/src/main/java/com/bupt/springboot/entity/User.java @@ -1,46 +1,46 @@ -package com.bupt.springboot.entity; - - -import com.baomidou.mybatisplus.annotation.*; -import com.fasterxml.jackson.annotation.JsonFormat; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.*; - -import java.io.Serializable; -import java.util.Date; - -@Data -@AllArgsConstructor -@NoArgsConstructor -@Getter -@Setter -@TableName("tb_user") -@ApiModel -public class User implements Serializable { - private static final long serialVersionUID = 1L; - - - @TableId(type = IdType.AUTO) - private Integer id; - @ApiModelProperty(value = "用户名", dataType = "string", required = true) - private String username; - @ApiModelProperty(value = "密码", dataType = "string", required = true) - private String password; - - @ApiModelProperty(value = "创建时间", dataType = "date", required = false) - @TableField(fill = FieldFill.INSERT) - @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") - private Date createTime; - - @ApiModelProperty(value = "修改时间", dataType = "date", required = false) - @TableField(fill = FieldFill.INSERT_UPDATE) - @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") - private Date updateTime; - - //0代表超级管理员,1代表普通用户 - @ApiModelProperty(value = "用户角色", dataType = "int", required = false) - @TableField(fill = FieldFill.INSERT) - private Integer role; - -} +package com.bupt.springboot.entity; + + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.*; + +import java.io.Serializable; +import java.util.Date; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +@TableName("tb_user") +@ApiModel +public class User implements Serializable { + private static final long serialVersionUID = 1L; + + + @TableId(type = IdType.AUTO) + private Integer id; + @ApiModelProperty(value = "用户名", dataType = "string", required = true) + private String username; + @ApiModelProperty(value = "密码", dataType = "string", required = true) + private String password; + + @ApiModelProperty(value = "创建时间", dataType = "date", required = false) + @TableField(fill = FieldFill.INSERT) + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + private Date createTime; + + @ApiModelProperty(value = "修改时间", dataType = "date", required = false) + @TableField(fill = FieldFill.INSERT_UPDATE) + @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8") + private Date updateTime; + + //0代表超级管理员,1代表普通用户 + @ApiModelProperty(value = "用户角色", dataType = "int", required = false) + @TableField(fill = FieldFill.INSERT) + private Integer role; + +} diff --git a/src/main/java/com/bupt/springboot/exception/BaseControllerExceptionHandler.java b/src/main/java/com/bupt/springboot/exception/BaseControllerExceptionHandler.java index d3fdea935b91bd8cee493be516494e968449202c..2b95e27c4c6e19c66fed5c05d286ddf7f42a8cb7 100644 --- a/src/main/java/com/bupt/springboot/exception/BaseControllerExceptionHandler.java +++ b/src/main/java/com/bupt/springboot/exception/BaseControllerExceptionHandler.java @@ -1,173 +1,173 @@ -package com.bupt.springboot.exception; - -import com.bupt.springboot.result.RestResponse; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.ShiroException; -import org.apache.shiro.authz.UnauthenticatedException; -import org.apache.shiro.authz.UnauthorizedException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.http.HttpStatus; -import org.springframework.validation.FieldError; -import org.springframework.web.bind.MethodArgumentNotValidException; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.ResponseStatus; -import org.springframework.web.servlet.NoHandlerFoundException; - -import javax.servlet.http.HttpServletRequest; -import javax.validation.ConstraintViolation; -import javax.validation.ConstraintViolationException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - - -/** - * @author LST - * @version 1.0 - * @Description: 全局的的异常拦截器(拦截所有的控制器)(带有@RequestMapping注解的方法上都会拦截) - * @date 2019-12-31 16:22 - */ -@Slf4j -@ControllerAdvice -public class BaseControllerExceptionHandler { - - - /** - * 捕捉所有Shiro异常 - * - * @param e - * @return - */ - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler(ShiroException.class) - @ResponseBody - public RestResponse handle401(ShiroException e) { - log.error("无权访问==========message:{}", e.getMessage()); - return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "登录已过期", ""); - } - - /** - * 单独捕捉Shiro(UnauthorizedException)异常 - * 该异常为访问有权限管控的请求而该用户没有所需权限所抛出的异常 - * - * @param e - * @return - */ - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler(UnauthorizedException.class) - @ResponseBody - public RestResponse handle401(UnauthorizedException e) { - log.error("无权访问:当前Subject没有此请求所需权限==========message:{}", e.getMessage()); - return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问", ""); - } - - /** - * 单独捕捉Shiro(UnauthenticatedException)异常 - * 该异常为以游客身份访问有权限管控的请求无法对匿名主体进行授权,而授权失败所抛出的异常 - * - * @param e - * @return - */ - @ResponseStatus(HttpStatus.UNAUTHORIZED) - @ExceptionHandler(UnauthenticatedException.class) - @ResponseBody - public RestResponse handle401(UnauthenticatedException e) { - log.error("无权访问:当前Subject是匿名Subject,请先登录==========message:{}", e.getMessage()); - return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问", ""); - } - - /** - * 捕捉校验异常(MethodArgumentNotValidException) - * - * @return - */ - - @ExceptionHandler(MethodArgumentNotValidException.class) - @ResponseBody - public RestResponse validException(MethodArgumentNotValidException e) { - List fieldErrors = e.getBindingResult().getFieldErrors(); - String message = fieldErrors.get(0).getDefaultMessage(); - return new RestResponse(false, ServiceExceptionEnum.ARGUMENT_ERROR.getCode(), message, ""); - } - - - /** - * 捕捉404异常 - * - * @return - */ - @ResponseStatus(HttpStatus.NOT_FOUND) - @ExceptionHandler(NoHandlerFoundException.class) - @ResponseBody - public RestResponse handle(NoHandlerFoundException e) { - log.error("404异常==========message:{}", e.getMessage()); - return new RestResponse(false, HttpStatus.NOT_FOUND.value(), e.getMessage(), ""); - } - - /** - * 系统全局异常 - * - * @param req - * @param e - * @return - */ - @ExceptionHandler(value = Exception.class) - @ResponseBody - public RestResponse defaultErrorHandler(HttpServletRequest req, Exception e) { - RestResponse response; - log.error("occur bie error-->>errorUrl:{}----->>>errorMessage:{}", req.getRequestURL(), e); - //数据库异常 - if (e instanceof DataIntegrityViolationException) { - response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), ServiceExceptionEnum.SERVER_ERROR.getMessage(), null); - return response; - } - String msg = "发生错误请联系管理员"; - if (StringUtils.isBlank(e.getMessage())) { - response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), msg, null); - } else { - response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), e.getMessage(), null); - } - //运行时异常 - return response; - } - - /** - * 自定义异常 - * - * @param req - * @param e - * @return - */ - @ResponseBody - @ExceptionHandler(SXException.class) - public RestResponse handle(HttpServletRequest req, SXException e) { - log.error("自定义异常==========message:{},errorUrl:{}", e.getMessage(), req.getRequestURL()); - return new RestResponse(false, e.getCode(), e.getMessage(), ""); - } - - /** - * 参数校验异常 - * - * @param e - * @return - */ - @ResponseBody - @ExceptionHandler(ConstraintViolationException.class) - public RestResponse constraintViolationExceptionHandler(ConstraintViolationException e) { - Set> constraintViolations = e.getConstraintViolations(); - Iterator> iterator = constraintViolations.iterator(); - List msgList = new ArrayList<>(); - while (iterator.hasNext()) { - ConstraintViolation cvl = iterator.next(); - msgList.add(cvl.getMessageTemplate()); - } - return new RestResponse(false, ServiceExceptionEnum.ERROR_IN_PARAM.getCode(), - ServiceExceptionEnum.ERROR_IN_PARAM.getMessage(), msgList); - } -} +package com.bupt.springboot.exception; + +import com.bupt.springboot.result.RestResponse; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.ShiroException; +import org.apache.shiro.authz.UnauthenticatedException; +import org.apache.shiro.authz.UnauthorizedException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpStatus; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.servlet.NoHandlerFoundException; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + + +/** + * @author LST + * @version 1.0 + * @Description: 全局的的异常拦截器(拦截所有的控制器)(带有@RequestMapping注解的方法上都会拦截) + * @date 2019-12-31 16:22 + */ +@Slf4j +@ControllerAdvice +public class BaseControllerExceptionHandler { + + + /** + * 捕捉所有Shiro异常 + * + * @param e + * @return + */ + @ResponseStatus(HttpStatus.UNAUTHORIZED) + @ExceptionHandler(ShiroException.class) + @ResponseBody + public RestResponse handle401(ShiroException e) { + log.error("无权访问==========message:{}", e.getMessage()); + return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "登录已过期", ""); + } + + /** + * 单独捕捉Shiro(UnauthorizedException)异常 + * 该异常为访问有权限管控的请求而该用户没有所需权限所抛出的异常 + * + * @param e + * @return + */ + @ResponseStatus(HttpStatus.UNAUTHORIZED) + @ExceptionHandler(UnauthorizedException.class) + @ResponseBody + public RestResponse handle401(UnauthorizedException e) { + log.error("无权访问:当前Subject没有此请求所需权限==========message:{}", e.getMessage()); + return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问", ""); + } + + /** + * 单独捕捉Shiro(UnauthenticatedException)异常 + * 该异常为以游客身份访问有权限管控的请求无法对匿名主体进行授权,而授权失败所抛出的异常 + * + * @param e + * @return + */ + @ResponseStatus(HttpStatus.UNAUTHORIZED) + @ExceptionHandler(UnauthenticatedException.class) + @ResponseBody + public RestResponse handle401(UnauthenticatedException e) { + log.error("无权访问:当前Subject是匿名Subject,请先登录==========message:{}", e.getMessage()); + return new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问", ""); + } + + /** + * 捕捉校验异常(MethodArgumentNotValidException) + * + * @return + */ + + @ExceptionHandler(MethodArgumentNotValidException.class) + @ResponseBody + public RestResponse validException(MethodArgumentNotValidException e) { + List fieldErrors = e.getBindingResult().getFieldErrors(); + String message = fieldErrors.get(0).getDefaultMessage(); + return new RestResponse(false, ServiceExceptionEnum.ARGUMENT_ERROR.getCode(), message, ""); + } + + + /** + * 捕捉404异常 + * + * @return + */ + @ResponseStatus(HttpStatus.NOT_FOUND) + @ExceptionHandler(NoHandlerFoundException.class) + @ResponseBody + public RestResponse handle(NoHandlerFoundException e) { + log.error("404异常==========message:{}", e.getMessage()); + return new RestResponse(false, HttpStatus.NOT_FOUND.value(), e.getMessage(), ""); + } + + /** + * 系统全局异常 + * + * @param req + * @param e + * @return + */ + @ExceptionHandler(value = Exception.class) + @ResponseBody + public RestResponse defaultErrorHandler(HttpServletRequest req, Exception e) { + RestResponse response; + log.error("occur bie error-->>errorUrl:{}----->>>errorMessage:{}", req.getRequestURL(), e); + //数据库异常 + if (e instanceof DataIntegrityViolationException) { + response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), ServiceExceptionEnum.SERVER_ERROR.getMessage(), null); + return response; + } + String msg = "发生错误请联系管理员"; + if (StringUtils.isBlank(e.getMessage())) { + response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), msg, null); + } else { + response = new RestResponse<>(false, ServiceExceptionEnum.SERVER_ERROR.getCode(), e.getMessage(), null); + } + //运行时异常 + return response; + } + + /** + * 自定义异常 + * + * @param req + * @param e + * @return + */ + @ResponseBody + @ExceptionHandler(SXException.class) + public RestResponse handle(HttpServletRequest req, SXException e) { + log.error("自定义异常==========message:{},errorUrl:{}", e.getMessage(), req.getRequestURL()); + return new RestResponse(false, e.getCode(), e.getMessage(), ""); + } + + /** + * 参数校验异常 + * + * @param e + * @return + */ + @ResponseBody + @ExceptionHandler(ConstraintViolationException.class) + public RestResponse constraintViolationExceptionHandler(ConstraintViolationException e) { + Set> constraintViolations = e.getConstraintViolations(); + Iterator> iterator = constraintViolations.iterator(); + List msgList = new ArrayList<>(); + while (iterator.hasNext()) { + ConstraintViolation cvl = iterator.next(); + msgList.add(cvl.getMessageTemplate()); + } + return new RestResponse(false, ServiceExceptionEnum.ERROR_IN_PARAM.getCode(), + ServiceExceptionEnum.ERROR_IN_PARAM.getMessage(), msgList); + } +} diff --git a/src/main/java/com/bupt/springboot/exception/SXException.java b/src/main/java/com/bupt/springboot/exception/SXException.java index 8510d34db68bb35af474ca5e76de093f2bf4af8c..39e2b96ec3a065fb7a24bd28df66feaff28392e0 100644 --- a/src/main/java/com/bupt/springboot/exception/SXException.java +++ b/src/main/java/com/bupt/springboot/exception/SXException.java @@ -1,42 +1,42 @@ -package com.bupt.springboot.exception; - -/** - * 封装的异常 - */ -public class SXException extends RuntimeException { - - private int exceptionCode; - - private String message; - - public SXException(ServiceExceptionEnum serviceExceptionEnum) { - this.exceptionCode = serviceExceptionEnum.getCode(); - this.message = serviceExceptionEnum.getMessage(); - } - - public SXException(int exceptionCode, String message) { - this.exceptionCode = exceptionCode; - this.message = message; - } - - public SXException(String message) { - this.message = message; - } - - public Integer getCode() { - return exceptionCode; - } - - public void setCode(Integer code) { - this.exceptionCode = code; - } - - @Override - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } -} +package com.bupt.springboot.exception; + +/** + * 封装的异常 + */ +public class SXException extends RuntimeException { + + private int exceptionCode; + + private String message; + + public SXException(ServiceExceptionEnum serviceExceptionEnum) { + this.exceptionCode = serviceExceptionEnum.getCode(); + this.message = serviceExceptionEnum.getMessage(); + } + + public SXException(int exceptionCode, String message) { + this.exceptionCode = exceptionCode; + this.message = message; + } + + public SXException(String message) { + this.message = message; + } + + public Integer getCode() { + return exceptionCode; + } + + public void setCode(Integer code) { + this.exceptionCode = code; + } + + @Override + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/src/main/java/com/bupt/springboot/result/RestResponse.java b/src/main/java/com/bupt/springboot/result/RestResponse.java index eff08eb4e436d9d59944f4e12d3082cfdabf2d79..8ad15d8c89e5db5f9b36d6b1c3e22c650b235a9c 100644 --- a/src/main/java/com/bupt/springboot/result/RestResponse.java +++ b/src/main/java/com/bupt/springboot/result/RestResponse.java @@ -1,62 +1,62 @@ -package com.bupt.springboot.result; - - -import com.alibaba.fastjson.JSONObject; -import com.bupt.springboot.exception.SXException; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * rest 返回值 - * - * @param - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -public class RestResponse { - private boolean success; - private int statusCode; //code全平台唯一 - private String msg = ""; - private T data; - - - public RestResponse(T data) { - if (data instanceof SXException) { - this.success = false; - this.msg = ((SXException) data).getMessage(); - this.statusCode = ((SXException) data).getCode(); - } else { - this.success = true; - this.data = data; - this.statusCode = 200; - } - } - -// public RestResponse(int statusCode, String msg) { -// this(statusCode, msg, null); -// } - - -// public RestResponse(int statusCode, String msg, T data) { -// super(); -// this.statusCode = statusCode; -// this.msg = msg; -// this.data = data; -// } - -// public RestResponse(int statusCode, String msg, T result, T data) { -// super(); -// this.statusCode = statusCode; -// this.msg = msg; -// this.data = data; -// } - - @Override - public String toString() { - return "RestResponse [success=" + success + ", statusCode=" + statusCode + ", msg=" + msg + ", data=" + JSONObject.toJSONString(data) + "]"; - } - - -} +package com.bupt.springboot.result; + + +import com.alibaba.fastjson.JSONObject; +import com.bupt.springboot.exception.SXException; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * rest 返回值 + * + * @param + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class RestResponse { + private boolean success; + private int statusCode; //code全平台唯一 + private String msg = ""; + private T data; + + + public RestResponse(T data) { + if (data instanceof SXException) { + this.success = false; + this.msg = ((SXException) data).getMessage(); + this.statusCode = ((SXException) data).getCode(); + } else { + this.success = true; + this.data = data; + this.statusCode = 200; + } + } + +// public RestResponse(int statusCode, String msg) { +// this(statusCode, msg, null); +// } + + +// public RestResponse(int statusCode, String msg, T data) { +// super(); +// this.statusCode = statusCode; +// this.msg = msg; +// this.data = data; +// } + +// public RestResponse(int statusCode, String msg, T result, T data) { +// super(); +// this.statusCode = statusCode; +// this.msg = msg; +// this.data = data; +// } + + @Override + public String toString() { + return "RestResponse [success=" + success + ", statusCode=" + statusCode + ", msg=" + msg + ", data=" + JSONObject.toJSONString(data) + "]"; + } + + +} diff --git a/src/main/java/com/bupt/springboot/result/ResultGenerator.java b/src/main/java/com/bupt/springboot/result/ResultGenerator.java index f1594ea458ee534cf70f87e48d4487320724e2e0..12c28825afca8a2c395b60a914721bcd8dfbb696 100644 --- a/src/main/java/com/bupt/springboot/result/ResultGenerator.java +++ b/src/main/java/com/bupt/springboot/result/ResultGenerator.java @@ -1,69 +1,69 @@ -package com.bupt.springboot.result; - - -import com.bupt.springboot.exception.ServiceExceptionEnum; - -/** - * 响应结果生成工具 - */ -@SuppressWarnings("all") -public class ResultGenerator { - - //默认成功返回msg - private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS"; - //默认成功返回code - private static final Integer DEFAULT_SUCCESS_CODE = 200; - //默认失败返回code - private static final Integer DEFAULT_FAIL_CODE = 999999; - - /** - * 成功,无返回值 - * - * @return - */ - public static RestResponse genSuccessResult() { - return new RestResponse(true, DEFAULT_SUCCESS_CODE, DEFAULT_SUCCESS_MESSAGE, null); - } - - /** - * 成功,有返回数据 - * - * @param data - * @return - */ - public static RestResponse genSuccessResult(Object data) { - return new RestResponse(true, DEFAULT_SUCCESS_CODE, DEFAULT_SUCCESS_MESSAGE, data); - - } - - /** - * 失败,返回默认code - * - * @param message - * @return - */ - public static RestResponse genFailResult(String message) { - return new RestResponse(false, DEFAULT_FAIL_CODE, message, null); - } - - /** - * 失败,返回自定义code - * - * @param code - * @param message - * @return - */ - public static RestResponse genFailResult(int code, String message) { - return new RestResponse(false, code, message, null); - } - - /** - * 失败,返回自定义code - * - * @param exceptionEnum - * @return - */ - public static RestResponse genFailResult(ServiceExceptionEnum exceptionEnum) { - return new RestResponse(false, exceptionEnum.getCode(), exceptionEnum.getMessage(), null); - } -} +package com.bupt.springboot.result; + + +import com.bupt.springboot.exception.ServiceExceptionEnum; + +/** + * 响应结果生成工具 + */ +@SuppressWarnings("all") +public class ResultGenerator { + + //默认成功返回msg + private static final String DEFAULT_SUCCESS_MESSAGE = "SUCCESS"; + //默认成功返回code + private static final Integer DEFAULT_SUCCESS_CODE = 200; + //默认失败返回code + private static final Integer DEFAULT_FAIL_CODE = 999999; + + /** + * 成功,无返回值 + * + * @return + */ + public static RestResponse genSuccessResult() { + return new RestResponse(true, DEFAULT_SUCCESS_CODE, DEFAULT_SUCCESS_MESSAGE, null); + } + + /** + * 成功,有返回数据 + * + * @param data + * @return + */ + public static RestResponse genSuccessResult(Object data) { + return new RestResponse(true, DEFAULT_SUCCESS_CODE, DEFAULT_SUCCESS_MESSAGE, data); + + } + + /** + * 失败,返回默认code + * + * @param message + * @return + */ + public static RestResponse genFailResult(String message) { + return new RestResponse(false, DEFAULT_FAIL_CODE, message, null); + } + + /** + * 失败,返回自定义code + * + * @param code + * @param message + * @return + */ + public static RestResponse genFailResult(int code, String message) { + return new RestResponse(false, code, message, null); + } + + /** + * 失败,返回自定义code + * + * @param exceptionEnum + * @return + */ + public static RestResponse genFailResult(ServiceExceptionEnum exceptionEnum) { + return new RestResponse(false, exceptionEnum.getCode(), exceptionEnum.getMessage(), null); + } +} diff --git a/src/main/java/com/bupt/springboot/service/LoginService.java b/src/main/java/com/bupt/springboot/service/LoginService.java index c87929de3501ef51c933319767a37656567fd7de..cc068a3805ae55ccaab8b015dcb8f54077a317b2 100644 --- a/src/main/java/com/bupt/springboot/service/LoginService.java +++ b/src/main/java/com/bupt/springboot/service/LoginService.java @@ -1,28 +1,28 @@ -package com.bupt.springboot.service; - - -import com.bupt.springboot.entity.User; -import com.bupt.springboot.result.RestResponse; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.Map; - - -/** - * 登录模块设计 - */ -public interface LoginService { - - /** - * 执行登录操作 - * - * @param loginName 用户名 - * @param passWord 密码 - * @param httpServletRequest 请求 - * @param httpServletResponse 响应 - * @return 统一封装的result - */ - RestResponse login(String loginName, String passWord, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); - -} +package com.bupt.springboot.service; + + +import com.bupt.springboot.entity.User; +import com.bupt.springboot.result.RestResponse; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Map; + + +/** + * 登录模块设计 + */ +public interface LoginService { + + /** + * 执行登录操作 + * + * @param loginName 用户名 + * @param passWord 密码 + * @param httpServletRequest 请求 + * @param httpServletResponse 响应 + * @return 统一封装的result + */ + RestResponse login(String loginName, String passWord, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse); + +} diff --git a/src/main/java/com/bupt/springboot/service/SpringContextHolder.java b/src/main/java/com/bupt/springboot/service/SpringContextHolder.java index 5181a3ad64350ff07198d53e1205e2b25d58b260..b3c76f177f89d9bea62cfb73cacb999f7442b35c 100644 --- a/src/main/java/com/bupt/springboot/service/SpringContextHolder.java +++ b/src/main/java/com/bupt/springboot/service/SpringContextHolder.java @@ -1,96 +1,96 @@ -package com.bupt.springboot.service; - -import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; -import org.apache.commons.lang3.Validate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.DisposableBean; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; - -/** - * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext. - * - * @author lst - * @date 2019-12-21 16:52 - */ -@Service -@Lazy(false) -public class SpringContextHolder implements ApplicationContextAware, DisposableBean { - - private static ApplicationContext applicationContext = null; - - private static Logger logger = LoggerFactory.getLogger(SpringContextHolder.class); - - /** - * 取得存储在静态变量中的ApplicationContext. - */ - public static ApplicationContext getApplicationContext() { - assertContextInjected(); - return applicationContext; - } - - /** - * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. - */ - @SuppressWarnings("unchecked") - public static T getBean(String name) { - assertContextInjected(); - return (T) applicationContext.getBean(name); - } - - /** - * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. - */ - public static T getBean(Class requiredType) { - assertContextInjected(); - return applicationContext.getBean(requiredType); - } - - /** - * 清除SpringContextHolder中的ApplicationContext为Null. - */ - public static void clearHolder() { - if (logger.isDebugEnabled()) { - logger.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext); - } - applicationContext = null; - } - - /** - * 实现ApplicationContextAware接口, 注入Context到静态变量中. - */ - @Override - public void setApplicationContext(ApplicationContext applicationContext) { - SpringContextHolder.applicationContext = applicationContext; - } - - /** - * 实现DisposableBean接口, 在Context关闭时清理静态变量. - */ - @Override - public void destroy() throws Exception { - SpringContextHolder.clearHolder(); - } - - /** - * 检查ApplicationContext不为空. - */ - private static void assertContextInjected() { - Validate.validState(applicationContext != null, "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder."); - } - - /** - * // 获取当前环境参数 exp: dev,prod,test - * @return - */ - public static String getActiveProfile() { - String[] profiles = SpringContextHolder.getApplicationContext().getEnvironment().getActiveProfiles(); - if (!ArrayUtils.isEmpty(profiles)) { - return profiles[0]; - } - return ""; - } +package com.bupt.springboot.service; + +import com.baomidou.mybatisplus.core.toolkit.ArrayUtils; +import org.apache.commons.lang3.Validate; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; + +/** + * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候取出ApplicaitonContext. + * + * @author lst + * @date 2019-12-21 16:52 + */ +@Service +@Lazy(false) +public class SpringContextHolder implements ApplicationContextAware, DisposableBean { + + private static ApplicationContext applicationContext = null; + + private static Logger logger = LoggerFactory.getLogger(SpringContextHolder.class); + + /** + * 取得存储在静态变量中的ApplicationContext. + */ + public static ApplicationContext getApplicationContext() { + assertContextInjected(); + return applicationContext; + } + + /** + * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + @SuppressWarnings("unchecked") + public static T getBean(String name) { + assertContextInjected(); + return (T) applicationContext.getBean(name); + } + + /** + * 从静态变量applicationContext中取得Bean, 自动转型为所赋值对象的类型. + */ + public static T getBean(Class requiredType) { + assertContextInjected(); + return applicationContext.getBean(requiredType); + } + + /** + * 清除SpringContextHolder中的ApplicationContext为Null. + */ + public static void clearHolder() { + if (logger.isDebugEnabled()) { + logger.debug("清除SpringContextHolder中的ApplicationContext:" + applicationContext); + } + applicationContext = null; + } + + /** + * 实现ApplicationContextAware接口, 注入Context到静态变量中. + */ + @Override + public void setApplicationContext(ApplicationContext applicationContext) { + SpringContextHolder.applicationContext = applicationContext; + } + + /** + * 实现DisposableBean接口, 在Context关闭时清理静态变量. + */ + @Override + public void destroy() throws Exception { + SpringContextHolder.clearHolder(); + } + + /** + * 检查ApplicationContext不为空. + */ + private static void assertContextInjected() { + Validate.validState(applicationContext != null, "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder."); + } + + /** + * // 获取当前环境参数 exp: dev,prod,test + * @return + */ + public static String getActiveProfile() { + String[] profiles = SpringContextHolder.getApplicationContext().getEnvironment().getActiveProfiles(); + if (!ArrayUtils.isEmpty(profiles)) { + return profiles[0]; + } + return ""; + } } \ No newline at end of file diff --git a/src/main/java/com/bupt/springboot/service/impl/LoginServiceImpl.java b/src/main/java/com/bupt/springboot/service/impl/LoginServiceImpl.java index 55d3f4c4f2453d5c1934579d3a8ccd4950fdd6ca..896aa09f1933aed30b31b124aa167153741c4248 100644 --- a/src/main/java/com/bupt/springboot/service/impl/LoginServiceImpl.java +++ b/src/main/java/com/bupt/springboot/service/impl/LoginServiceImpl.java @@ -1,94 +1,94 @@ -package com.bupt.springboot.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.bupt.springboot.common.Constants; -import com.bupt.springboot.mapper.UserMapper; -import com.bupt.springboot.entity.User; -import com.bupt.springboot.exception.ServiceExceptionEnum; -import com.bupt.springboot.result.RestResponse; -import com.bupt.springboot.result.ResultGenerator; -import com.bupt.springboot.service.LoginService; -import com.bupt.springboot.utils.AesCipherUtil; -import com.bupt.springboot.utils.JwtUtil; -import com.bupt.springboot.utils.RedisUtil; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpStatus; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.HashMap; -import java.util.Map; - -/** - * @author LST - * @version 1.0 - * @Description: 登录 - * @date 2019-12-31 16:22 - */ -@Service -public class LoginServiceImpl implements LoginService { - - @Autowired - private UserMapper userMapper; - - @Autowired - private RedisUtil redisUtil; - - /** - * RefreshToken过期时间 - */ - @Value("${shiro.refreshTokenExpireTime}") - private long refreshTokenExpireTime; - - - /** - * 登录 - * - * @param loginName 登录名 - * @param passWord 密码 - * @param httpServletResponse - * @return - */ - @Override - public RestResponse login(String loginName, String passWord, HttpServletRequest request, HttpServletResponse httpServletResponse) { - // 查询数据库中的帐号信息 - QueryWrapper wrapper = new QueryWrapper(); - wrapper.eq("username", loginName); - User user = userMapper.selectOne(wrapper); - if (user == null) { - return ResultGenerator.genFailResult(ServiceExceptionEnum.USER_NOT_EXIST); - } - // 密码进行AES解密 - String password = AesCipherUtil.enCrypto(loginName + passWord); - // 因为密码加密是以帐号+密码的形式进行加密的,所以解密后的对比是帐号+密码(loginFlag=1 免密登录) - if (password.equals(user.getPassword())) { - // 清除可能存在的Shiro权限信息缓存 - if (redisUtil.exists(Constants.PREFIX_SHIRO_CACHE + user.getId())) { - redisUtil.deleteValue(Constants.PREFIX_SHIRO_CACHE + user.getId()); - } - - // 设置RefreshToken,时间戳为当前时间戳,直接设置即可(不用先删后设,会覆盖已有的RefreshToken) - String currentTimeMillis = String.valueOf(System.currentTimeMillis()); - redisUtil.setValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + user.getId(), currentTimeMillis, refreshTokenExpireTime); - - //把用户设置到redis中,不需要重复查询 - redisUtil.setValue(Constants.PREFIX_SHIRO_USER + user.getId(), user, refreshTokenExpireTime); - - // 从Header中Authorization返回AccessToken,时间戳为当前时间戳 - String token = JwtUtil.sign(String.valueOf(user.getId()), currentTimeMillis); - httpServletResponse.setHeader("Authorization", token); - httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); - User result = userMapper.selectOne(wrapper); - return new RestResponse(true, HttpStatus.OK.value(), "登录成功", result); - } else { - return ResultGenerator.genFailResult(ServiceExceptionEnum.USER_PASSWORD_ERROR); - } - } - - - - -} +package com.bupt.springboot.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bupt.springboot.common.Constants; +import com.bupt.springboot.mapper.UserMapper; +import com.bupt.springboot.entity.User; +import com.bupt.springboot.exception.ServiceExceptionEnum; +import com.bupt.springboot.result.RestResponse; +import com.bupt.springboot.result.ResultGenerator; +import com.bupt.springboot.service.LoginService; +import com.bupt.springboot.utils.AesCipherUtil; +import com.bupt.springboot.utils.JwtUtil; +import com.bupt.springboot.utils.RedisUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; +import java.util.Map; + +/** + * @author LST + * @version 1.0 + * @Description: 登录 + * @date 2019-12-31 16:22 + */ +@Service +public class LoginServiceImpl implements LoginService { + + @Autowired + private UserMapper userMapper; + + @Autowired + private RedisUtil redisUtil; + + /** + * RefreshToken过期时间 + */ + @Value("${shiro.refreshTokenExpireTime}") + private long refreshTokenExpireTime; + + + /** + * 登录 + * + * @param loginName 登录名 + * @param passWord 密码 + * @param httpServletResponse + * @return + */ + @Override + public RestResponse login(String loginName, String passWord, HttpServletRequest request, HttpServletResponse httpServletResponse) { + // 查询数据库中的帐号信息 + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("username", loginName); + User user = userMapper.selectOne(wrapper); + if (user == null) { + return ResultGenerator.genFailResult(ServiceExceptionEnum.USER_NOT_EXIST); + } + // 密码进行AES解密 + String password = AesCipherUtil.enCrypto(loginName + passWord); + // 因为密码加密是以帐号+密码的形式进行加密的,所以解密后的对比是帐号+密码(loginFlag=1 免密登录) + if (password.equals(user.getPassword())) { + // 清除可能存在的Shiro权限信息缓存 + if (redisUtil.exists(Constants.PREFIX_SHIRO_CACHE + user.getId())) { + redisUtil.deleteValue(Constants.PREFIX_SHIRO_CACHE + user.getId()); + } + + // 设置RefreshToken,时间戳为当前时间戳,直接设置即可(不用先删后设,会覆盖已有的RefreshToken) + String currentTimeMillis = String.valueOf(System.currentTimeMillis()); + redisUtil.setValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + user.getId(), currentTimeMillis, refreshTokenExpireTime); + + //把用户设置到redis中,不需要重复查询 + redisUtil.setValue(Constants.PREFIX_SHIRO_USER + user.getId(), user, refreshTokenExpireTime); + + // 从Header中Authorization返回AccessToken,时间戳为当前时间戳 + String token = JwtUtil.sign(String.valueOf(user.getId()), currentTimeMillis); + httpServletResponse.setHeader("Authorization", token); + httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); + User result = userMapper.selectOne(wrapper); + return new RestResponse(true, HttpStatus.OK.value(), "登录成功", result); + } else { + return ResultGenerator.genFailResult(ServiceExceptionEnum.USER_PASSWORD_ERROR); + } + } + + + + +} diff --git a/src/main/java/com/bupt/springboot/shiro/ShiroConfig.java b/src/main/java/com/bupt/springboot/shiro/ShiroConfig.java index 46de97a7db06936b7d5ac87cf627a7bf5a7ebb8f..4c2f85cf914d54c434b4c7ea076b3723abc59ce4 100644 --- a/src/main/java/com/bupt/springboot/shiro/ShiroConfig.java +++ b/src/main/java/com/bupt/springboot/shiro/ShiroConfig.java @@ -1,123 +1,123 @@ -package com.bupt.springboot.shiro; - -import com.bupt.springboot.shiro.cache.CustomCacheManager; -import com.bupt.springboot.shiro.jwt.JwtFilter; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; -import org.apache.shiro.mgt.DefaultSubjectDAO; -import org.apache.shiro.spring.LifecycleBeanPostProcessor; -import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; -import org.apache.shiro.spring.web.ShiroFilterFactoryBean; -import org.apache.shiro.web.mgt.DefaultWebSecurityManager; -import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.DependsOn; - -import javax.servlet.Filter; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -@Configuration -public class ShiroConfig { - - /** - * 排除过滤url - */ - @Value("${shiro.excludeUrl}") - private String excludeUrl; - - - /** - * RefreshToken过期时间 - */ - @Value("${shiro.refreshTokenExpireTime}") - private long refreshTokenExpireTime; - - /** - * 是否需要开启任何请求必须登录才可访问 - */ - @Value("${shiro.mustLoginFlag}") - private boolean mustLoginFlag; - - /** - * 配置使用自定义Realm,关闭Shiro自带的session - * 详情见文档 http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29 - */ - - @Bean("securityManager") - public DefaultWebSecurityManager getManager(UserRealm userRealm) { - DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); - - // 关闭Shiro自带的session - DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO(); - DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator(); - defaultSessionStorageEvaluator.setSessionStorageEnabled(false); - subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator); - manager.setSubjectDAO(subjectDAO); - // 设置自定义Cache缓存 - manager.setCacheManager(new CustomCacheManager()); - // 使用自定义Realm - manager.setRealm(userRealm); - return manager; - } - - /** - * 添加自己的过滤器,自定义url规则 - * 详情见文档 http://shiro.apache.org/web.html#urls- - */ - @Bean("shiroFilter") - public ShiroFilterFactoryBean factory(DefaultWebSecurityManager securityManager) { - ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); - // 添加自己的过滤器取名为jwt - Map filterMap = new HashMap<>(16); - filterMap.put("jwt", new JwtFilter(refreshTokenExpireTime, mustLoginFlag)); - factoryBean.setFilters(filterMap); - factoryBean.setSecurityManager(securityManager); - // 自定义url规则使用LinkedHashMap有序Map - LinkedHashMap filterChainDefinitionMap = new LinkedHashMap<>(16); - if (StringUtils.isNotEmpty(excludeUrl)) { - String[] excludeUrls = excludeUrl.split(","); - for (String excludeUrl : excludeUrls) { - filterChainDefinitionMap.put(excludeUrl, "anon"); - } - } - filterChainDefinitionMap.put("/swagger-ui.html", "anon"); - filterChainDefinitionMap.put("/swagger-resources", "anon"); - filterChainDefinitionMap.put("/v2/api-docs", "anon"); - filterChainDefinitionMap.put("/login", "anon"); - filterChainDefinitionMap.put("/register", "anon"); - filterChainDefinitionMap.put("/register/**", "anon"); - filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/*", "anon"); - filterChainDefinitionMap.put("/**", "jwt"); - factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); - return factoryBean; - } - - /** - * 下面的代码是添加注解支持,代码都是固定写法 - */ - @Bean - @DependsOn("lifecycleBeanPostProcessor") - public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { - DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); - // 强制使用cglib,防止重复代理和可能引起代理出错的问题,https://zhuanlan.zhihu.com/p/29161098 - defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); - return defaultAdvisorAutoProxyCreator; - } - - @Bean - public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { - return new LifecycleBeanPostProcessor(); - } - - @Bean - public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { - AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); - advisor.setSecurityManager(securityManager); - return advisor; - } - -} +package com.bupt.springboot.shiro; + +import com.bupt.springboot.shiro.cache.CustomCacheManager; +import com.bupt.springboot.shiro.jwt.JwtFilter; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.mgt.DefaultSessionStorageEvaluator; +import org.apache.shiro.mgt.DefaultSubjectDAO; +import org.apache.shiro.spring.LifecycleBeanPostProcessor; +import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.DependsOn; + +import javax.servlet.Filter; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +@Configuration +public class ShiroConfig { + + /** + * 排除过滤url + */ + @Value("${shiro.excludeUrl}") + private String excludeUrl; + + + /** + * RefreshToken过期时间 + */ + @Value("${shiro.refreshTokenExpireTime}") + private long refreshTokenExpireTime; + + /** + * 是否需要开启任何请求必须登录才可访问 + */ + @Value("${shiro.mustLoginFlag}") + private boolean mustLoginFlag; + + /** + * 配置使用自定义Realm,关闭Shiro自带的session + * 详情见文档 http://shiro.apache.org/session-management.html#SessionManagement-StatelessApplications%28Sessionless%29 + */ + + @Bean("securityManager") + public DefaultWebSecurityManager getManager(UserRealm userRealm) { + DefaultWebSecurityManager manager = new DefaultWebSecurityManager(); + + // 关闭Shiro自带的session + DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO(); + DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator(); + defaultSessionStorageEvaluator.setSessionStorageEnabled(false); + subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator); + manager.setSubjectDAO(subjectDAO); + // 设置自定义Cache缓存 + manager.setCacheManager(new CustomCacheManager()); + // 使用自定义Realm + manager.setRealm(userRealm); + return manager; + } + + /** + * 添加自己的过滤器,自定义url规则 + * 详情见文档 http://shiro.apache.org/web.html#urls- + */ + @Bean("shiroFilter") + public ShiroFilterFactoryBean factory(DefaultWebSecurityManager securityManager) { + ShiroFilterFactoryBean factoryBean = new ShiroFilterFactoryBean(); + // 添加自己的过滤器取名为jwt + Map filterMap = new HashMap<>(16); + filterMap.put("jwt", new JwtFilter(refreshTokenExpireTime, mustLoginFlag)); + factoryBean.setFilters(filterMap); + factoryBean.setSecurityManager(securityManager); + // 自定义url规则使用LinkedHashMap有序Map + LinkedHashMap filterChainDefinitionMap = new LinkedHashMap<>(16); + if (StringUtils.isNotEmpty(excludeUrl)) { + String[] excludeUrls = excludeUrl.split(","); + for (String excludeUrl : excludeUrls) { + filterChainDefinitionMap.put(excludeUrl, "anon"); + } + } + filterChainDefinitionMap.put("/swagger-ui.html", "anon"); + filterChainDefinitionMap.put("/swagger-resources", "anon"); + filterChainDefinitionMap.put("/v2/api-docs", "anon"); + filterChainDefinitionMap.put("/login", "anon"); + filterChainDefinitionMap.put("/register", "anon"); + filterChainDefinitionMap.put("/register/**", "anon"); + filterChainDefinitionMap.put("/webjars/springfox-swagger-ui/*", "anon"); + filterChainDefinitionMap.put("/**", "jwt"); + factoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); + return factoryBean; + } + + /** + * 下面的代码是添加注解支持,代码都是固定写法 + */ + @Bean + @DependsOn("lifecycleBeanPostProcessor") + public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() { + DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator(); + // 强制使用cglib,防止重复代理和可能引起代理出错的问题,https://zhuanlan.zhihu.com/p/29161098 + defaultAdvisorAutoProxyCreator.setProxyTargetClass(true); + return defaultAdvisorAutoProxyCreator; + } + + @Bean + public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() { + return new LifecycleBeanPostProcessor(); + } + + @Bean + public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) { + AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor(); + advisor.setSecurityManager(securityManager); + return advisor; + } + +} diff --git a/src/main/java/com/bupt/springboot/shiro/UserRealm.java b/src/main/java/com/bupt/springboot/shiro/UserRealm.java index 9ddb8efaf20f83eea9677e6fe792290379cfc879..fa7e6eb887670cc64272141d91481c3de50ee9f0 100644 --- a/src/main/java/com/bupt/springboot/shiro/UserRealm.java +++ b/src/main/java/com/bupt/springboot/shiro/UserRealm.java @@ -1,102 +1,102 @@ -package com.bupt.springboot.shiro; - -import com.auth0.jwt.exceptions.TokenExpiredException; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.bupt.springboot.common.Constants; -import com.bupt.springboot.mapper.UserMapper; -import com.bupt.springboot.entity.User; -import com.bupt.springboot.utils.JwtUtil; -import com.bupt.springboot.utils.RedisUtil; -import com.bupt.springboot.shiro.jwt.JwtToken; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.authc.AuthenticationException; -import org.apache.shiro.authc.AuthenticationInfo; -import org.apache.shiro.authc.AuthenticationToken; -import org.apache.shiro.authc.SimpleAuthenticationInfo; -import org.apache.shiro.authz.AuthorizationInfo; -import org.apache.shiro.realm.AuthorizingRealm; -import org.apache.shiro.subject.PrincipalCollection; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -@Component -@Slf4j -public class UserRealm extends AuthorizingRealm { - - @Autowired - private UserMapper userMapper; - - @Autowired - private RedisUtil redisUtil; - - /** - * RefreshToken过期时间 - */ - @Value("${shiro.refreshTokenExpireTime}") - private long refreshTokenExpireTime; - - /** - * 大坑,必须重写此方法,不然Shiro会报错 - */ - @Override - public boolean supports(AuthenticationToken token) { - return token instanceof JwtToken; - } - - //这里我们只完成了认证的流程,关于权限后续可以添加,目前暂时用不到 - @Override - protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { - return null; - } - - /** - * 调用subject.login()方法之后内部最终会执行到这个方法来进行权限验证 - * - * @param auth Token - * @return 认证信息 - * @throws AuthenticationException 认证异常类型 - */ - @Override - protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException { - String token = (String) auth.getCredentials(); - //1.解密获取account用于和数据库进行对比,下面getClaim可能会抛解码失败的异常 - String uid = JwtUtil.getClaim(token, Constants.UID); - - if (StringUtils.isBlank(uid)) { - //2.抛出账号为空的异常 - throw new AuthenticationException("Token中的账号为空!"); - } - User user = (User) redisUtil.getValue(Constants.PREFIX_SHIRO_USER + uid); - if (user == null) { - //查询数据库看该用户是否存在 - QueryWrapper wrapper = new QueryWrapper<>(); - user = userMapper.selectById(uid); - if (user == null) { - //3.抛出用户不存在的异常 - throw new AuthenticationException("该用户不存在!"); - } - //redis缓存中再设置一次用户信息,考虑删除用户时清空redis中相应的缓存 - redisUtil.setValue(Constants.PREFIX_SHIRO_USER + uid, user, refreshTokenExpireTime); - } - //开始认证,如果AccessToken认证通过,而且Redis中国存在RefreshToken而且两个时间戳相等 - //JwtUtil.verify(token)条件如果为false则说明token已经过期,执行到这里只有用旧的token或者access token已经过期这两种情况 - if (JwtUtil.verify(token)) { - if (redisUtil.exists(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid)) { - // 获取RefreshToken的时间戳 - String currentTimeMillisRedis = redisUtil.getValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid).toString(); - // 获取AccessToken时间戳,与RefreshToken的时间戳对比 - if (JwtUtil.getClaim(token, Constants.CURRENT_TIME_MILLIS).equals(currentTimeMillisRedis)) { - return new SimpleAuthenticationInfo(token, token, "userRealm"); - } - } else { - //按道理不会抛出这个异常,因为前面已经从token中成功提取了有效信息 - throw new AuthenticationException("Token授权异常"); - } - } - //这里如果JwtUtil.verify(token)条件如果为false或者RefreshToken和AccessToken的时间戳不相同的话均说明token已经过期 - //4.实际情况下,执行到下面这句话只有出现token过期的异常被抛出 - throw new TokenExpiredException("Token已过期"); - } -} +package com.bupt.springboot.shiro; + +import com.auth0.jwt.exceptions.TokenExpiredException; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.bupt.springboot.common.Constants; +import com.bupt.springboot.mapper.UserMapper; +import com.bupt.springboot.entity.User; +import com.bupt.springboot.utils.JwtUtil; +import com.bupt.springboot.utils.RedisUtil; +import com.bupt.springboot.shiro.jwt.JwtToken; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.AuthenticationInfo; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.authc.SimpleAuthenticationInfo; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class UserRealm extends AuthorizingRealm { + + @Autowired + private UserMapper userMapper; + + @Autowired + private RedisUtil redisUtil; + + /** + * RefreshToken过期时间 + */ + @Value("${shiro.refreshTokenExpireTime}") + private long refreshTokenExpireTime; + + /** + * 大坑,必须重写此方法,不然Shiro会报错 + */ + @Override + public boolean supports(AuthenticationToken token) { + return token instanceof JwtToken; + } + + //这里我们只完成了认证的流程,关于权限后续可以添加,目前暂时用不到 + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { + return null; + } + + /** + * 调用subject.login()方法之后内部最终会执行到这个方法来进行权限验证 + * + * @param auth Token + * @return 认证信息 + * @throws AuthenticationException 认证异常类型 + */ + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException { + String token = (String) auth.getCredentials(); + //1.解密获取account用于和数据库进行对比,下面getClaim可能会抛解码失败的异常 + String uid = JwtUtil.getClaim(token, Constants.UID); + + if (StringUtils.isBlank(uid)) { + //2.抛出账号为空的异常 + throw new AuthenticationException("Token中的账号为空!"); + } + User user = (User) redisUtil.getValue(Constants.PREFIX_SHIRO_USER + uid); + if (user == null) { + //查询数据库看该用户是否存在 + QueryWrapper wrapper = new QueryWrapper<>(); + user = userMapper.selectById(uid); + if (user == null) { + //3.抛出用户不存在的异常 + throw new AuthenticationException("该用户不存在!"); + } + //redis缓存中再设置一次用户信息,考虑删除用户时清空redis中相应的缓存 + redisUtil.setValue(Constants.PREFIX_SHIRO_USER + uid, user, refreshTokenExpireTime); + } + //开始认证,如果AccessToken认证通过,而且Redis中国存在RefreshToken而且两个时间戳相等 + //JwtUtil.verify(token)条件如果为false则说明token已经过期,执行到这里只有用旧的token或者access token已经过期这两种情况 + if (JwtUtil.verify(token)) { + if (redisUtil.exists(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid)) { + // 获取RefreshToken的时间戳 + String currentTimeMillisRedis = redisUtil.getValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid).toString(); + // 获取AccessToken时间戳,与RefreshToken的时间戳对比 + if (JwtUtil.getClaim(token, Constants.CURRENT_TIME_MILLIS).equals(currentTimeMillisRedis)) { + return new SimpleAuthenticationInfo(token, token, "userRealm"); + } + } else { + //按道理不会抛出这个异常,因为前面已经从token中成功提取了有效信息 + throw new AuthenticationException("Token授权异常"); + } + } + //这里如果JwtUtil.verify(token)条件如果为false或者RefreshToken和AccessToken的时间戳不相同的话均说明token已经过期 + //4.实际情况下,执行到下面这句话只有出现token过期的异常被抛出 + throw new TokenExpiredException("Token已过期"); + } +} diff --git a/src/main/java/com/bupt/springboot/shiro/cache/CustomCache.java b/src/main/java/com/bupt/springboot/shiro/cache/CustomCache.java index 5a8d34c2366f53c4aca3e996977abac55eae321c..114b13bc37fb9a7aa65aed35fc5e8497b0d94f68 100644 --- a/src/main/java/com/bupt/springboot/shiro/cache/CustomCache.java +++ b/src/main/java/com/bupt/springboot/shiro/cache/CustomCache.java @@ -1,131 +1,131 @@ -package com.bupt.springboot.shiro.cache; - -import com.bupt.springboot.common.Constants; -import com.bupt.springboot.service.SpringContextHolder; -import com.bupt.springboot.utils.JwtUtil; -import com.bupt.springboot.utils.RedisUtil; -import org.apache.shiro.cache.Cache; -import org.apache.shiro.cache.CacheException; -import org.springframework.beans.factory.annotation.Value; - -import java.util.Collection; -import java.util.Set; - - -/** - * @author LST - * @version 1.0 - * @Description: 重写Shiro的Cache保存读取 - * @date 2019-12-31 16:22 - */ -public class CustomCache implements Cache { - - private RedisUtil redisUtil; - - - /** - * RefreshToken过期时间 - */ - @Value("${shiro.refreshTokenExpireTime}") - private long refreshTokenExpireTime; - - /** - * 缓存的key名称获取为shiro:cache:account - * - * @param key - * @return java.lang.String - * @author wujj - * @date 2018/9/4 18:33 - */ - private String getKey(Object key) { - return Constants.PREFIX_SHIRO_CACHE + JwtUtil.getClaim(key.toString(), Constants.UID); - } - - /** - * 获取缓存 - */ - @Override - public Object get(Object key) throws CacheException { - if (redisUtil == null) { - redisUtil = SpringContextHolder.getBean(RedisUtil.class); - } - if (!redisUtil.exists(this.getKey(key))) { - return null; - } - return redisUtil.getValue(this.getKey(key)); - } - - /** - * 保存缓存 - */ - @Override - public Object put(Object key, Object value) throws CacheException { - if (redisUtil == null) { - redisUtil = SpringContextHolder.getBean(RedisUtil.class); - } - // 设置Redis的Shiro缓存 - redisUtil.setValue(this.getKey(key), value, refreshTokenExpireTime); - return 0; - } - - /** - * 移除缓存 - */ - @Override - public Object remove(Object key) throws CacheException { - if (redisUtil == null) { - redisUtil = SpringContextHolder.getBean(RedisUtil.class); - } - if (!redisUtil.exists(this.getKey(key))) { - return null; - } - redisUtil.deleteValue(this.getKey(key)); - return null; - } - - /** - * 清空所有缓存 - */ - @Override - public void clear() throws CacheException { - // Objects.requireNonNull(JedisUtil.getJedis()).flushDB(); - } - - /** - * 缓存的个数 - */ - @Override - public int size() { - // Long size = Objects.requireNonNull(JedisUtil.getJedis()).dbSize(); - //return size.intValue(); - return 0; - } - - /** - * 获取所有的key - */ - @Override - public Set keys() { -// Set keys = Objects.requireNonNull(JedisUtil.getJedis()).keys("*".getBytes()); -// Set set = new HashSet(); -// for (byte[] bs : keys) { -// set.add(SerializableUtil.unserializable(bs)); -// } -// return set; - return null; - } - - /** - * 获取所有的value - */ - @Override - public Collection values() { -// Set keys = this.keys(); -// List values = new ArrayList(); -// for (Object key : keys) { -// values.add(JedisUtil.getObject(this.getKey(key))); -// } -// return values; - return null; - } -} +package com.bupt.springboot.shiro.cache; + +import com.bupt.springboot.common.Constants; +import com.bupt.springboot.service.SpringContextHolder; +import com.bupt.springboot.utils.JwtUtil; +import com.bupt.springboot.utils.RedisUtil; +import org.apache.shiro.cache.Cache; +import org.apache.shiro.cache.CacheException; +import org.springframework.beans.factory.annotation.Value; + +import java.util.Collection; +import java.util.Set; + + +/** + * @author LST + * @version 1.0 + * @Description: 重写Shiro的Cache保存读取 + * @date 2019-12-31 16:22 + */ +public class CustomCache implements Cache { + + private RedisUtil redisUtil; + + + /** + * RefreshToken过期时间 + */ + @Value("${shiro.refreshTokenExpireTime}") + private long refreshTokenExpireTime; + + /** + * 缓存的key名称获取为shiro:cache:account + * + * @param key + * @return java.lang.String + * @author wujj + * @date 2018/9/4 18:33 + */ + private String getKey(Object key) { + return Constants.PREFIX_SHIRO_CACHE + JwtUtil.getClaim(key.toString(), Constants.UID); + } + + /** + * 获取缓存 + */ + @Override + public Object get(Object key) throws CacheException { + if (redisUtil == null) { + redisUtil = SpringContextHolder.getBean(RedisUtil.class); + } + if (!redisUtil.exists(this.getKey(key))) { + return null; + } + return redisUtil.getValue(this.getKey(key)); + } + + /** + * 保存缓存 + */ + @Override + public Object put(Object key, Object value) throws CacheException { + if (redisUtil == null) { + redisUtil = SpringContextHolder.getBean(RedisUtil.class); + } + // 设置Redis的Shiro缓存 + redisUtil.setValue(this.getKey(key), value, refreshTokenExpireTime); + return 0; + } + + /** + * 移除缓存 + */ + @Override + public Object remove(Object key) throws CacheException { + if (redisUtil == null) { + redisUtil = SpringContextHolder.getBean(RedisUtil.class); + } + if (!redisUtil.exists(this.getKey(key))) { + return null; + } + redisUtil.deleteValue(this.getKey(key)); + return null; + } + + /** + * 清空所有缓存 + */ + @Override + public void clear() throws CacheException { + // Objects.requireNonNull(JedisUtil.getJedis()).flushDB(); + } + + /** + * 缓存的个数 + */ + @Override + public int size() { + // Long size = Objects.requireNonNull(JedisUtil.getJedis()).dbSize(); + //return size.intValue(); + return 0; + } + + /** + * 获取所有的key + */ + @Override + public Set keys() { +// Set keys = Objects.requireNonNull(JedisUtil.getJedis()).keys("*".getBytes()); +// Set set = new HashSet(); +// for (byte[] bs : keys) { +// set.add(SerializableUtil.unserializable(bs)); +// } +// return set; + return null; + } + + /** + * 获取所有的value + */ + @Override + public Collection values() { +// Set keys = this.keys(); +// List values = new ArrayList(); +// for (Object key : keys) { +// values.add(JedisUtil.getObject(this.getKey(key))); +// } +// return values; + return null; + } +} diff --git a/src/main/java/com/bupt/springboot/shiro/cache/CustomCacheManager.java b/src/main/java/com/bupt/springboot/shiro/cache/CustomCacheManager.java index a14eb34fea4306c787d104016418d12abefcbfa5..48eb63afc7fca6eb99e005c666c28620ca6fa744 100644 --- a/src/main/java/com/bupt/springboot/shiro/cache/CustomCacheManager.java +++ b/src/main/java/com/bupt/springboot/shiro/cache/CustomCacheManager.java @@ -1,20 +1,20 @@ -package com.bupt.springboot.shiro.cache; - - -import org.apache.shiro.cache.Cache; -import org.apache.shiro.cache.CacheException; -import org.apache.shiro.cache.CacheManager; - -/** - * @author LST - * @version 1.0 - * @Description: 重写Shiro缓存管理器 - * @date 2019-12-31 16:22 - */ -public class CustomCacheManager implements CacheManager { - - @Override - public Cache getCache(String s) throws CacheException { - return new CustomCache(); - } -} +package com.bupt.springboot.shiro.cache; + + +import org.apache.shiro.cache.Cache; +import org.apache.shiro.cache.CacheException; +import org.apache.shiro.cache.CacheManager; + +/** + * @author LST + * @version 1.0 + * @Description: 重写Shiro缓存管理器 + * @date 2019-12-31 16:22 + */ +public class CustomCacheManager implements CacheManager { + + @Override + public Cache getCache(String s) throws CacheException { + return new CustomCache(); + } +} diff --git a/src/main/java/com/bupt/springboot/shiro/jwt/JwtFilter.java b/src/main/java/com/bupt/springboot/shiro/jwt/JwtFilter.java index 499feed9545cfc3e89c622c87240a59f27d2634a..2d443082beb5b715b8830472c96bc2f74ee44308 100644 --- a/src/main/java/com/bupt/springboot/shiro/jwt/JwtFilter.java +++ b/src/main/java/com/bupt/springboot/shiro/jwt/JwtFilter.java @@ -1,237 +1,237 @@ -package com.bupt.springboot.shiro.jwt; - -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.auth0.jwt.exceptions.TokenExpiredException; -import com.bupt.springboot.common.Constants; -import com.bupt.springboot.result.RestResponse; -import com.bupt.springboot.service.SpringContextHolder; -import com.bupt.springboot.utils.JwtUtil; -import com.bupt.springboot.utils.RedisUtil; -import com.bupt.springboot.utils.JsonConvertUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; -import org.apache.shiro.web.util.WebUtils; -import org.springframework.http.HttpStatus; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -@Slf4j -public class JwtFilter extends BasicHttpAuthenticationFilter { - - - private RedisUtil redisUtil; - - - /** - * RefreshToken过期时间 - */ - private long refreshTokenExpireTime; - - /** - * 是否需要开启任何请求必须登录才可访问,开发时候可以为false,生产与测试必须为true. - */ - private boolean mustLoginFlag; - - /** - * 初始化 - * - * @param refreshTokenExpireTime 刷新token时间 - * @param mustLoginFlag 是否需要登录 - */ - public JwtFilter(long refreshTokenExpireTime, boolean mustLoginFlag) { - this.refreshTokenExpireTime = refreshTokenExpireTime; - this.mustLoginFlag = mustLoginFlag; - } - - @Override - protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { - if (isLoginAttempt(request, response)) { - try { - executeLogin(request, response); - } catch (Exception e) { - // 认证出现异常,传递错误信息msg - String msg = e.getMessage(); - // 获取应用异常(该Cause是导致抛出此throwable(异常)的throwable(异常)) - Throwable throwable = e.getCause(); - if (throwable instanceof TokenExpiredException) { - // 该异常为JWT的AccessToken已过期,判断RefreshToken未过期就进行AccessToken刷新 - if (refreshToken(request, response)) { - return true; - } else { - msg = "登录已过期"; - } - } else { - if (throwable != null) { - // 获取应用异常msg - msg = throwable.getMessage(); - } - } - /* - 错误两种处理方式 - 1. 将非法请求转发到/401的Controller处理,抛出自定义无权访问异常被全局捕捉再返回Response信息 - 2. 无需转发,直接返回Response信息 - 一般使用第二种(更方便),我们在这里使用的是第二种方法 - */ - // 直接返回Response信息 - this.response401(request, response, msg); - return false; - } - } else { - // 没有携带Token - HttpServletRequest httpRequest = WebUtils.toHttp(request); - // 获取当前请求类型 - String httpMethod = httpRequest.getMethod(); - // 获取当前请求URI - String requestURI = httpRequest.getRequestURI(); -// log.info("当前请求 {} Authorization属性(Token)为空 请求类型 {}", requestURI, httpMethod); - // mustLoginFlag = true 开启任何请求必须登录才可访问 - this.response401(request, response, "请先登录"); - return false; - } - return true; - } - - /** - * 这里我们详细说明下为什么重写 - * 可以对比父类方法,只是将executeLogin方法调用去除了 - * 如果没有去除将会循环调用doGetAuthenticationInfo方法 - * 这里如果登录异常的话直接结束请求处理的流程,request到此中止 - */ - @Override - protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { - /** - * todo:研究是否需要下面的sendChallenge - */ - this.sendChallenge(request, response); - return false; - } - - - /** - * 此处为对access token进行过期刷新处理,判断refresh token是否过期,如果没有过期就返回新的access token继续正常访问 - * synchronized 并发请求的时候会出错,目前先添加synchronized处理--可以后期优化--https://www.sundayfine.com/jwt-refresh-token/解决方案 - * - * @param request 请求 - * @param response 响应 - * @return 是否继续访问 - */ - private synchronized boolean refreshToken(ServletRequest request, ServletResponse response) { - // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) - String token = this.getAuthzHeader(request); - String uid = JwtUtil.getClaim(token, Constants.UID); - if (redisUtil == null) { - redisUtil = SpringContextHolder.getBean(RedisUtil.class); - } - String oldRedisToken = (String) redisUtil.getValue("token_blacklist:" + token); - // 判断Redis中RefreshToken是否存在,如果不存在的话只能重新登录来重新获取 - if (StringUtils.isNotEmpty(oldRedisToken)) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setHeader("Authorization", oldRedisToken); - httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); - return true; - } - if (redisUtil.exists(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid)) { - // Redis中RefreshToken还存在,获取RefreshToken的时间戳 - String currentTimeMillisRedis = redisUtil.getValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid).toString(); - // 获取当前AccessToken中的时间戳,与RefreshToken的时间戳对比,如果当前时间戳一致,进行AccessToken刷新 - if (JwtUtil.getClaim(token, Constants.CURRENT_TIME_MILLIS).equals(currentTimeMillisRedis)) { - // 获取当前最新时间戳 - String currentTimeMillis = String.valueOf(System.currentTimeMillis()); - // 读取配置文件,获取refreshTokenExpireTime属性 - // 设置RefreshToken中的时间戳为当前最新时间戳,且刷新过期时间重新为30分钟过期(配置文件可配置refreshTokenExpireTime属性) - redisUtil.setValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid, - currentTimeMillis, refreshTokenExpireTime); - // 刷新AccessToken,设置时间戳为当前最新时间戳 - String newToken = JwtUtil.sign(uid, currentTimeMillis); - //并发请求下会造成token过期,并发请求下第一个获取锁的线程会更新token,以后的线程只需要拿更新后的token,access和refresh token的时间戳一致 - //这里的50s后期可以不进行硬编码的方式 - redisUtil.setValue("token_blacklist:" + token, newToken, 50L); - // 将新刷新的AccessToken再次进行Shiro的登录 - JwtToken jwtToken = new JwtToken(newToken); - // 提交给UserRealm进行认证,如果错误他会抛出异常并被捕获,如果没有抛出异常则代表登入成功,返回true - this.getSubject(request, response).login(jwtToken); - // 最后将刷新的AccessToken存放在Response的Header中的Authorization字段返回 - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setHeader("Authorization", newToken); - httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); - return true; - } - } - return false; - } - - /** - * 检测Header里面是否包含Authorization字段,有就进行Token登录认证授权 - * - * @param request 请求 - * @param response 响应 - * @return 是否带有Token - */ - @Override - protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) { - // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) - String token = this.getAuthzHeader(request); - return token != null; - } - - /** - * 进行AccessToken登录认证授权 - */ - @Override - protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception { - // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) - JwtToken token = new JwtToken(this.getAuthzHeader(request)); - - // 提交给UserRealm进行认证,如果错误他会抛出异常并被捕获 - this.getSubject(request, response).login(token); - // 如果没有抛出异常则代表登入成功,返回true - return true; - } - - - /** - * 无需转发,直接返回Response信息 - */ - private void response401(ServletRequest req, ServletResponse resp, String msg) { - HttpServletResponse httpServletResponse = (HttpServletResponse) resp; - httpServletResponse.setStatus(HttpStatus.OK.value()); - httpServletResponse.setCharacterEncoding("UTF-8"); - httpServletResponse.setContentType("application/json; charset=utf-8"); - try (PrintWriter out = httpServletResponse.getWriter()) { - String data = JSONObject.toJSONString(new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问:" + msg, null), SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue); - out.append(data); - } catch (IOException e) { - log.error("直接返回Response信息出现IOException异常:" + e.getMessage()); - // throw new CustomException("直接返回Response信息出现IOException异常:" + e.getMessage()); - } - } - - - /** - * 对跨域提供支持 - */ - @Override - protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); - httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); - httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers")); - // 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态 - if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { - httpServletResponse.setStatus(HttpStatus.OK.value()); - return false; - } - return super.preHandle(request, response); - } - - -} +package com.bupt.springboot.shiro.jwt; + +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.auth0.jwt.exceptions.TokenExpiredException; +import com.bupt.springboot.common.Constants; +import com.bupt.springboot.result.RestResponse; +import com.bupt.springboot.service.SpringContextHolder; +import com.bupt.springboot.utils.JwtUtil; +import com.bupt.springboot.utils.RedisUtil; +import com.bupt.springboot.utils.JsonConvertUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter; +import org.apache.shiro.web.util.WebUtils; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.RequestMethod; + +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +@Slf4j +public class JwtFilter extends BasicHttpAuthenticationFilter { + + + private RedisUtil redisUtil; + + + /** + * RefreshToken过期时间 + */ + private long refreshTokenExpireTime; + + /** + * 是否需要开启任何请求必须登录才可访问,开发时候可以为false,生产与测试必须为true. + */ + private boolean mustLoginFlag; + + /** + * 初始化 + * + * @param refreshTokenExpireTime 刷新token时间 + * @param mustLoginFlag 是否需要登录 + */ + public JwtFilter(long refreshTokenExpireTime, boolean mustLoginFlag) { + this.refreshTokenExpireTime = refreshTokenExpireTime; + this.mustLoginFlag = mustLoginFlag; + } + + @Override + protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) { + if (isLoginAttempt(request, response)) { + try { + executeLogin(request, response); + } catch (Exception e) { + // 认证出现异常,传递错误信息msg + String msg = e.getMessage(); + // 获取应用异常(该Cause是导致抛出此throwable(异常)的throwable(异常)) + Throwable throwable = e.getCause(); + if (throwable instanceof TokenExpiredException) { + // 该异常为JWT的AccessToken已过期,判断RefreshToken未过期就进行AccessToken刷新 + if (refreshToken(request, response)) { + return true; + } else { + msg = "登录已过期"; + } + } else { + if (throwable != null) { + // 获取应用异常msg + msg = throwable.getMessage(); + } + } + /* + 错误两种处理方式 + 1. 将非法请求转发到/401的Controller处理,抛出自定义无权访问异常被全局捕捉再返回Response信息 + 2. 无需转发,直接返回Response信息 + 一般使用第二种(更方便),我们在这里使用的是第二种方法 + */ + // 直接返回Response信息 + this.response401(request, response, msg); + return false; + } + } else { + // 没有携带Token + HttpServletRequest httpRequest = WebUtils.toHttp(request); + // 获取当前请求类型 + String httpMethod = httpRequest.getMethod(); + // 获取当前请求URI + String requestURI = httpRequest.getRequestURI(); +// log.info("当前请求 {} Authorization属性(Token)为空 请求类型 {}", requestURI, httpMethod); + // mustLoginFlag = true 开启任何请求必须登录才可访问 + this.response401(request, response, "请先登录"); + return false; + } + return true; + } + + /** + * 这里我们详细说明下为什么重写 + * 可以对比父类方法,只是将executeLogin方法调用去除了 + * 如果没有去除将会循环调用doGetAuthenticationInfo方法 + * 这里如果登录异常的话直接结束请求处理的流程,request到此中止 + */ + @Override + protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception { + /** + * todo:研究是否需要下面的sendChallenge + */ + this.sendChallenge(request, response); + return false; + } + + + /** + * 此处为对access token进行过期刷新处理,判断refresh token是否过期,如果没有过期就返回新的access token继续正常访问 + * synchronized 并发请求的时候会出错,目前先添加synchronized处理--可以后期优化--https://www.sundayfine.com/jwt-refresh-token/解决方案 + * + * @param request 请求 + * @param response 响应 + * @return 是否继续访问 + */ + private synchronized boolean refreshToken(ServletRequest request, ServletResponse response) { + // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) + String token = this.getAuthzHeader(request); + String uid = JwtUtil.getClaim(token, Constants.UID); + if (redisUtil == null) { + redisUtil = SpringContextHolder.getBean(RedisUtil.class); + } + String oldRedisToken = (String) redisUtil.getValue("token_blacklist:" + token); + // 判断Redis中RefreshToken是否存在,如果不存在的话只能重新登录来重新获取 + if (StringUtils.isNotEmpty(oldRedisToken)) { + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + httpServletResponse.setHeader("Authorization", oldRedisToken); + httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); + return true; + } + if (redisUtil.exists(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid)) { + // Redis中RefreshToken还存在,获取RefreshToken的时间戳 + String currentTimeMillisRedis = redisUtil.getValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid).toString(); + // 获取当前AccessToken中的时间戳,与RefreshToken的时间戳对比,如果当前时间戳一致,进行AccessToken刷新 + if (JwtUtil.getClaim(token, Constants.CURRENT_TIME_MILLIS).equals(currentTimeMillisRedis)) { + // 获取当前最新时间戳 + String currentTimeMillis = String.valueOf(System.currentTimeMillis()); + // 读取配置文件,获取refreshTokenExpireTime属性 + // 设置RefreshToken中的时间戳为当前最新时间戳,且刷新过期时间重新为30分钟过期(配置文件可配置refreshTokenExpireTime属性) + redisUtil.setValue(Constants.PREFIX_SHIRO_REFRESH_TOKEN + uid, + currentTimeMillis, refreshTokenExpireTime); + // 刷新AccessToken,设置时间戳为当前最新时间戳 + String newToken = JwtUtil.sign(uid, currentTimeMillis); + //并发请求下会造成token过期,并发请求下第一个获取锁的线程会更新token,以后的线程只需要拿更新后的token,access和refresh token的时间戳一致 + //这里的50s后期可以不进行硬编码的方式 + redisUtil.setValue("token_blacklist:" + token, newToken, 50L); + // 将新刷新的AccessToken再次进行Shiro的登录 + JwtToken jwtToken = new JwtToken(newToken); + // 提交给UserRealm进行认证,如果错误他会抛出异常并被捕获,如果没有抛出异常则代表登入成功,返回true + this.getSubject(request, response).login(jwtToken); + // 最后将刷新的AccessToken存放在Response的Header中的Authorization字段返回 + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + httpServletResponse.setHeader("Authorization", newToken); + httpServletResponse.setHeader("Access-Control-Expose-Headers", "Authorization"); + return true; + } + } + return false; + } + + /** + * 检测Header里面是否包含Authorization字段,有就进行Token登录认证授权 + * + * @param request 请求 + * @param response 响应 + * @return 是否带有Token + */ + @Override + protected boolean isLoginAttempt(ServletRequest request, ServletResponse response) { + // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) + String token = this.getAuthzHeader(request); + return token != null; + } + + /** + * 进行AccessToken登录认证授权 + */ + @Override + protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception { + // 拿到当前Header中Authorization的AccessToken(Shiro中getAuthzHeader方法已经实现) + JwtToken token = new JwtToken(this.getAuthzHeader(request)); + + // 提交给UserRealm进行认证,如果错误他会抛出异常并被捕获 + this.getSubject(request, response).login(token); + // 如果没有抛出异常则代表登入成功,返回true + return true; + } + + + /** + * 无需转发,直接返回Response信息 + */ + private void response401(ServletRequest req, ServletResponse resp, String msg) { + HttpServletResponse httpServletResponse = (HttpServletResponse) resp; + httpServletResponse.setStatus(HttpStatus.OK.value()); + httpServletResponse.setCharacterEncoding("UTF-8"); + httpServletResponse.setContentType("application/json; charset=utf-8"); + try (PrintWriter out = httpServletResponse.getWriter()) { + String data = JSONObject.toJSONString(new RestResponse(false, HttpStatus.UNAUTHORIZED.value(), "无权访问:" + msg, null), SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue); + out.append(data); + } catch (IOException e) { + log.error("直接返回Response信息出现IOException异常:" + e.getMessage()); + // throw new CustomException("直接返回Response信息出现IOException异常:" + e.getMessage()); + } + } + + + /** + * 对跨域提供支持 + */ + @Override + protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception { + HttpServletRequest httpServletRequest = (HttpServletRequest) request; + HttpServletResponse httpServletResponse = (HttpServletResponse) response; + httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin")); + httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE"); + httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers")); + // 跨域时会首先发送一个OPTIONS请求,这里我们给OPTIONS请求直接返回正常状态 + if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) { + httpServletResponse.setStatus(HttpStatus.OK.value()); + return false; + } + return super.preHandle(request, response); + } + + +} diff --git a/src/main/java/com/bupt/springboot/shiro/jwt/JwtToken.java b/src/main/java/com/bupt/springboot/shiro/jwt/JwtToken.java index 2e40f03a112d73db7f2511e418cb9919c095d6d1..bc94cc911f36ae182545804a0c2f0e6060606f1e 100644 --- a/src/main/java/com/bupt/springboot/shiro/jwt/JwtToken.java +++ b/src/main/java/com/bupt/springboot/shiro/jwt/JwtToken.java @@ -1,25 +1,25 @@ -package com.bupt.springboot.shiro.jwt; - - -import org.apache.shiro.authc.AuthenticationToken; - -public class JwtToken implements AuthenticationToken { - /** - * Token - */ - private String token; - - public JwtToken(String token) { - this.token = token; - } - - @Override - public Object getPrincipal() { - return token; - } - - @Override - public Object getCredentials() { - return token; - } -} +package com.bupt.springboot.shiro.jwt; + + +import org.apache.shiro.authc.AuthenticationToken; + +public class JwtToken implements AuthenticationToken { + /** + * Token + */ + private String token; + + public JwtToken(String token) { + this.token = token; + } + + @Override + public Object getPrincipal() { + return token; + } + + @Override + public Object getCredentials() { + return token; + } +} diff --git a/src/main/java/com/bupt/springboot/utils/AesCipherUtil.java b/src/main/java/com/bupt/springboot/utils/AesCipherUtil.java index fc4f82147983cb753a503901f119cf3262ff08f3..62bbaf761c32aa7f71826bafb444545bd21546cf 100644 --- a/src/main/java/com/bupt/springboot/utils/AesCipherUtil.java +++ b/src/main/java/com/bupt/springboot/utils/AesCipherUtil.java @@ -1,126 +1,126 @@ -package com.bupt.springboot.utils; - -import com.bupt.springboot.exception.SXException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -import javax.crypto.*; -import java.io.UnsupportedEncodingException; -import java.security.InvalidKeyException; -import java.security.NoSuchAlgorithmException; -import java.security.SecureRandom; -import java.security.Security; - - -/** - * @author LST - * @version 1.0 - * @Description: AES加密解密工具类 - * @date 2019-12-31 16:22 - */ -@Component -public class AesCipherUtil { - - /** - * AES密码加密私钥(Base64加密) - */ - private static String encryptAESKey; - // private static final byte[] KEY = { 1, 1, 33, 82, -32, -85, -128, -65 }; - - @Value("${shiro.encryptAESKey}") - public void setEncryptAESKey(String encryptAESKey) { - AesCipherUtil.encryptAESKey = encryptAESKey; - } - - /** - * logger - */ - private static final Logger logger = LoggerFactory.getLogger(AesCipherUtil.class); - - /** - * 初始化Cipher - * - * @return - */ - private static Cipher initCipher(int mode) { -// Security.addProvider(new com.sun.crypto.provider.SunJCE()); - // 实例化支持AES算法的密钥生成器(算法名称命名需按规定,否则抛出异常) - // KeyGenerator 提供对称密钥生成器的功能,支持各种算法 - KeyGenerator keygen = null; - Cipher c = null; - try { - keygen = KeyGenerator.getInstance("AES"); - // 将私钥encryptAESKey先Base64解密后转换为byte[]数组按128位初始化 - SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); - secureRandom.setSeed(Base64ConvertUtil.decode(encryptAESKey).getBytes()); - keygen.init(128, secureRandom); - // SecretKey 负责保存对称密钥 生成密钥 - SecretKey deskey = keygen.generateKey(); - // 生成Cipher对象,指定其支持的AES算法,Cipher负责完成加密或解密工作 - c = Cipher.getInstance("AES"); - // 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式 - c.init(mode, deskey); - } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { - logger.error("getInstance()方法异常:{}", e.getMessage()); - throw new SXException("getInstance()方法异常:" + e.getMessage()); - } catch (UnsupportedEncodingException e) { - logger.error("Base64加密异常:{}", e.getMessage()); - throw new SXException("Base64加密异常:" + e.getMessage()); - } catch (InvalidKeyException e) { - logger.error("初始化Cipher对象异常:{}", e.getMessage()); - throw new SXException("初始化Cipher对象异常:" + e.getMessage()); - } - - return c; - } - - /** - * 加密 - * - * @param str - * @return java.lang.String - * @author lst - * @date 2018/8/31 16:56 - */ - public static String enCrypto(String str) { - try { - Cipher c = initCipher(Cipher.ENCRYPT_MODE); - byte[] src = str.getBytes(); - // 该字节数组负责保存加密的结果 - byte[] cipherByte = c.doFinal(src); - // 先将二进制转换成16进制,再返回Base64加密后的String - return Base64ConvertUtil.encode(HexConvertUtil.parseByte2HexStr(cipherByte)); - } catch (UnsupportedEncodingException e) { - logger.error("Base64加密异常:{}", e.getMessage()); - throw new SXException("Base64加密异常:" + e.getMessage()); - } catch (IllegalBlockSizeException | BadPaddingException e) { - logger.error("加密异常,密钥有误:{}", e.getMessage()); - throw new SXException("加密异常,密钥有误:" + e.getMessage()); - } - } - - /** - * 解密 - * - * @param str - * @return java.lang.String - * @author lst - * @date 2018/8/31 16:56 - */ - public static String deCrypto(String str) { - try { - Cipher c = initCipher(Cipher.DECRYPT_MODE); - // 该字节数组负责保存加密的结果,先对str进行Base64解密,将16进制转换为二进制 - byte[] cipherByte = c.doFinal(HexConvertUtil.parseHexStr2Byte(Base64ConvertUtil.decode(str))); - return new String(cipherByte); - } catch (UnsupportedEncodingException e) { - logger.error("Base64加密异常:{}", e.getMessage()); - throw new SXException("Base64加密异常:" + e.getMessage()); - } catch (IllegalBlockSizeException | BadPaddingException e) { - logger.error("解密异常,密钥有误:{}", e.getMessage()); - throw new SXException("解密异常,密钥有误:" + e.getMessage()); - } - } -} +package com.bupt.springboot.utils; + +import com.bupt.springboot.exception.SXException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.crypto.*; +import java.io.UnsupportedEncodingException; +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.Security; + + +/** + * @author LST + * @version 1.0 + * @Description: AES加密解密工具类 + * @date 2019-12-31 16:22 + */ +@Component +public class AesCipherUtil { + + /** + * AES密码加密私钥(Base64加密) + */ + private static String encryptAESKey; + // private static final byte[] KEY = { 1, 1, 33, 82, -32, -85, -128, -65 }; + + @Value("${shiro.encryptAESKey}") + public void setEncryptAESKey(String encryptAESKey) { + AesCipherUtil.encryptAESKey = encryptAESKey; + } + + /** + * logger + */ + private static final Logger logger = LoggerFactory.getLogger(AesCipherUtil.class); + + /** + * 初始化Cipher + * + * @return + */ + private static Cipher initCipher(int mode) { +// Security.addProvider(new com.sun.crypto.provider.SunJCE()); + // 实例化支持AES算法的密钥生成器(算法名称命名需按规定,否则抛出异常) + // KeyGenerator 提供对称密钥生成器的功能,支持各种算法 + KeyGenerator keygen = null; + Cipher c = null; + try { + keygen = KeyGenerator.getInstance("AES"); + // 将私钥encryptAESKey先Base64解密后转换为byte[]数组按128位初始化 + SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); + secureRandom.setSeed(Base64ConvertUtil.decode(encryptAESKey).getBytes()); + keygen.init(128, secureRandom); + // SecretKey 负责保存对称密钥 生成密钥 + SecretKey deskey = keygen.generateKey(); + // 生成Cipher对象,指定其支持的AES算法,Cipher负责完成加密或解密工作 + c = Cipher.getInstance("AES"); + // 根据密钥,对Cipher对象进行初始化,ENCRYPT_MODE表示加密模式 + c.init(mode, deskey); + } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { + logger.error("getInstance()方法异常:{}", e.getMessage()); + throw new SXException("getInstance()方法异常:" + e.getMessage()); + } catch (UnsupportedEncodingException e) { + logger.error("Base64加密异常:{}", e.getMessage()); + throw new SXException("Base64加密异常:" + e.getMessage()); + } catch (InvalidKeyException e) { + logger.error("初始化Cipher对象异常:{}", e.getMessage()); + throw new SXException("初始化Cipher对象异常:" + e.getMessage()); + } + + return c; + } + + /** + * 加密 + * + * @param str + * @return java.lang.String + * @author lst + * @date 2018/8/31 16:56 + */ + public static String enCrypto(String str) { + try { + Cipher c = initCipher(Cipher.ENCRYPT_MODE); + byte[] src = str.getBytes(); + // 该字节数组负责保存加密的结果 + byte[] cipherByte = c.doFinal(src); + // 先将二进制转换成16进制,再返回Base64加密后的String + return Base64ConvertUtil.encode(HexConvertUtil.parseByte2HexStr(cipherByte)); + } catch (UnsupportedEncodingException e) { + logger.error("Base64加密异常:{}", e.getMessage()); + throw new SXException("Base64加密异常:" + e.getMessage()); + } catch (IllegalBlockSizeException | BadPaddingException e) { + logger.error("加密异常,密钥有误:{}", e.getMessage()); + throw new SXException("加密异常,密钥有误:" + e.getMessage()); + } + } + + /** + * 解密 + * + * @param str + * @return java.lang.String + * @author lst + * @date 2018/8/31 16:56 + */ + public static String deCrypto(String str) { + try { + Cipher c = initCipher(Cipher.DECRYPT_MODE); + // 该字节数组负责保存加密的结果,先对str进行Base64解密,将16进制转换为二进制 + byte[] cipherByte = c.doFinal(HexConvertUtil.parseHexStr2Byte(Base64ConvertUtil.decode(str))); + return new String(cipherByte); + } catch (UnsupportedEncodingException e) { + logger.error("Base64加密异常:{}", e.getMessage()); + throw new SXException("Base64加密异常:" + e.getMessage()); + } catch (IllegalBlockSizeException | BadPaddingException e) { + logger.error("解密异常,密钥有误:{}", e.getMessage()); + throw new SXException("解密异常,密钥有误:" + e.getMessage()); + } + } +} diff --git a/src/main/java/com/bupt/springboot/utils/Base64ConvertUtil.java b/src/main/java/com/bupt/springboot/utils/Base64ConvertUtil.java index 7203f10987c714f3579193a0c242cd06aa7569ca..14275a702e454be7baa892462590eda064dd66e7 100644 --- a/src/main/java/com/bupt/springboot/utils/Base64ConvertUtil.java +++ b/src/main/java/com/bupt/springboot/utils/Base64ConvertUtil.java @@ -1,40 +1,40 @@ -package com.bupt.springboot.utils; - -import java.io.UnsupportedEncodingException; -import java.util.Base64; - - -/** - * @author LST - * @version 1.0 - * @Description: Base64工具 - * @date 2019-12-31 16:22 - */ -public class Base64ConvertUtil { - - - private static final String DEFAULT_CHARSET_NAME = "utf-8"; - - /** - * 加密JDK1.8 - * @param str - * @return - * @throws UnsupportedEncodingException - */ - public static String encode(String str) throws UnsupportedEncodingException { - byte[] encodeBytes = Base64.getEncoder().encode(str.getBytes(DEFAULT_CHARSET_NAME)); - return new String(encodeBytes); - } - - /** - * 解密JDK1.8 - * @param str - * @return - * @throws UnsupportedEncodingException - */ - public static String decode(String str) throws UnsupportedEncodingException { - byte[] decodeBytes = Base64.getDecoder().decode(str.getBytes(DEFAULT_CHARSET_NAME)); - return new String(decodeBytes); - } - -} +package com.bupt.springboot.utils; + +import java.io.UnsupportedEncodingException; +import java.util.Base64; + + +/** + * @author LST + * @version 1.0 + * @Description: Base64工具 + * @date 2019-12-31 16:22 + */ +public class Base64ConvertUtil { + + + private static final String DEFAULT_CHARSET_NAME = "utf-8"; + + /** + * 加密JDK1.8 + * @param str + * @return + * @throws UnsupportedEncodingException + */ + public static String encode(String str) throws UnsupportedEncodingException { + byte[] encodeBytes = Base64.getEncoder().encode(str.getBytes(DEFAULT_CHARSET_NAME)); + return new String(encodeBytes); + } + + /** + * 解密JDK1.8 + * @param str + * @return + * @throws UnsupportedEncodingException + */ + public static String decode(String str) throws UnsupportedEncodingException { + byte[] decodeBytes = Base64.getDecoder().decode(str.getBytes(DEFAULT_CHARSET_NAME)); + return new String(decodeBytes); + } + +} diff --git a/src/main/java/com/bupt/springboot/utils/DateUtil.java b/src/main/java/com/bupt/springboot/utils/DateUtil.java index 642a834d16ee7982da83f7fcf713ef46e807725c..e7269be81cae9f2bb0a299854606d6d243c62f12 100644 --- a/src/main/java/com/bupt/springboot/utils/DateUtil.java +++ b/src/main/java/com/bupt/springboot/utils/DateUtil.java @@ -1,24 +1,24 @@ -package com.bupt.springboot.utils; - -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * @author 13 - * @qq交流群 796794009 - * @email 2449207463@qq.com - * @link http:13blog.site - */ -public class DateUtil { - - /** - * 格式化date - * - * @param date - * @return - */ - public static String getDateString(Date date) { - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - return formatter.format(date); - } -} +package com.bupt.springboot.utils; + +import java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author 13 + * @qq交流群 796794009 + * @email 2449207463@qq.com + * @link http:13blog.site + */ +public class DateUtil { + + /** + * 格式化date + * + * @param date + * @return + */ + public static String getDateString(Date date) { + SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return formatter.format(date); + } +} diff --git a/src/main/java/com/bupt/springboot/utils/HexConvertUtil.java b/src/main/java/com/bupt/springboot/utils/HexConvertUtil.java index 5edfd858c0da93cf76ef2daa3be4c4c758cdc074..84a1ed8a7c11c99fec1b55d284d0884793d95d08 100644 --- a/src/main/java/com/bupt/springboot/utils/HexConvertUtil.java +++ b/src/main/java/com/bupt/springboot/utils/HexConvertUtil.java @@ -1,60 +1,60 @@ -package com.bupt.springboot.utils; - - -/** - * @author LST - * @version 1.0 - * @Description: 进制转换工具 - * @date 2019-12-31 16:22 - */ -public class HexConvertUtil { - - /** - * 1 - */ - private static final Integer INTEGER_1 = 1; - - /** - * 2 - */ - private static final Integer INTEGER_2 = 2; - - /** - * 将二进制转换成16进制 - * @param bytes - * @return java.lang.String - * @author lst - * @date 2018/8/31 17:20 - */ - public static String parseByte2HexStr(byte[] bytes) { - StringBuffer sb = new StringBuffer(); - for (byte buff : bytes) { - String hex = Integer.toHexString(buff & 0xFF); - if (hex.length() == INTEGER_1) { - hex = '0' + hex; - } - sb.append(hex.toUpperCase()); - } - return sb.toString(); - } - - /** - * 将16进制转换为二进制 - * @param hexStr - * @return byte[] - * @author lst - * @date 2018/8/31 17:21 - */ - public static byte[] parseHexStr2Byte(String hexStr) { - if (hexStr.length() < INTEGER_1) { - return null; - } - byte[] result = new byte[hexStr.length() / INTEGER_2]; - for (int i = 0, len = hexStr.length() / INTEGER_2; i < len; i++) { - int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16); - int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16); - result[i] = (byte) (high * 16 + low); - } - return result; - } -} +package com.bupt.springboot.utils; + + +/** + * @author LST + * @version 1.0 + * @Description: 进制转换工具 + * @date 2019-12-31 16:22 + */ +public class HexConvertUtil { + + /** + * 1 + */ + private static final Integer INTEGER_1 = 1; + + /** + * 2 + */ + private static final Integer INTEGER_2 = 2; + + /** + * 将二进制转换成16进制 + * @param bytes + * @return java.lang.String + * @author lst + * @date 2018/8/31 17:20 + */ + public static String parseByte2HexStr(byte[] bytes) { + StringBuffer sb = new StringBuffer(); + for (byte buff : bytes) { + String hex = Integer.toHexString(buff & 0xFF); + if (hex.length() == INTEGER_1) { + hex = '0' + hex; + } + sb.append(hex.toUpperCase()); + } + return sb.toString(); + } + + /** + * 将16进制转换为二进制 + * @param hexStr + * @return byte[] + * @author lst + * @date 2018/8/31 17:21 + */ + public static byte[] parseHexStr2Byte(String hexStr) { + if (hexStr.length() < INTEGER_1) { + return null; + } + byte[] result = new byte[hexStr.length() / INTEGER_2]; + for (int i = 0, len = hexStr.length() / INTEGER_2; i < len; i++) { + int high = Integer.parseInt(hexStr.substring(i * 2, i * 2 + 1), 16); + int low = Integer.parseInt(hexStr.substring(i * 2 + 1, i * 2 + 2), 16); + result[i] = (byte) (high * 16 + low); + } + return result; + } +} diff --git a/src/main/java/com/bupt/springboot/utils/HttpContextUtils.java b/src/main/java/com/bupt/springboot/utils/HttpContextUtils.java index 49aaae873101b442a6a8c644a37bef6391b22acc..e76d344095d653b23b8bca8b09ac5b1337b34744 100644 --- a/src/main/java/com/bupt/springboot/utils/HttpContextUtils.java +++ b/src/main/java/com/bupt/springboot/utils/HttpContextUtils.java @@ -1,12 +1,12 @@ -package com.bupt.springboot.utils; - -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; - -public class HttpContextUtils { - public static HttpServletRequest getHttpServletRequest() { - return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - } -} +package com.bupt.springboot.utils; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; + +public class HttpContextUtils { + public static HttpServletRequest getHttpServletRequest() { + return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + } +} diff --git a/src/main/java/com/bupt/springboot/utils/IPUtils.java b/src/main/java/com/bupt/springboot/utils/IPUtils.java index b3fec9b525b8532b35a207eda7a6c17dc8b6b805..970a97de2bdfa88f3f8a29bbe0b34e4cd2c66c76 100644 --- a/src/main/java/com/bupt/springboot/utils/IPUtils.java +++ b/src/main/java/com/bupt/springboot/utils/IPUtils.java @@ -1,32 +1,32 @@ -package com.bupt.springboot.utils; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.servlet.http.HttpServletRequest; - -public class IPUtils { - private static Logger logger = LoggerFactory.getLogger(IPUtils.class); - - /** - * 获取IP地址 - * - * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 - * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 - */ - public static String getIpAddr(HttpServletRequest request) { - - String ip = request.getHeader("x-forwarded-for"); - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getRemoteAddr(); - } - return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; - } - -} +package com.bupt.springboot.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; + +public class IPUtils { + private static Logger logger = LoggerFactory.getLogger(IPUtils.class); + + /** + * 获取IP地址 + * + * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 + * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 + */ + public static String getIpAddr(HttpServletRequest request) { + + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; + } + +} diff --git a/src/main/java/com/bupt/springboot/utils/JSONUtils.java b/src/main/java/com/bupt/springboot/utils/JSONUtils.java index 7d185df91d2ec8658cd4a3f18b658e143fd1d844..1ee0559711c9579be2dc3bebc8248329a294a2f9 100644 --- a/src/main/java/com/bupt/springboot/utils/JSONUtils.java +++ b/src/main/java/com/bupt/springboot/utils/JSONUtils.java @@ -1,86 +1,86 @@ -package com.bupt.springboot.utils; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import org.apache.commons.lang3.StringUtils; - -import java.util.HashMap; -import java.util.Map; - -public class JSONUtils { - /** - * Bean对象转JSON - * - * @param object - * @param dataFormatString - * @return - */ - public static String beanToJson(Object object, String dataFormatString) { - if (object != null) { - if (StringUtils.isEmpty(dataFormatString)) { - return JSONObject.toJSONString(object); - } - return JSON.toJSONStringWithDateFormat(object, dataFormatString); - } else { - return null; - } - } - - /** - * Bean对象转JSON - * - * @param object - * @return - */ - public static String beanToJson(Object object) { - if (object != null) { - return JSON.toJSONString(object); - } else { - return null; - } - } - - /** - * String转JSON字符串 - * - * @param key - * @param value - * @return - */ - public static String stringToJsonByFastjson(String key, String value) { - if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) { - return null; - } - Map map = new HashMap(16); - map.put(key, value); - return beanToJson(map, null); - } - - /** - * 将json字符串转换成对象 - * - * @param json - * @param clazz - * @return - */ - public static Object jsonToBean(String json, Object clazz) { - if (StringUtils.isEmpty(json) || clazz == null) { - return null; - } - return JSON.parseObject(json, clazz.getClass()); - } - - /** - * json字符串转map - * - * @param json - * @return - */ - @SuppressWarnings("unchecked") - public static Map jsonToMap(String json) { - if (StringUtils.isEmpty(json)) { - return null; - } - return JSON.parseObject(json, Map.class); - } +package com.bupt.springboot.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; + +import java.util.HashMap; +import java.util.Map; + +public class JSONUtils { + /** + * Bean对象转JSON + * + * @param object + * @param dataFormatString + * @return + */ + public static String beanToJson(Object object, String dataFormatString) { + if (object != null) { + if (StringUtils.isEmpty(dataFormatString)) { + return JSONObject.toJSONString(object); + } + return JSON.toJSONStringWithDateFormat(object, dataFormatString); + } else { + return null; + } + } + + /** + * Bean对象转JSON + * + * @param object + * @return + */ + public static String beanToJson(Object object) { + if (object != null) { + return JSON.toJSONString(object); + } else { + return null; + } + } + + /** + * String转JSON字符串 + * + * @param key + * @param value + * @return + */ + public static String stringToJsonByFastjson(String key, String value) { + if (StringUtils.isEmpty(key) || StringUtils.isEmpty(value)) { + return null; + } + Map map = new HashMap(16); + map.put(key, value); + return beanToJson(map, null); + } + + /** + * 将json字符串转换成对象 + * + * @param json + * @param clazz + * @return + */ + public static Object jsonToBean(String json, Object clazz) { + if (StringUtils.isEmpty(json) || clazz == null) { + return null; + } + return JSON.parseObject(json, clazz.getClass()); + } + + /** + * json字符串转map + * + * @param json + * @return + */ + @SuppressWarnings("unchecked") + public static Map jsonToMap(String json) { + if (StringUtils.isEmpty(json)) { + return null; + } + return JSON.parseObject(json, Map.class); + } } \ No newline at end of file diff --git a/src/main/java/com/bupt/springboot/utils/JsonConvertUtil.java b/src/main/java/com/bupt/springboot/utils/JsonConvertUtil.java index 19c9d23bf4c6d73bd1cbdf2c839bb099c4bcfeec..7399ab11f0158f800e0b07c928c405c0cd0e98e6 100644 --- a/src/main/java/com/bupt/springboot/utils/JsonConvertUtil.java +++ b/src/main/java/com/bupt/springboot/utils/JsonConvertUtil.java @@ -1,33 +1,33 @@ -package com.bupt.springboot.utils; - -import com.alibaba.fastjson.JSONObject; - -/** - * @author LST - * @version 1.0 - * @Description: Json和Object的互相转换,转List必须Json最外层加[],转Object,Json最外层不要加[] - * @date 2019-12-31 16:22 - */ -public class JsonConvertUtil { - - /** - * JSON 转 Object - * @param pojo - * @param clazz - * @param - * @return - */ - public static T jsonToObject(String pojo, Class clazz) { - return JSONObject.parseObject(pojo, clazz); - } - - /** - * Object 转 JSON - * @param t - * @param - * @return - */ - public static String objectToJson(T t){ - return JSONObject.toJSONString(t); - } -} +package com.bupt.springboot.utils; + +import com.alibaba.fastjson.JSONObject; + +/** + * @author LST + * @version 1.0 + * @Description: Json和Object的互相转换,转List必须Json最外层加[],转Object,Json最外层不要加[] + * @date 2019-12-31 16:22 + */ +public class JsonConvertUtil { + + /** + * JSON 转 Object + * @param pojo + * @param clazz + * @param + * @return + */ + public static T jsonToObject(String pojo, Class clazz) { + return JSONObject.parseObject(pojo, clazz); + } + + /** + * Object 转 JSON + * @param t + * @param + * @return + */ + public static String objectToJson(T t){ + return JSONObject.toJSONString(t); + } +} diff --git a/src/main/java/com/bupt/springboot/utils/MD5Util.java b/src/main/java/com/bupt/springboot/utils/MD5Util.java index c8b8bbb2fe68bb79abcbf9acd7c214205ed66f0e..7644f49df52e4c7fb1c931d5f22644227ed74d20 100644 --- a/src/main/java/com/bupt/springboot/utils/MD5Util.java +++ b/src/main/java/com/bupt/springboot/utils/MD5Util.java @@ -1,51 +1,51 @@ -package com.bupt.springboot.utils; - -import java.security.MessageDigest; - -/** - * @author 13 - * @qq交流群 796794009 - * @email 2449207463@qq.com - * @link http:13blog.site - */ -public class MD5Util { - - private static String byteArrayToHexString(byte b[]) { - StringBuffer resultSb = new StringBuffer(); - for (int i = 0; i < b.length; i++) { - resultSb.append(byteToHexString(b[i])); - } - - return resultSb.toString(); - } - - private static String byteToHexString(byte b) { - int n = b; - if (n < 0) { - n += 256; - } - int d1 = n / 16; - int d2 = n % 16; - return hexDigits[d1] + hexDigits[d2]; - } - - public static String MD5Encode(String origin, String charsetname) { - String resultString = null; - try { - resultString = new String(origin); - MessageDigest md = MessageDigest.getInstance("MD5"); - if (charsetname == null || "".equals(charsetname)) { - resultString = byteArrayToHexString(md.digest(resultString - .getBytes())); - } else { - resultString = byteArrayToHexString(md.digest(resultString - .getBytes(charsetname))); - } - } catch (Exception exception) { - } - return resultString; - } - - private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5", - "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; -} +package com.bupt.springboot.utils; + +import java.security.MessageDigest; + +/** + * @author 13 + * @qq交流群 796794009 + * @email 2449207463@qq.com + * @link http:13blog.site + */ +public class MD5Util { + + private static String byteArrayToHexString(byte b[]) { + StringBuffer resultSb = new StringBuffer(); + for (int i = 0; i < b.length; i++) { + resultSb.append(byteToHexString(b[i])); + } + + return resultSb.toString(); + } + + private static String byteToHexString(byte b) { + int n = b; + if (n < 0) { + n += 256; + } + int d1 = n / 16; + int d2 = n % 16; + return hexDigits[d1] + hexDigits[d2]; + } + + public static String MD5Encode(String origin, String charsetname) { + String resultString = null; + try { + resultString = new String(origin); + MessageDigest md = MessageDigest.getInstance("MD5"); + if (charsetname == null || "".equals(charsetname)) { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes())); + } else { + resultString = byteArrayToHexString(md.digest(resultString + .getBytes(charsetname))); + } + } catch (Exception exception) { + } + return resultString; + } + + private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5", + "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; +} diff --git a/src/main/java/com/bupt/springboot/utils/ShiroUtils.java b/src/main/java/com/bupt/springboot/utils/ShiroUtils.java index 59d4b7436788a1145e937f5a600221690beabe0c..cdc728eea5a05d04e062e6d96c6d04a7d4a8e9db 100644 --- a/src/main/java/com/bupt/springboot/utils/ShiroUtils.java +++ b/src/main/java/com/bupt/springboot/utils/ShiroUtils.java @@ -1,16 +1,16 @@ -package com.bupt.springboot.utils; - -import org.apache.shiro.SecurityUtils; -import org.apache.shiro.subject.Subject; - -public class ShiroUtils { - - public static Subject getSubjct() { - return SecurityUtils.getSubject(); - } - - public static void logout() { - getSubjct().logout(); - } - +package com.bupt.springboot.utils; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.subject.Subject; + +public class ShiroUtils { + + public static Subject getSubjct() { + return SecurityUtils.getSubject(); + } + + public static void logout() { + getSubjct().logout(); + } + } \ No newline at end of file diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 98856862159df0f6d0927590302ab81d43dfc3d9..ca9cb067904d0c2f5ed172d36c393490a9d2cc47 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,65 +1,65 @@ -spring: - datasource: - url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false - username: root - password: gaolu666 - driver-class-name: com.mysql.cj.jdbc.Driver - data: - redis: - repositories: - enabled: false - redis: - database: 0 # redis数据库索引(默认为0),我们使用索引为其他(0-15)的数据库,避免和其他数据库冲突 - host: 127.0.0.1 - port: 6379 - password: - resources: - static-locations: classpath:/static #这个配置项告诉springboot去哪找资源 最关键的地方 - servlet: - multipart: - enabled: true - max-file-size: 10MB #允许上传的文件大小 - max-request-size: 10MB - thymeleaf: - cache: false - prefix: classpath:/templates/ - suffix: .html - encoding: UTF-8 - mode: HTML5 - context-type: text/html - mvc: - view: - prefix: / - suffix: .html - static-path-pattern: /** #这个配置告诉springboot,应该以什么方式去找资源,默认是/* -mybatis-plus: - mapper-locations: classpath*:com.example.demo.mapper/*.xml - global-config: - db-config: - id-type: uuid - field-strategy: not_null - refresh: true - configuration: - map-underscore-to-camel-case: true - log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - -server: - port: 8083 -logging: - config: classpath:logback-spring.xml - -shiro: - # AES密码加密私钥(Base64加密) - encryptAESKey: V2FuZzkyNjQ1NGRTQkFQSUpXVA== - # JWT认证加密私钥(Base64加密) - encryptJWTKey: U0JBUElKV1RkV2FuZzkyNjQ1NA== - # AccessToken过期时间-5分钟-5*60(秒为单位) - accessTokenExpireTime: 3600 - # RefreshToken过期时间-60分钟-30*60(秒为单位) - refreshTokenExpireTime: 3600 - # Shiro缓存过期时间-5分钟-5*60(秒为单位)(一般设置与AccessToken过期时间一致) - shiroCacheExpireTime: 3600 - # 是否需要开启任何请求必须登录才可访问,开发时候可以为false,生产与测试必须为true - mustLoginFlag: true - #shiro排除过滤url,多个用,分割 - excludeUrl: +spring: + datasource: + url: jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false + username: root + password: gaolu666 + driver-class-name: com.mysql.cj.jdbc.Driver + data: + redis: + repositories: + enabled: false + redis: + database: 0 # redis数据库索引(默认为0),我们使用索引为其他(0-15)的数据库,避免和其他数据库冲突 + host: 127.0.0.1 + port: 6379 + password: + resources: + static-locations: classpath:/static #这个配置项告诉springboot去哪找资源 最关键的地方 + servlet: + multipart: + enabled: true + max-file-size: 10MB #允许上传的文件大小 + max-request-size: 10MB + thymeleaf: + cache: false + prefix: classpath:/templates/ + suffix: .html + encoding: UTF-8 + mode: HTML5 + context-type: text/html + mvc: + view: + prefix: / + suffix: .html + static-path-pattern: /** #这个配置告诉springboot,应该以什么方式去找资源,默认是/* +mybatis-plus: + mapper-locations: classpath*:com.example.demo.mapper/*.xml + global-config: + db-config: + id-type: uuid + field-strategy: not_null + refresh: true + configuration: + map-underscore-to-camel-case: true + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + +server: + port: 8083 +logging: + config: classpath:logback-spring.xml + +shiro: + # AES密码加密私钥(Base64加密) + encryptAESKey: V2FuZzkyNjQ1NGRTQkFQSUpXVA== + # JWT认证加密私钥(Base64加密) + encryptJWTKey: U0JBUElKV1RkV2FuZzkyNjQ1NA== + # AccessToken过期时间-5分钟-5*60(秒为单位) + accessTokenExpireTime: 3600 + # RefreshToken过期时间-60分钟-30*60(秒为单位) + refreshTokenExpireTime: 3600 + # Shiro缓存过期时间-5分钟-5*60(秒为单位)(一般设置与AccessToken过期时间一致) + shiroCacheExpireTime: 3600 + # 是否需要开启任何请求必须登录才可访问,开发时候可以为false,生产与测试必须为true + mustLoginFlag: true + #shiro排除过滤url,多个用,分割 + excludeUrl: diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index e59f98e13445e79fcb3e8fc101e52727d8f0dba3..3bed980ffb09996ef923a1b5c5e66773fbdccf80 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -1,123 +1,123 @@ - - - logback - - - - - - - - - - %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n - - - - - - ${path}/logback_debug.log - - - ${path}/logback_debug.log.%d{yyyy-MM-dd}-%i.zip - ${maxHistory} - - ${maxFileSize} - - - - %date %level [%thread] %logger{36} [%file : %line] %msg%n - - - - DEBUG - ACCEPT - DENY - - - - - - - ${path}/logback_info.log - - - ${path}/logback_info.log.%d{yyyy-MM-dd}-%i.zip - ${maxHistory} - - ${maxFileSize} - - - - %date %level [%thread] %logger{36} [%file : %line] %msg%n - - - - INFO - ACCEPT - DENY - - - - - - - ${path}/logback_warn.log - - - ${path}/logback_warn.log.%d{yyyy-MM-dd}-%i.zip - ${maxHistory} - - ${maxFileSize} - - - - %date %level [%thread] %logger{36} [%file : %line] %msg%n - - - - WARN - ACCEPT - DENY - - - - - - ${path}/logback_error.log - - - ${path}/logback_error.log.%d{yyyy-MM-dd}-%i.zip - ${maxHistory} - - ${maxFileSize} - - - - %date %level [%thread] %logger{36} [%file : %line] %msg%n - - - - ERROR - ACCEPT - DENY - - - - - - - - - - - - - + + + logback + + + + + + + + + + %d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n + + + + + + ${path}/logback_debug.log + + + ${path}/logback_debug.log.%d{yyyy-MM-dd}-%i.zip + ${maxHistory} + + ${maxFileSize} + + + + %date %level [%thread] %logger{36} [%file : %line] %msg%n + + + + DEBUG + ACCEPT + DENY + + + + + + + ${path}/logback_info.log + + + ${path}/logback_info.log.%d{yyyy-MM-dd}-%i.zip + ${maxHistory} + + ${maxFileSize} + + + + %date %level [%thread] %logger{36} [%file : %line] %msg%n + + + + INFO + ACCEPT + DENY + + + + + + + ${path}/logback_warn.log + + + ${path}/logback_warn.log.%d{yyyy-MM-dd}-%i.zip + ${maxHistory} + + ${maxFileSize} + + + + %date %level [%thread] %logger{36} [%file : %line] %msg%n + + + + WARN + ACCEPT + DENY + + + + + + ${path}/logback_error.log + + + ${path}/logback_error.log.%d{yyyy-MM-dd}-%i.zip + ${maxHistory} + + ${maxFileSize} + + + + %date %level [%thread] %logger{36} [%file : %line] %msg%n + + + + ERROR + ACCEPT + DENY + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 3f401d6cfae8e8db442545bcf7000a5a09ffe003..f78d74c4716e4237962419bd901d85724764b8d2 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -1,17 +1,17 @@ - - - - - 主页 - - -Hello shiyanlou! -
-看到该页面证明登录实验成功! - - - - - - + + + + + 主页 + + +Hello shiyanlou! +
+看到该页面证明登录实验成功! + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/plugins/jqgrid-5.3.0/jquery.jqGrid.js b/src/main/resources/static/plugins/jqgrid-5.3.0/jquery.jqGrid.js index 785eb5a17756e4a7f82c9ff0acfe5d9c23a0f57b..22362309ea213abd96cd305ea98ad5fbf040d768 100644 --- a/src/main/resources/static/plugins/jqgrid-5.3.0/jquery.jqGrid.js +++ b/src/main/resources/static/plugins/jqgrid-5.3.0/jquery.jqGrid.js @@ -11721,683 +11721,683 @@ $.jgrid.extend({ } }); -//module begin -$.jgrid.extend({ - groupingSetup : function () { - return this.each(function (){ - var $t = this, i, j, cml, cm = $t.p.colModel, grp = $t.p.groupingView, - classes = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].grouping; - if(grp !== null && ( (typeof grp === 'object') || $.isFunction(grp) ) ) { - if(!grp.plusicon) { grp.plusicon = classes.icon_plus;} - if(!grp.minusicon) { grp.minusicon = classes.icon_minus;} - if(!grp.groupField.length) { - $t.p.grouping = false; - } else { - if (grp.visibiltyOnNextGrouping === undefined) { - grp.visibiltyOnNextGrouping = []; - } - - grp.lastvalues=[]; - if(!grp._locgr) { - grp.groups =[]; - } - grp.counters =[]; - for(i=0;i 0 ? nums[0] : undefined; - }, - itemGroupingLevel, - showData, - collapsed = false, - footLevel, - skip = false, - frz = $t.p.frozenColumns ? $t.p.id+"_frozen" : false, - tar2 = frz ? $("#"+$.jgrid.jqID(hid), "#"+$.jgrid.jqID(frz) ) : false, - r2 = (tar2 && tar2.length) ? tar2[0].nextSibling : null; - if( tarspan.hasClass(minus) ) { - if(r){ - while(r) { - itemGroupingLevel = getGroupingLevelFromClass(r.className); - if (itemGroupingLevel !== undefined && itemGroupingLevel <= num) { - break; - } - footLevel = parseInt($(r).attr("jqfootlevel") ,10); - skip = isNaN(footLevel) ? false : - (grp.showSummaryOnHide && footLevel <= num); - if( !skip) { - $(r).hide(); - } - r = r.nextSibling; - if(frz) { - if(!skip) { - $(r2).hide(); - } - r2 = r2.nextSibling; - } - } - } - tarspan.removeClass(minus).addClass(plus); - collapsed = true; - } else { - if(r){ - showData = undefined; - while(r) { - itemGroupingLevel = getGroupingLevelFromClass(r.className); - if (showData === undefined) { - showData = itemGroupingLevel === undefined; // if the first row after the opening group is data row then show the data rows - } - skip = $(r).hasClass("ui-subgrid") && $(r).hasClass("ui-sg-collapsed"); - if (itemGroupingLevel !== undefined) { - if (itemGroupingLevel <= num) { - break;// next item of the same lever are found - } - if (itemGroupingLevel === num + 1) { - if(!skip) { - $(r).show().find(">td>span."+"tree-wrap-"+$t.p.direction).removeClass(minus).addClass(plus); - if(frz) { - $(r2).show().find(">td>span."+"tree-wrap-"+$t.p.direction).removeClass(minus).addClass(plus); - } - } - } - } else if (showData) { - if(!skip) { - $(r).show(); - if(frz) { - $(r2).show(); - } - } - } - r = r.nextSibling; - if(frz) { - r2 = r2.nextSibling; - } - } - } - tarspan.removeClass(plus).addClass(minus); - } - $($t).triggerHandler("jqGridGroupingClickGroup", [hid , collapsed]); - if( $.isFunction($t.p.onClickGroup)) { $t.p.onClickGroup.call($t, hid , collapsed); } - - }); - return false; - }, - groupingRender : function (grdata, colspans, page, rn ) { - return this.each(function(){ - var $t = this, - grp = $t.p.groupingView, - str = "", icon = "", hid, clid, pmrtl = grp.groupCollapse ? grp.plusicon : grp.minusicon, gv, cp=[], len =grp.groupField.length, - //classes = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')]['grouping'], - common = $.jgrid.styleUI[($t.p.styleUI || 'jQueryUI')].common; - - pmrtl = pmrtl+" tree-wrap-"+$t.p.direction; - $.each($t.p.colModel, function (i,n){ - var ii; - for(ii=0;ii= 0; i--) { - if(grp[i].idx === id-offset) { - ret = grp[i]; - break; - } - } - } - } - return ret; - } - function buildSummaryTd(i, ik, grp, foffset) { - var fdata = findGroupIdx(i, ik, grp), - cm = $t.p.colModel, - vv, grlen = fdata.cnt, str="", k; - for(k=foffset; k ", - tplfld = "{0}"; - $.each(fdata.summary,function(){ - if(this.nm === cm[k].name) { - if(cm[k].summaryTpl) { - tplfld = cm[k].summaryTpl; - } - if(typeof this.st === 'string' && this.st.toLowerCase() === 'avg') { - if(this.sd && this.vd) { - this.v = (this.v/this.vd); - } else if(this.v && grlen > 0) { - this.v = (this.v/grlen); - } - } - try { - this.groupCount = fdata.cnt; - this.groupIndex = fdata.dataIndex; - this.groupValue = fdata.value; - vv = $t.formatter('', this.v, k, this); - } catch (ef) { - vv = this.v; - } - tmpdata= ""+$.jgrid.template(tplfld, vv, fdata.cnt, fdata.dataIndex, fdata.displayValue)+ ""; - return false; - } - }); - str += tmpdata; - } - return str; - } - var sumreverse = $.makeArray(grp.groupSummary), mul; - sumreverse.reverse(); - mul = $t.p.multiselect ? " colspan=\"2\"" : ""; - $.each(grp.groups,function(i,n){ - if(grp._locgr) { - if( !(n.startRow +n.cnt > (page-1)*rn && n.startRow < page*rn)) { - return true; - } - } - toEnd++; - clid = $t.p.id+"ghead_"+n.idx; - hid = clid+"_"+i; - icon = ""; - try { - if ($.isArray(grp.formatDisplayField) && $.isFunction(grp.formatDisplayField[n.idx])) { - gv = grp.formatDisplayField[n.idx].call($t, n.displayValue, n.value, $t.p.colModel[cp[n.idx]], n.idx, grp); - } else { - gv = $t.formatter(hid, n.displayValue, cp[n.idx], n.value ); - } - } catch (egv) { - gv = n.displayValue; - } - var grpTextStr = ''; - if($.isFunction(grp.groupText[n.idx])) { - grpTextStr = grp.groupText[n.idx].call($t, gv, n.cnt, n.summary); - } else { - grpTextStr = $.jgrid.template(grp.groupText[n.idx], gv, n.cnt, n.summary); - } - if( !(typeof grpTextStr ==='string' || typeof grpTextStr ==='number' ) ) { - grpTextStr = gv; - } - if(grp.groupSummaryPos[n.idx] === 'header') { - str += "0 ? " style=\"display:none;\" " : " ") + "role=\"row\" class= \"" + common.content + " jqgroup ui-row-"+$t.p.direction+" "+clid+"\">" + icon+grpTextStr + ""; - str += buildSummaryTd(i, 0, grp.groups, grp.groupColumnShow[n.idx] === false ? (mul ==="" ? 2 : 3) : ((mul ==="") ? 1 : 2) ); - str += ""; - } else { - str += "0 ? " style=\"display:none;\" " : " ") + "role=\"row\" class= \"" + common.content + " jqgroup ui-row-"+$t.p.direction+" "+clid+"\">" + icon + grpTextStr + ""; - } - var leaf = len-1 === n.idx; - if( leaf ) { - var gg = grp.groups[i+1], kk, ik, offset = 0, sgr = n.startRow, - end = gg !== undefined ? gg.startRow : grp.groups[i].startRow + grp.groups[i].cnt; - if(grp._locgr) { - offset = (page-1)*rn; - if(offset > n.startRow) { - sgr = offset; - } - } - for(kk=sgr;kk"; - str += buildSummaryTd(i, ik, grp.groups, 0); - str += ""; - } - toEnd = jj; - } - } - }); - $("#"+$.jgrid.jqID($t.p.id)+" tbody:first").append(str); - // free up memory - str = null; - }); - }, - groupingGroupBy : function (name, options ) { - return this.each(function(){ - var $t = this; - if(typeof name === "string") { - name = [name]; - } - var grp = $t.p.groupingView; - $t.p.grouping = true; - grp._locgr = false; - //Set default, in case visibilityOnNextGrouping is undefined - if (grp.visibiltyOnNextGrouping === undefined) { - grp.visibiltyOnNextGrouping = []; - } - var i; - // show previous hidden groups if they are hidden and weren't removed yet - for(i=0;i