Autowired란?

빈에서 다른 빈의 의존성을 주입하는것이다.

즉, A bean이 B bean을 사용하려면 @Autowired해준다.

 

Autowired된 bean을 먼저 생성한다. 생각해보면 먼저 생성되어있어야 사용할 수 있다.

@Component
public class BookServiceRunner implements ApplicationRunner {

    //BookService를 사용한다.
    @Autowired
    BookService bookService;

    public void run(ApplicationArguments args) throws Exception{
        bookService.printBookRepository();
    }
}

 

기본적으로는 Autowired를 사용하면 의존성이 있어야하므로 bean으로 등록되어있어야한다.

 

필드,setter에선 (required = false) 으로 의존성을 강제하지 않을 수 있다.

필드에 사용하는것과 생성자에 사용하는건 약간다르다.

    //BookService를 사용한다.
    //의존성 강제 설정해체
    @Autowired (required = false)
    BookService bookService;

 

또 repository가 여러개일 경우 충돌이 난다. 

이럴땐 @Primary나 @Qualifier("huBookRepository")로 강제해주어야한다.

Primary형식

//Primary형식
@Repository @Primary
public class MyBookRepository implements BookRepository {
    @Override
    @PostConstruct
    public void setUp() {
        System.out.println("MyBookRepository");
    }
}

Qualifier형식

    //Qualifier형식
    @Autowired @Qualifier("myBookRepository")
    BookRepository bookRepository;

아니면 모두 사용하고 싶을 경우 LIst형식으로 받을 수 있다.

    @Autowired
    List<BookRepository> bookRepository;

LOG를 찍어보게되면 BookRepository를 implements한 클래스가 모두 나온다

@Service
public class BookService {

    @Autowired
    List<BookRepository> bookRepository;

    public void printBookRepository(){
        this.bookRepository.forEach(System.out::println);
        System.out.println(bookRepository.getClass());
    }
}

인스턴스 생성될때 동작하기 

@Repository
public class MyBookRepository extends TestExtends implements BookRepository  {
    @Override
    @PostConstruct
    public void setUp() {
        System.out.println("MyBookRepository");
    }
}

 

 

 

 

@Component와 컴포넌트 스캔

Component는 스프링 3.1부터 적용되었다.

 

@Component를 사용할 경우 IOC컨테이너에 bean으로 등록한다.

@Service,@Repository,@Controller등 여러가지 애노테이션엔

@Component가 포함되어있다.

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component //Service에 등록되어있는 Component
public @interface Service {
    @AliasFor(
        annotation = Component.class
    )
    String value() default "";
}

ComponentScan

여러가지 bean들을 검색하고 IOC컨테이너에 적재한다.

 

스프링부트에선 @SpringBootApplication가 시작지점이 된다.

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

