갑을병정이야기

Java와 함께 하는 koin(feat kotlin), json 활용 이야기

Billcorea 2024. 12. 14. 15:30
반응형

Java와 함께 하는 koin (feat kotlin), json 활용 이야기

새로운 아이디어 창출을 위한 생각들

 

안녕하세요, 개발자 여러분! 오늘은 Java와 다양한 도구를 활용하여 어떻게 효과적으로 프로젝트를 구현할 수 있는지에 대해 알아보겠습니다. 특히, Koin을 사용한 의존성 주입, JSON 데이터 처리, 날짜 포맷팅, 스레드 관리 등 유용한 기술들을 예제로 소개하겠습니다.

Koin을 사용한 의존성 주입

Koin은 경량의 의존성 주입 프레임워크로, Kotlin을 사용하여 간편하게 의존성을 관리할 수 있습니다. 다음은 Koin을 설정하고 사용하는 기본적인 방법입니다.

Gradle 설정

gradle
buildscript {
    ext {
        koin_version = "3.2.0"
    }
}

dependencies {
    implementation "io.insert-koin:koin-android:$koin_version"
    implementation "io.insert-koin:koin-android-compat:$koin_version"
}

Koin 모듈 정의

kotlin
import org.koin.dsl.module

val appModule = module {
    viewModel { MyViewModel(get()) }
    single<MyRepository> { MyRepositoryImpl() }
}

Application 클래스에서 Koin 시작

kotlin
import android.app.Application
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()
        startKoin {
            androidContext(this@MyApplication)
            modules(appModule)
        }
    }
}

ViewModel 클래스 정의

kotlin
import androidx.lifecycle.ViewModel

class MyViewModel(private val repository: MyRepository) : ViewModel() {
    fun getData() {
        repository.getData()
    }
}

Activity에서 ViewModel 사용

kotlin
import android.os.Bundle
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
import org.koin.androidx.viewmodel.ext.android.viewModel

class MainActivity : AppCompatActivity() {
    private val myViewModel: MyViewModel by viewModel()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        myViewModel.getData()
    }
}

Java에서 JSON 데이터 처리

JSON 객체 생성 및 속성 추가

html
<!DOCTYPE html>
<html>
<head>
    <title>jQuery JSON Object 추가</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var jsonObject = {
                "name": "John Doe",
                "age": 30
            };
            jsonObject.address = "123 Main St";
            jsonObject.email = "john.doe@example.com";
            console.log(jsonObject);
        });
    </script>
</head>
<body>
</body>
</html>

JSON 객체를 JSON 배열에 추가

html
<!DOCTYPE html>
<html>
<head>
    <title>jQuery JSON Object to JSON Array</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        $(document).ready(function() {
            var jsonArray = [];
            var jsonObject = { "name": "John Doe", "age": 30 };
            jsonArray.push(jsonObject);

            var anotherJsonObject = { "name": "Jane Smith", "age": 25 };
            jsonArray.push(anotherJsonObject);

            console.log(jsonArray);
        });
    </script>
</head>
<body>
</body>
</html>

Java에서 날짜 포맷팅

SimpleDateFormat을 사용한 날짜 포맷팅

java
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = dateFormat.format(now);
        System.out.println("Formatted Date: " + formattedDate);
    }
}

문자열을 날짜로 파싱

java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateParseExample {
    public static void main(String[] args) {
        String dateString = "2023-12-24 14:30:00";
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        try {
            Date parsedDate = dateFormat.parse(dateString);
            System.out.println("Parsed Date: " + parsedDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

Java에서 스레드 사용

멀티 스레드를 20초 뒤에 실행

java
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class DelayedThreadExample {
    public static void main(String[] args) {
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2);
        Runnable task1 = () -> System.out.println("Task 1 is running...");
        Runnable task2 = () -> System.out.println("Task 2 is running...");
        
        scheduler.schedule(task1, 20, TimeUnit.SECONDS);
        scheduler.schedule(task2, 20, TimeUnit.SECONDS);
        scheduler.shutdown();
    }
}

이 외에도 다양한 주제를 다루었지만, 이 글에서는 가장 중요한 부분들만 추려봤습니다. 각 주제에 대해 더 깊이 알고 싶다면, 언제든지 댓글로 질문해 주세요!

반응형