반응형

log4j.properties 위치설정


- 절대경로에 의한 설정방법
    import org.apache.log4j.PropertyConfigurator;
    PropertyConfigurator.configure("C:\\log4j.properties");
    Log.debug("Log4j는 로그 찍기에 좋아요.");

- classpath의 최상위에 두는 방법


- web.xml에서 설정하는 방법
<context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
</context-param>

참고) http://egloos.zum.com/skywork/v/1138674

반응형

'java, spring' 카테고리의 다른 글

java time - Instant, LocalDate  (0) 2020.03.16
Lombok  (0) 2020.02.14
ChannelGenre enum관련 에러 (patch시 No validator could be found for constraint)  (0) 2020.01.14
Jwt Token Expire 주기 설정  (0) 2019.11.27
Spring pageation  (0) 2019.11.25
반응형

@Size(max = 5) 없애니까 patch시 No validator could be found for constraint

'javax.validation.constraints.Size' validating type..에러안남

반응형

'java, spring' 카테고리의 다른 글

Lombok  (0) 2020.02.14
Log4j  (0) 2020.02.13
Jwt Token Expire 주기 설정  (0) 2019.11.27
Spring pageation  (0) 2019.11.25
JPA ddl설정, queryDSL  (0) 2019.11.21
반응형

in application.yml

    #jwtExpirationInDay: 365 #에러남
    #jwtExpirationInSec: 365 #에러남
    #jwtExpirationInMs: 604800*1000 #=7days #에러남
    #jwtExpirationInMs:  864 00000 #=1days
    #jwtExpirationInMs: 6048 00000 #=7days
    #jwtExpirationInMs: 8640 00000 #=10days
    jwtExpirationInMs: '2147483647' #24.85day int 최대범위
    #jwtExpirationInMs: 86400 00000 #=100days #숫자가 커서 안들어감 string->int로 바뀌는듯

주기 더 늘이는 방법은??

반응형

'java, spring' 카테고리의 다른 글

Log4j  (0) 2020.02.13
ChannelGenre enum관련 에러 (patch시 No validator could be found for constraint)  (0) 2020.01.14
Spring pageation  (0) 2019.11.25
JPA ddl설정, queryDSL  (0) 2019.11.21
javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
반응형
  • (?) maxSize=67인데 이건 어디서 정해지는 건지? 아래에서 web.pageable.max-page-size: 67 요게작동하는듯

    spring:
    profiles:
        active: local
    datasource:
        jdbc-url: jdbc:mysql://localhost:3306/cdp?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false
        username: root
        password: root
    jpa:
        properties:
            hibernate.dialect: org.hibernate.dialect.MySQL5InnoDBDialect
        hibernate.ddl-auto: update
    jackson:
        serialization:
            WRITE_DATES_AS_TIMESTAMPS: false
        time-zone: UTC
    servlet:
        multipart:
            enabled: true
            file-size-threshold: 2KB
            max-file-size: 50MB
            max-request-size: 75MB
    data:
        rest:
            default-page-size: 57
            defaultPageSize: 77
    
  •  
  •  
  •  
  •  
  •  
  • org.springframework.data.domain.Pageable - request parameter로 받음
  • Defaulf 값은 org.springframework.data.web.PageableDefault annotation으로 설정
    • @PageableDefault(sort = {"provider.providerId", "programId"}, direction =Direction.ASC, size =AppConstants.DEFAULT_PAGE_SIZE_INT)
    • sort는 jpa model bean의 property 명이어야 함 (payload명이 아님)
    • sorting direction의 default는 ASC
    • default size는 application.yml에서 data.rest.default-page-size: 50 이렇게 설정가능하다고 함
  • 실제 request
  • Pageable 이 실제 구현되기 위해서는 Repository에서 적용이 되어야함
    • JpaRepository를 상속받아 그 내부 method를 구현하여 사용하면 됨
    • queryDSL의 경우, 코드에 적용해줘야 함

추가적으로 page가 0부터 시작하기 보다 1부터 시작하도록 변경한다던가 하고 싶다면 PageRequest class를 만들어 사용하면 됨

참고: https://cheese10yun.github.io/spring-jpa-best-12/

반응형
반응형

spring:

    profileslocal

    jpa:

        hibernate.ddl-autocreate-drop # update

        #none : 기본 값이며 아무 일도 일어나지 않는다.

        #create-only : 데이터베이스를 새로 생성한다.

        #drop : 데이터베이스를 drop 한다.

        #create : 데이터베이스를 drop 한 후, 데이터베이스를 새로 생성한다.(기능적으로는 drop + create-only와 같다)

        #create-drop : SessionFactory가 시작될 때 스키마를 drop하고 재생성하며, SessionFactory가 종료될 때도 스키마를 drop 한다.

        #validate : 데이터베이스 스키마를 검증 한다.

        #update : 데이터베이스 스키마를 갱신 한다.


