build.gradle의 dependencies 부분에 추가
implementation 'io.springfox:springfox-swagger2'
implementation 'io.springfox:springfox-boot-swagger:3.0.0'
implementation 'io.springfox:springfox-swagger-ui:3.0.0'
그래서 막 코딩했다...배겼다......블로그도 보고 강의도 보고...마구마구...열심히 쳤다.
@EnableSwagger2
@Configuration
public class SwaggerConfiguration {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.boot.jeong.controller")) //기준이 될 내 패키지 기재
.paths(PathSelectors.any())
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("eunJeong.project.springBoot") // 제목같은거
.description("Eunjung's Spring Boot Do It Yourself") //스웨거가 먼지 설명
.version("2.9.2")
.build();
}
에러.....페이지 못찾는덴다...
// @EnableWebMvc //기재하신분이 계셨는데 막상 하니.....에러남....
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/swagger-ui/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/springfox-swagger-ui/")
.resourceChain(false);
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/swagger-ui/")
.setViewName("forward:/swagger-ui/index.html");
}
}
mvc패턴에선 이게 없으면 안된다고 하셔서 만들었는데 여기도에러나서
@ enableWebMvc는 삭제......이건 직접 mvc를 설정한다는뜻이라서 @Configuration과 같이 쓰지 않음.....그래서 삭제함
C:\shin_down\jdk11.0.17_8\bin>java -jar {C:\의 다운로드 경로}\Downloads\lombok-1.18.10.jar
실행하니 화면이 나온다...
아무 메세지 안떠서 그냥 엔터하니 종료되고 이클립스 재실행.,
시킨대로 eclipse.ini 갔더니...-vmargs에 문구없어서
-xbootclasspath/a:lombok.jar추가.
(-javaagent:lombok.jar)은 있었음.......재실행 ..동일 에러
An error has occurred. See error log for more details.
Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @30d5e37c
사실 db설치부터 굉장히 고생했다.. 오라클.....회사서 설치하니 방화벽 머시기 땜시 2일을 죽도로 삭제 - 재설치 - 삭제 재설치.......무한반복했는데 선배님 왈 """설정부터 안되는건 안되는건여요.....쉬운거 하세요...일도 아니고 연습인데.....""
한말씀에 깨달음을 얻고 myspl로 갈아 탔다...쉽게 잘됐다......
도움은 검색과 생활코딩에서 동영상 한번 봤으니깐 참고하시길....
다시설치할때는 요롷게 함...
일단 스프링 버전부터 낮게.....jsp파일을 일단할꺼니깐 war...자바 11
스프링 web , mysql, jpa 이런거 미리 걸어서 깔았더니 훨씬 좋다...ㅋㅋ
jsp 파일 상속할 저파일이 자동 설치되어 있다...jar로 시작해서 안보이던 jsp파일생성도 막 보인다..ㅋㅋ
1차에러
Multiple annotations found at this line: - cvc-complex-type.4: Attribute 'version' must appear on element 'web-app'. - Attribute: - version is required in element: - web-app Code:
검색해보니 버전 미설치라고 나옴
끝에 넣어주면 됨.mysql DB 관련해서 설정을 안했다.
Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
db설정을 안하고 넘어갔는데 빌드에서 걸렸다..
# MySQL 설정
spring.profiles.include=real-db
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL57InnoDBDialect
spring.session.store-type=jdbc
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
# DB Source URL
spring.datasource.url=jdbc:mysql://<IP>:<Port/<DB>?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul
# DB username
spring.datasource.username=<이름>
# DB password
spring.datasource.password=<비번>
# true 설정시 JPA 쿼리문 확인 가능
spring.jpa.show-sql=true
# DDL(create, alter, drop) 정의시 DB의 고유 기능을 사용할 수 있다.
spring.jpa.hibernate.ddl-auto=update
# JPA의 구현체인 Hibernate가 동작하면서 발생한 SQL의 가독성을 높여준다.
spring.jpa.properties.hibernate.format_sql=true
# Logging
logging.level.org.springframework.web=DEBUG
이렇게 넣어줌....검색의 감사함..고마움...행복함..^^
java.sql.SQLException: Access denied for user '이름'@'localhost' (using password: YES)
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.SQLGrammarException: Unable to open JDBC Connection for DDL execution
저는 계정이 설정이 안되었다고 해서...cmd창으로 계정의 설정 삭제...무한반복하다가...
mysql 동영상강좌.....생활코딩과 이수안님의 강좌를 거진 3시간에 걸쳐서 다시 듣고......오라클과 비슷하나 다른듯....^^
드뎌 오타를 발견했습니다!!!ㅜㅜ db명칭 잘못적었습니다....수정하니 됩니다...
저는 지금 4일째 오라클과 인터넷 계정(회사에서 했더만), jsp파일....다시 mysql을 거쳐서 제자리입니다.^^
spring.mvc.view.prefix: /WEB-INF/views/
spring.mvc.view.suffix: .jsp
server.servlet.jsp.init-parameters.development=true
#jsp 가능하능하도록 패키지 설정 및 jsp수정시 서버 재시작없이 바로 적용될 수 있게 설정
프로젝트생성시 메인이 들어간 JeongApplication.java에는
@SpringBootApplication
public class JeongApplication {
public static void main(String[] args) {
SpringApplication.run(JeongApplication.class, args);
System.out.println("부트 출력");
}
}
사실 jsp파일 넣기전까지 여기까지는 부트 작동이 잘되었는데 jsp한다고 설정넣기 시작하면서 에러와의 싸움이다.
여기서 잘안되니깐 jar를 war로 바꾼다...
@SpringBootApplication
public class JeongApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(JeongApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(JeongApplication.class, args);
System.out.println("부트 출력");
}
}
build.gradle에 plugins에 id 'war'를 넣어준다....
그랬더만. 위에 보였던....jsp파일에 에러가 잡힌다. ㅠㅠ
The superclass "javax.servlet.http.HttpServlet", determined from the Dynamic Web Module facet version (2.4), was not found on the Java Build Path
에러 내용...
검색시 httpServlet경로 오류하며
프로젝트 우클릭>Properties > Project Facets > Dynamic Web Module > Runtime 웹서버 체크하란다.
runtimes에 있는대로 설정해봄........재빌드했는데 에러 고대로...짜증...
프로젝트에 우클릭 serverRuntime이 없을 수 있다고 해서 들어갔더니 정말......추가해줌...
그런데 안되는거다..빌드도 다시하고 종료후 다시 해도 안되더니....어이없는 발견...
되는 jsp파일 있었던것이다.
비교해보시라.
아시겠는게....순서가 다르다.....이런 젠장...ㅠㅠ 욕나온다....
런실행하니...
java.lang.UnsupportedClassVersionError: org/springframework/boot/web/servlet/support/SpringBootServletInitializer has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55
에러 난다.
이유는 자바버전이 SpringBootServletInitializer(war로 변경하기 위해서 했던것)이라 안맞는다고 해서 17로 재설치 했떠니 톰캣하고 안맞는것이다.......너무 높댄다...
어제 하루동안 한일이 결국은 소용업는 일이 되고 말았다...
그래서 결국은 도합 12시간 밥머고, 쉬고, 잠자는 시간 빼고 했던 결국 2일치 일을 삭제하고...
@Getter
@Setter
@Builder
@NoArgsConstructor //JPA나 json parser 쓸때 꼭있어야하고
@AllArgsConstructor //생성자를 직접 선언하고 모든 생성자에 @Builder 쓸거아님...넣어야함/안넘에러
public class 강원도 {
private int 인구수;
private int 가수수;
private spring 시;
private spring 동;
private spring 길;
}
가정하자.......내고향 뽀록난다....다시짜기 귀찮으니 패스!
강원도 k = 강원도.builder()
.인구수(400000)
.가구수(400000)
.시("많은시")
.동("많은동")
.길("여러길")
.build();