SpringBootApplication 내부 모습

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
    excludeFilters = {@Filter(
    type = FilterType.CUSTOM,
    classes = {TypeExcludeFilter.class}
), @Filter(
    type = FilterType.CUSTOM,
    classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {

 

@SpringBootApplication 이하의 모든 클래스가 @ComponentScan

(basePackages,basePackageClasses)에 의해 컴포넌트 스캔이된다.

 

만약 개발할때 bean주입이 안되면 컴포넌트 스캔위치를 살펴봐야한다.

모든걸 bean으로 등록하는것이 아니라 필터로 걸러낼 수 있다.

 

, 빈을 다등록하는게 부담된다면 펑션으로 특정빈만 등록할 있다.

'개발 소발 > 개발 Spring' 카테고리의 다른 글

Spring Environment 기초 사용방법  (0) 2020.07.13
Spring Scope란?  (0) 2020.07.13
AOP란? AOP 기초개념  (0) 2020.07.09
Spring IoC(Inversion of Control),Bean,의존성주입이란?  (0) 2020.07.08
프레임워크 개념  (0) 2018.01.26

AOP

Aspect(관심사)

공통된 관심사?로 이해하면 쉽다.

 

여러 클래스에서 같은 로직(관심사)이 실행될 때 사용한다.

 

공통적인 로직을 클래스에 하나하나 추가하지 않고 별도의 클래스로 생성한다.

 

예를 들어 모든 로직의 수행시간을 측정하려고 한다.

//시작

StopWatch sw = new StopWatch();

sw.start();

//여러가지 로직들

//끝

sw.stop();

System.out.println(sw.prettyPrint());

 

공통된 로직이 모두 들어간다.

 

공통된 로직을 분리 후 실행하는방법

 

-컴파일

컴파일할때 코드를 넣어준다.

 

-바이트코드 조작

A.java -> A.Class 하고 실행 시 클래스 로더가 메모리에 올릴 때 조작한다.

 

컴파일, 바이트코드 조작의 차이점 코드가 아닌 메모리에 올라간다.

두 개다 AspectJ가 지원한다.

 

-프록시패턴(스프링AOP)

인터페이스 implements를 통해 구현한다. 

한번 더 감싸는 구조로 생각하면 쉽다.

 

(

공통 로직

(실행 로직)

공통 로직

)

자동으로 bean 등록될 때 만들어진다.

 

 

애노테이션을 사용하여 AOP 적용한 예제

@LogExecutionTime을 만들어보기

@GetMapping("/owners/find")

//만들 애노테이션 명

@LogExecutionTime

public String initFindForm(Map<String, Object> model) {

model.put("owner", new Owner());

return "owners/findOwners";

}

 

구현할 애노테이션 생성

@Target(ElementType.METHOD)

@Retention(RetentionPolicy.RUNTIME)

public @interface LogExecutionTime {

}

 

 

@Around로 ProceedingJoinPoint를 파라미터로 받는다.

ProceedingJoinPoint는 애노테이션을 설정한 타깃을 말한다.

즉 애노테이션 달려있는 메서드!

//bean으로 등록

@Component

//Aspect 설정

@Aspect

public class LogAspect {



Logger logger = LoggerFactory.getLogger(LogAspect.class);



@Around("@annotation(LogExecutionTime)")

public Object LogExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable{

StopWatch sw =new StopWatch();

sw.start();

//위애 애노테이션 달려있는 메소드 실행

Object procced= joinPoint.proceed();



sw.stop();

logger.info(sw.prettyPrint());



return procced;

}

}

 

같은 로직인데 여러 군데 들어간다면 AOP를 활용하는 게 좋다.

애노테이션을 쓰지 않는 방법도 있다.

여러 가지방법과 사용방법이 존재한다.

'개발 소발 > 개발 Spring' 카테고리의 다른 글

Spring Scope란?  (0) 2020.07.13
Spring Autowired와 ComponentScan이란  (0) 2020.07.10
Spring IoC(Inversion of Control),Bean,의존성주입이란?  (0) 2020.07.08
프레임워크 개념  (0) 2018.01.26
SpringMVC란?  (0) 2018.01.11

자바 Exception 핸들링

Exception

- 프로그램이 핸들링할 수 있는 경우를 Exception이라고 한다.

- 처리가 가능하다.

- checked exception(complie time)

+ 실행하기 이전 예측가능하다.

+ 파일 확인할때 에러,SQL관련

+ 이클립스,인텔리제이등 ide가 컴파일 할때 체크 해준다.

- unchecked exception(runtime)

+ 실행해야 알 수 있다.

+ 실행시 객체생성없는경우(NullPointer), Array싸이즈가 안맞는 에러등이 있다.

Error

- 핸들링이 불가능해 회복이 불가능하다. 대표적으로 OOM(메모리문제)가 있다.


Exception 핸들링 방법

try, catch block

- 블럭을 설정해 Exception을 처리해준다.

throws

- 메소드 선언부에서 사용한다.

- 메소드를 불러오는 메소드에 책임은 전가한다.

- Exception이 생기면 던져준다.

throw(인위적 Exception 발생)

- Exception이 필요한 상황에 개발자가 Exception을 발생시킨다.

- try, catch나 throws를 사용해야한다.

자바에서 static개념

- 객체지향프로그램인 자바는 객체,변수등이 필요할때 메모리에 올려야한다.

- static은 프로그램으로 객체생성이전 JVM에 클래스가 로딩될때 메모리에 올라온다.

- 변수,메소드,내부클래스에서 static을 사용가능하다.

- 변수,메소드에서 자주사용한다.

- 변수에 static이 붙게 되면 Class로 접근 가능하다.

- 전역변수가 필요할때 static을 사용한다.

- 메소드에 static이 붙게되면 Class로 접근가능하다.

- 대표적인예제 public static void main(String[] args)


abstract와 Interface의 차이

SuperClass와 subClass로 구성된건 같다.

서브클래스는 슈퍼클래스의 큰 영향을 받는다.


abstactClass

- 슈퍼클래스가 어느정도 구현되어있고 나머지를 서브클래스에서 구현해야할때사용한다.

- single inheritance이다.(다중상속불가능)

- 모든 접근제한자에서 가능하다.

- 일반적인 변수,상수가 사용가능하다.

- abstractMethods,concreteMethods 둘다 가능하다.


Interface

- 실질적인 구현이없는 abstractMethods만있는 빈깡통클래스

- 일종의 규약을 위해 생성한다.

- 상속이아닌 구현으로 다중구현이 가능하다.

- public만 가능하다.

- 오직 상수만이 가능하다.

- abstractMethods만가능하다.

오버라이딩

overriding

- 부모 클래스로 부터 상속받은 메소드를 자식클래스에서 다시구현한다.

- 자식클래스에서 입맛에 맞게 다시 구현

- 메소드에 파라미터,리턴타입은 부모,자식클래스이 같아야한다.

- 자식클래스에서 필요해의해 다양하게 수정하기 위해서이다.


오버로딩

overloading

- 같은 클래스안에서 이름이 같은 메소드를 말한다.

  - 이름은 같은 메소드지만 다양한 파라미터를 받아서 처리할때 사용한다.

- 파라미터가 달라야한다.

- 리턴타입은 같지않아도 된다.

String,StringBuffer,StringBuilder의 차이


String은 불가변적이다.

StringBuffer,StringBuilder은 가변적이다.


String 객체는 Heap메모리에 생성되면 변하지않는다.

변경하게되면 새로운 객체를 생성해야한다.

ex)

String s = "a";

s = s + "b";


String 는 객체(Heap메모리) s는 reference 값(Stack메모리)이다.

String s = "a";

s(reference값)은 Heap 메모리의 "a"의 주소값을 보고 있다.


s = s + "b"; 를 하게되면 

s(reference값)가 보고있는 "a"값에 "b"를 추가하는것이아닌

"ab"라는 객체를 다시만들고 그 객체의 reference값으로 바꾼다.


ex)StringBuffer ,StringBuilder 동일하다.

StringBuffer s = new StringBuffer("a");

s.append("b");


StringBuilder,StringBuffer 는 객체(Heap메모리) s는 reference 값(Stack메모리)이다.

차이점은 StringBuilder,StringBuffer는 객체를 새로 생성하지않고

기존 객체에 값을 추가한다.


개발시에 문자열 병합이 빈번하게 일어나면 StringBuilder,StringBuffer를 사용하는게 좋다.


StringBuilder,StringBuffer 차이는?


synchronization(동기화)지원여부의 차이다.


synchronization란?

하나에 제한되어있는 데이터를 여러 스레드가 공유가 사용할때

데이터가 깨지지않게 줄을세워 키를 가지고 있는 데이터를 처리하고 나머지데이터는 대기시킨다.

데이터무결성을 보장할 수 있다.


StringBuffer는 동기화를 지원하고

StringBuilder는 동기화를 지원하지 않는다.


멀티스레드를 사용하지 않는다면 

StringBuffer보단 StringBuilder가 빠르다.


자바 메모리영역 Stack,Heap


Stack

- Stack 메모리는 비교적 가벼운데이터들을 말한다.

- primativeData,reference(주소값)이 있다.


Heap

- Heap 메모리는 객체등 무거운데이터가 머물러있다.

- Garbage Collection은 Heap메모리에서 작동한다.


ex)