<Before - join>

@Override
  public Page<Program> findDynamicQuery(Pageable pageable, String providerId, String programName) {

    JPQLQuery<Program> query = queryFactory.selectFrom(program).distinct()
        .join(program.multiLanguageList, programMultiLanguage)
        .on(program.eq(programMultiLanguage.program))
        .where(likeProviderId(providerId), likeProgramTitle(programName))
        .offset(pageable.getOffset()).limit(pageable.getPageSize());

    PathBuilder<Program> entityPath = new PathBuilder<>(Program.class, "program");
    for (Sort.Order o : pageable.getSort()) {
      PathBuilder<Object> path = entityPath.get(o.getProperty());
      query.orderBy(new OrderSpecifier(Order.valueOf(o.getDirection().name()), path));
    }

    QueryResults<Program> results = query.fetchResults();
    return new PageImpl<>(results.getResults(), pageable, results.getTotal());
  }

  private BooleanExpression likeProgramTitle(String programTitle) {
    if ("".equals(programTitle)) {
      return null;
    }
    return programMultiLanguage.title.like("%" + programTitle + "%");
  }

<After - join안하고 더 간단히>

@SuppressWarnings("unchecked")
  @Override
  public Page<Program> findDynamicQuery2(Pageable pageable, String providerId, String programName) {

    // order by 조건이 먼저 붙어야 할 수도 있을듯, 확인해봐야함
    JPQLQuery<Program> query = queryFactory.selectFrom(program)
        .where(likeProviderId(providerId), likeProgramTitle2(programName))
        .offset(pageable.getOffset()).limit(pageable.getPageSize());

    PathBuilder<Program> entityPath = new PathBuilder<>(Program.class, "program");
    for (Sort.Order o : pageable.getSort()) {
      PathBuilder<Object> path = entityPath.get(o.getProperty());
      query.orderBy(new OrderSpecifier(Order.valueOf(o.getDirection().name()), path));
    }

    QueryResults<Program> results = query.fetchResults();
    return new PageImpl<>(results.getResults(), pageable, results.getTotal());
  }
  
  private BooleanExpression likeProgramTitle2(String programTitle) {
    if ("".equals(programTitle)) {
      return null;
    }
    return program.multiLanguageList.any().title.like("%" + programTitle + "%");
  }

 

query구하고 실행까지 하려면

select는 query.fetch(), update는 query.update() 이런식으로 가능함

 

com.lge.cdp.model.QChannel.channel를 찾을 수 없다는 에러가 뜬다면

cdp-web/.classpath파일을 열어 아래 항목을 추가하면 됩니다.

<classpathentry kind="src" path="target/generated-sources/java">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="ignore_optional_problems" value="true"/>
            <attribute name="m2e-apt" value="true"/>
        </attributes>
    </classpathentry>

반응형

'java, spring' 카테고리의 다른 글

Jwt Token Expire 주기 설정  (0) 2019.11.27
Spring pageation  (0) 2019.11.25
javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
spring error  (0) 2019.06.14
spring  (0) 2019.06.12
반응형
반응형

'java, spring' 카테고리의 다른 글

Spring pageation  (0) 2019.11.25
JPA ddl설정, queryDSL  (0) 2019.11.21
spring error  (0) 2019.06.14
spring  (0) 2019.06.12
spring security...  (0) 2019.06.11
반응형

* [{},{},] 이렇게 json 잘못 요청하면
400 Bad Request
"JSON parse error: Unexpected character (']' (code 93)): expected a value; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Unexpected character (']' (code 93)): expected a value\n at [Source: (PushbackInputStream); line: 108, column: 3] (through reference chain: java.lang.Object[][2]))"

반응형

'java, spring' 카테고리의 다른 글

JPA ddl설정, queryDSL  (0) 2019.11.21
javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
spring  (0) 2019.06.12
spring security...  (0) 2019.06.11
jpa ...  (0) 2019.03.08
반응형
반응형

'java, spring' 카테고리의 다른 글

javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
spring error  (0) 2019.06.14
spring security...  (0) 2019.06.11
jpa ...  (0) 2019.03.08
spring JPA 환경설정  (0) 2019.02.28
반응형

HttpServletRequest.servletRequest.isUserInRole("ADMIN")

Returns a <code>java.security.Principal</code> object containing the name

* of the current authenticated user. If the user has not been

* authenticated, the method returns <code>null</code>

흠..어떻게 동작하는건지...

 