마트에 갔을때 가벼운 물건들은 바로바로 구매하지만

배송이 필요한 물건은 reference를 보고 구매하면

Heap에서 가져오게 된다.

autoboxing,unboxing이란?


autoboxing,unboxing의 개념은 jdk 1.5 부터 나왔다.


자바에는 크게 2가지 데이터 타입이 있다.

primitive Data,Object Data 두가지!


primitive Data

- boolean, char, byte, short, int, long, float, double

- 아주 가벼운 데이터를 말한다.

- 스택메모리에 머물러있다.


Object Data

- 상대적으로 무거운 데이터이다.

- 실제 데이터는 힙메모리에 공유하고 레퍼런스만 스택메모리에 있다.


Wrapper Class

- primitive Data를 ObjectData화 시킨 Class이다.


jdk 1.5 이전에 서로 호환할려면 개발자가 명시적으로 바꿔줬어야했다.

하지만 jdk 1.5가 나오면서 직접호환이 가능하게 되었다.


primitive Data 에서 Wrapper Class로 자동으로 변환되는걸 autoboxing이라 한다.

가벼운 데이터를 무거운데이터에 넣기에 autoboxing이라고 생각하면 간단하다.


Wrapper Class에서 primitive Data 자동으로 변환되는걸 unboxing이라 한다.

무거운 데이터를 가벼운데이터에 넣기에 unboxing이라고 생각하면 간단하다.


autoboxing이란?

- 컴파일러가 primitive Data를 Object Data로 자동변환하는것이다.

- int a = 42; Integer b =a;

- 과거엔 객체를 생성했어야했다.


unboxing이란?

- 컴파일러가 Object Data를 primitiveData로 자동변환하는것이다.

- Integer a = new Integer(42); int b =a;

- 과거엔 a.intValue();로 생성했어야했다.


JVM


Java Virtual Machine

컴파일된 Class파일을 실행하는 역할


JAVA를 독립적인 프로그래밍언어로 만들어준다.


자바 실행원리

1. 소스 작성(Code)

- .java파일로 저장

2. 컴퓨터 언어로 변환(Compile)

- .class파일 생성

3. 실행(Run)


JVM은 OS에 종속적이다.

윈도우용,리눅스용 다르다.


핸드폰 충전 어뎁터로 생각하면 된다.

충전선은 usb형식으로 어뎁터만 전기코드에 맞게 꽂아주면 충전선을 바꿀 필요가 없다.


JRE

Java Runtime Environment

자바프로그램이 실행될수있는 환경

JVM이 포함되어 있다.


Java Virtual Machine

- 플랫폼에서 최종적으로 실행시켜준다.

Bytecode Verifier

- 로딩된 Class파일 정보가 플랫폼에서 실행되는데 문제가 없는지 검증한다.

Class Loader

- 컴파일된 Class파일을 메모리에 로딩시켜준다.

세가지로 구성됨.


JDK

Java Development Kit

JRE가 포함되어있고 개발시 필요한 디버깅기능,간단한 DB,샘플예제 등

어플리케이션에 필요한 기능을 제공한다.





자바 개발할때 유용한 라이브러리(library)!


StringUtils - 문자열에 작업하는 관련기능들을 모아놓은 Library


사용방법 

1.직접 다운 : 다운로드페이지(click)

2.Maven : MavenRepository페이지(click)

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->

<dependency>

    <groupId>org.apache.commons</groupId>

    <artifactId>commons-lang3</artifactId>

    <version>3.8</version>

</dependency>


직접 다운로드할시 lib에 추가하여 사용하고 Maven사용시엔 pom.xml에 추가한다.


StringUtils.split("문자열")

문자열의 공백을 기준으로 나눈다(배열).

String[] split = StringUtils.split("123 456 789");

for (String string : split) {

System.out.print(string+"!");

}

//출력결과 : 123!456!789!


StringUtils.split("문자열","구분자")

문자열의 구분자를 기준으로 나눈다(배열).

구분자가 null일시 공백을 기준으로 나눈다.

String[] split2 = StringUtils.split("123@!@456@!@789","@!@");

for (String string : split) {

System.out.print(string+"!");

}

//출력결과 : 123!456!789!


StringUtils.splitByCharacterType("문자열")

문자열을 동일한 문자열(대/소문자,한글,숫자등) 기준으로 나눈다(배열).

String[] splitByCharacterType = 

StringUtils.splitByCharacterType("show ME the Money 10000");

for (String string : splitByCharacterType) {

System.out.print(string+"!");

}

//출력결과 : show! !ME! !the! !M!oney! !10000!


StringUtils.splitByCharacterType("문자열")

문자열을 동일한 문자열(대/소문자,한글,숫자등) 기준으로 나눈다(배열).

단 카멜케이스 즉 대문자로 시작하는 문자열은 한단어로 생각한다.