spring JwtAuthenticationFilter 401 unauthorized 안나도록 하기 위해 뭔가 처리를 해주니까 적용이 됬는데...
어떤 method 내용을 주석처리하고 대신 http.csrf.....이런거 추가했던거 같은데
정확히 기억이 안남 ㅠㅠ

http.csrf().disable(); 이거였던듯
(https://cnpnote.tistory.com/entry/SPRING-Spring-Boot-401-Unauthorized-%EB%B3%B4%EC%95%88-%EA%B8%B0%EB%8A%A5-%EC%97%86%EC%9D%8C)

SecurityConfig extends WebSecurityConfigurerAdapter

@Override
protected void configure(HttpSecurity http) throws Exception {
/////요부분이었던듯
///// permitAll로는 해결안되었고 http.crsf().xxxxxx로 해결되었던거 같음

http.cors().and().csrf().disable().exceptionHandling()
.authenticationEntryPoint(unauthorizedHandler).and().sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests()
.antMatchers("/", "/favicon.ico", "/manifest.json", "/**/*.png", "/**/*.gif",
"/**/*.svg", "/**/*.jpg", "/**/*.html", "/**/*.css", "/**/*.js")
.permitAll().antMatchers("/api/auth/**").permitAll()
.antMatchers("/api/users/checkUsernameAvailability",
"/api/users/checkEmailAvailability")
.permitAll().anyRequest().authenticated();


// Add our custom JWT security filter
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);


}

https://stackoverflow.com/questions/52904227/spring-security-401-unauthorized-even-with-permitall

반응형

'java, spring' 카테고리의 다른 글

javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
spring error  (0) 2019.06.14
spring  (0) 2019.06.12
jpa ...  (0) 2019.03.08
spring JPA 환경설정  (0) 2019.02.28
반응형

Spring-JPA

JPQL

JPA column ordering

* column 순서조정할 방법 생각해보자
* boolean은 bit(1)로 변환됨, 그런데 이게 default 0인지 아니면 실제 0인지 알수가 없음
* useFlag,captionFlag 등 boolean 기본값 0들어가고 있음
* varchar 길이조정 - 기존에는 varchar(1)? char(1) char(1)
* java long,int에는 null이 못들어감
* @Column(updatable = false): mysql update가능함 무슨의미가 있음?

* mySQL char, varchar, bit, int에는 null가능? 가능함
* mySQL char에 ''가능? 가능함
* mySQL char에 더 적은 스트링도 들어감, 다만 공간을 그만큼 쓰는듯
* mySQL bit, int에 ''가능? 가능함 근데 1 warning(s): 1366 Incorrect integer value ''이 0으로 들어감

hibernate ddl 설정
https://github.com/HomoEfficio/dev-tips/blob/master/hibernate.hbm2ddl.auto%20%EC%9C%84%ED%97%98%20%ED%97%B7%EC%A7%80.md
http://egloos.zum.com/gyumee/v/2483659

JPA entity, domain의 의미

http://www.javajigi.net/pages/viewpage.action?pageId=5924

[

JPA에 대한 소개, 활용방안, Spring 프레임워크와 통합 - 오픈 소스 스터디 - Confluence

주제선정할때 그냥 제일 마지막에 있는놈을 찍는 다는것이 JPA를 선택하게 되었군요 ㅎ 준비할 시간을 많이 가지자는 의미에서 마지막을 선택한건데.. 결국 스터디 3일전에야 문서를 작성하고 책을 보기 시작하는군요 하하 다음부터는 먼저 맞는 매가 덜아프다는 선조들의 가르침을 따라야 할듯 합니다 ^^ 현재 개최되고 있는 SUN TECH DAY 2006 의 본행사 - Day 2 에 심층세션으로 ''EJB 3.0과 Java Persistence API: Persistence 단순화''라는 주제가 발표 됩니다. 본 스터디를 진행하신 후에 좀더 ...

www.javajigi.net

](http://www.javajigi.net/pages/viewpage.action?pageId=5924)

https://www.slideshare.net/zipkyh/spring-datajpa?next_slideshow=1

코드에 집중할 수 있다면 - 유지보수, 테스트, 디버깅, 객체지향

SpringDataJPA - 스프링 캠프 *from *Younghan Kim

docker https://subicura.com/2017/01/19/docker-guide-for-beginners-1.html

반응형

'java, spring' 카테고리의 다른 글

javax.validation.constraints.NotBlank vs NotNull  (0) 2019.11.12
spring error  (0) 2019.06.14
spring  (0) 2019.06.12
spring security...  (0) 2019.06.11
spring JPA 환경설정  (0) 2019.02.28

+ Recent posts