String[] splitByCharacterTypeCamelCase = 

StringUtils.splitByCharacterTypeCamelCase("show ME the Money 10000");

for (String string : splitByCharacterTypeCamelCase) {

System.out.print(string+"!");

}

//출력결과 : show! !ME! !the! !Money! !10000!


StringUtils.splitByWholeSeparator("문자열","구분자")

문자열의 구분자를 기준으로 나눈다(배열).

구분자가 null일시 공백을 기준으로 나눈다.

String[] splitByWholeSeparator =

StringUtils.splitByWholeSeparator("show ME the Money 10000", null);

for (String string : splitByWholeSeparator) {

System.out.print(string+"!");

}

//출력결과 : show!ME!the!Money!10000!


StringUtils.splitByWholeSeparatorPreserveAllTokens("문자열","구분자")

문자열의 구분자를 기준으로 나눈다(배열).

구분자가 null일시 공백을 기준으로 나눈다.

공백을 기준으로 나눌시 공백이 여러개일경우 하나를 제외하곤 문자로 포함된다.

String[] splitByWholeSeparatorPreserveAllTokens =

StringUtils.splitByWholeSeparatorPreserveAllTokens("123  456 789", null);

for (String string : splitByWholeSeparatorPreserveAllTokens) {

System.out.print(string+"!");

}

//출력결과 : 123!!456!789!


StringUtils.splitPreserveAllTokens("문자열")

문자열을 공백을 기준으로 나눈다(배열).

공백이 여러개일경우 하나를 제외하곤 문자로 포함된다.

String[] splitPreserveAllTokens =

StringUtils.splitPreserveAllTokens("123  456 789");

for (String string : splitPreserveAllTokens) {

System.out.print(string+"!");

}

//출력결과 : 123!!456!789!


StringUtils.splitPreserveAllTokens("문자열","구분자")

문자열의 구분자를 기준으로 나눈다(배열).

문자열에 앞뒤로 구분자가 있을경우 빈값으로 배열에 포함한다.

String[] splitPreserveAllTokens2 =

StringUtils.splitPreserveAllTokens("@123@ 456@789 ","@");

for (String string : splitPreserveAllTokens2) {

System.out.print(string+"!");

}

//출력결과 : !123! 456!789 !


StringUtils.strip("문자열","문자")

문자열의 앞뒤 문자를 제거한다.

문자가 없을경우 앞뒤 공백을 제거한다.

String strip = StringUtils.strip("@!show@!me@!","@!");

System.out.println(strip);

//출력결과 : show me

StringUtils.stripAccents("문자열")

문자열에 표시된 억양을 제거한다.

String stripAccents = StringUtils.stripAccents("à");

System.out.println(stripAccents);

//출력결과 : a


StringUtils.stripAll(문자배열,"문자")

문자배열안의 모든 문자열 앞뒤 문자를 제거한다.

문자가 없을경우 앞뒤 공백을 제거한다.

String[] stripAll = 

StringUtils.stripAll(new String[] {"@1@2@3@", "@4@5@6@"},"@");

for (String string : stripAll) {

System.out.print(string+"!");

}

//출력결과 : 1@2@3!4@5@6!



StringUtils.stripEnd("문자열","문자")

문자열의 뒷부분에 문자를 제거한다.

문자가 없을경우 뒷부분 공백을 제거한다.

String stripEnd = StringUtils.stripEnd("@1@2@3@","@");

System.out.println(stripEnd);

//출력결과 : @1@2@3

StringUtils.stripStart("문자열","문자")

문자열의 앞부분에 문자를 제거한다.

문자가 없을경우 앞부분 공백을 제거한다.

String stripStart = StringUtils.stripStart("@1@2@3@","@");

System.out.println(stripStart);

//출력결과 : 1@2@3@


StringUtils.stripToEmpty("문자열")

문자열의 앞뒤 공백을 제거한다.

문자열이 null,"","   "이면  ""로 반환환다.

String stripToEmpty = StringUtils.stripToEmpty("   1 2 3    ");

System.out.println(stripToEmpty);

//출력결과 : 1 2 3

StringUtils.stripToNull("문자열")

문자열의 앞뒤 공백을 제거한다.

문자열이 null,"","   "이면  null로 반환환다.

String stripToNull = StringUtils.stripToNull("   1 2 3    ");

System.out.println(stripToNull);

StringUtils.substring("문자열",시작위치)

문자열의 시작위치 순서부터 반환한다.

String substring = StringUtils.substring("0123456", 3);

System.out.println(substring);

//출력결과 : 3456

StringUtils.substring("문자열",시작위치,종료위치)

문자열의 시작위치 순서부터 종료위치전까지 반환한다.

String substring2 = StringUtils.substring("0123456", 3, 5);

System.out.println(substring2);

//출력결과 : 34

StringUtils.substringAfter("문자열","시작문자")

문자열에서 시작문자를 찾고 그다음부터 반환한다.

String substringAfter = StringUtils.substringAfter("0123456", "3");

System.out.println(substringAfter);

//출력결과 : 456

StringUtils.substringAfterLast("문자열","시작문자")

문자열에서 시작문자를 찾고 마지막 시작문자 그다음부터 반환한다.

String substringAfterLast = StringUtils.substringAfterLast("01230123", "1");

System.out.println(substringAfterLast);

StringUtils.substringBeforeLast("문자열","시작문자")

문자열에서 시작문자를 찾고 마지막 시작문자 그앞에 문자들을 반환한다.

String substringBeforeLast = StringUtils.substringBeforeLast("01230123", "1");

System.out.println(substringBeforeLast);

//출력결과 : 01230

StringUtils.substringBetween("문자열","태그문자")

문자열에서 태그문자를 찾고 태그문자 사이의 값을 반환한다.

String substringBetween = StringUtils.substringBetween("<tag>ss<tag>", "<tag>");

System.out.println(substringBetween);

StringUtils.substringBetween("문자열","태그문자", "태그종료문자")

문자열에서 태그문자와 태그종료문자를 찾고 태그문자 사이의 값을 반환한다.

String substringBetween2 = 

StringUtils.substringBetween("<tag>ss</tag>", "<tag>", "</tag>");

System.out.println(substringBetween2);

//출력결과 : ss

StringUtils.substringsBetween("문자열","태그문자","태그종료문자")

문자열에서 태그문자를 찾고 태그문자 사이의 값을 배열로 반환한다.

String[] substringsBetween = 

StringUtils.substringsBetween("[1],[2],[3]", "[", "]");

for (String string : substringsBetween) {

System.out.print(string+"!");

}

//출력결과 : 1!2!3!

StringUtils.swapCase("문자열")

문자열의 대문자는 소문자 소문자는 대문자로 변환한다.

String swapCase = StringUtils.swapCase("sHOW");

System.out.println(swapCase);

//출력결과 : Show

StringUtils.toCodePoints("문자열")

문자열을 코드포인트형태로 변환하여 int배열로 반환한다.

int[] toCodePoints = StringUtils.toCodePoints("int");

System.out.println(toCodePoints);

for (int num : toCodePoints) {

System.out.print(num+"!");

}

//출력결과 : 105!110!116!

StringUtils.trim("문자열")

문자열의 앞뒤공백을 제거한다.

String trim = StringUtils.trim(" s h o w ");

System.out.println(trim);

//출력결과 : s h o w

StringUtils.trimToEmpty("문자열")

문자열의 앞뒤공백을 제거한다

문자열이 null,"","   "이면  ""로 반환환다.

String trimToEmpty = StringUtils.trimToEmpty(" show ");

System.out.println(trimToEmpty);

//출력결과 : s h o w

StringUtils.trimToNull("문자열")

문자열의 앞뒤공백을 제거한다

문자열이 null,"","   "이면  null로 반환환다.

String trimToNull = StringUtils.trimToNull(" show ");

System.out.println(trimToNull);

//출력결과 : s h o w

StringUtils.trimToNull("문자열" ,잘라낼크기)

문자열을 잘라낼크기만큼 잘라낸다.

String truncate = StringUtils.truncate("0123456", 4);

System.out.println(truncate);

//출력결과 : 0123

StringUtils.trimToNull("문자열" ,잘라낼시작크기,잘라낼종료크기)

문자열을 잘라낼시작크기에서 종료크기만큼 잘라낸다.

String truncate2 = StringUtils.truncate("0123456", 1, 5);

System.out.println(truncate2);

//출력결과 : 12345

StringUtils.uncapitalize("문자열")

문자열의 첫글자가 대문자이면 소문자로 변환한다.

String uncapitalize = StringUtils.uncapitalize("SHOW");

System.out.println(uncapitalize);

//출력결과 : sHOW

StringUtils.unwrap("문자열","문자")

문자열이 문자로 감싸져있다면 풀어서 반환한다.

String unwrap = StringUtils.unwrap("!show!", "!");

System.out.println(unwrap);

//출력결과 : show


StringUtils.unwrap("문자열")

문자열을 대문자로 변경해서 반환한다

String upperCase = StringUtils.upperCase("show");

System.out.println(upperCase);

//출력결과 : SHOW


StringUtils.wrap("문자열","문자")

문자열이 문자로 감싸서 풀어서 반환한다.

String wrap = StringUtils.wrap("show", "!");

System.out.println(wrap);

//출력결과 : !show!

StringUtils.wrap("문자열","문자")

문자열의 시작과 끝에 문자가 없으면 추가해서 반환한다.

String wrapIfMissing = StringUtils.wrapIfMissing("show!", "!");

System.out.println(wrapIfMissing);

//출력결과 : !show!



JAVA  StringUtils 문자열 작업 - 1 보러가기(Click)

java StringUtils 문자열 작업 - 1 Method

String abbreviate ,String appendIfMissing ,String appendIfMissingIgnoreCase ,String capitalize ,String chomp ,String chomp2 ,String chop ,String center ,String center2 ,int compare ,int compareIgnoreCase ,boolean contains ,boolean containsAny ,boolean containsIgnoreCase ,boolean containsNone ,boolean containsOnly ,boolean containsWhitespace ,int countMatches ,String defaultIfBlank ,String defaultIfEmpty ,String defaultString ,String deleteWhitespace ,String difference ,boolean endsWith ,boolean endsWithAny ,boolean endsWithIgnoreCase ,boolean equals ,boolean equalsAny ,boolean equalsAnyIgnoreCase ,boolean equalsIgnoreCase ,String firstNonBlank ,String getCommonPrefix ,String getDigits ,int indexOf ,int indexOfAny ,int indexOfAnyBut ,int indexOfDifference ,int indexOfIgnoreCase 



JAVA  StringUtils 문자열 작업 - 2 보러가기(Click)

java StringUtils 문자열 작업 - 2 Method

boolean isAllBlank ,boolean isAllEmpty ,boolean isAllLowerCase ,boolean isAllUpperCase ,boolean isAlpha ,boolean isAlphanumeric ,boolean isAlphanumericSpace ,boolean isAlphaSpace ,boolean isAnyBlank ,boolean isAnyEmpty ,boolean isAsciiPrintable ,boolean isBlank ,boolean isEmpty ,boolean isMixedCase ,boolean isNoneBlank ,boolean isNoneEmpty ,boolean isNotBlank ,boolean isNotEmpty ,boolean isNumeric ,boolean isNumericSpace ,boolean isWhitespace ,boolean startsWith ,boolean startsWithAny ,boolean startsWithIgnoreCase ,String join ,String joinWith ,int lastIndexOf ,int lastIndexOf2 ,int lastIndexOfAny ,int lastIndexOfIgnoreCase ,int lastIndexOfIgnoreCase2 ,int lastOrdinalIndexOf ,String left ,String leftPad ,int length ,String lowerCase 


JAVA  StringUtils 문자열 작업 - 3 보러가기(Click)

java StringUtils 문자열 작업 - 3 Method

String mid ,String normalizeSpace ,int ordinalIndexOf ,String overlay ,String prependIfMissing ,String prependIfMissingIgnoreCase ,String remove ,String removeAll ,String removeEnd ,String removeEndIgnoreCase ,String removeFirst ,String removeIgnoreCase ,String removePattern ,String removeStart ,String removeStartIgnoreCase ,String repeat ,String replace ,String replace2 ,String replaceAll ,String replaceChars ,String replaceEach ,String replaceEachRepeatedly ,String replaceFirst ,String replaceIgnoreCase ,String replaceOnce ,String replaceOnceIgnoreCase ,String replacePattern ,String reverse ,String reverseDelimited ,String right ,String rightPad ,String rotate



+ Recent posts