묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
OrderServiceTest 테스트 했는데 오류 발생하네요 ㅜㅜ
org.springframework.dao.InvalidDataAccessApiUsageException: id to load is required for loading; nested exception is java.lang.IllegalArgumentException: id to load is required for loading at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at jpabook.jpashop.repository.ItemRepository$$EnhancerBySpringCGLIB$$5dbeee4d.findOne(<generated>) at jpabook.jpashop.service.OrderService.order(OrderService.java:27) at jpabook.jpashop.service.OrderService$$FastClassBySpringCGLIB$$ad373727.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at jpabook.jpashop.service.OrderService$$EnhancerBySpringCGLIB$$ac8a1288.order(<generated>) at jpabook.jpashop.service.OrderServiceTest.상품주문(OrderServiceTest.java:49) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74) at org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84) at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75) at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86) at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97) at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329) at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306) at org.junit.runners.ParentRunner.run(ParentRunner.java:413) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69) at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) Caused by: java.lang.IllegalArgumentException: id to load is required for loading at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:96) at org.hibernate.event.spi.LoadEvent.<init>(LoadEvent.java:64) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.doLoad(SessionImpl.java:2783) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.lambda$load$1(SessionImpl.java:2767) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.perform(SessionImpl.java:2723) at org.hibernate.internal.SessionImpl$IdentifierLoadAccessImpl.load(SessionImpl.java:2767) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3322) at org.hibernate.internal.SessionImpl.find(SessionImpl.java:3284) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) at com.sun.proxy.$Proxy104.find(Unknown Source) at jpabook.jpashop.repository.ItemRepository.findOne(ItemRepository.java:25) at jpabook.jpashop.repository.ItemRepository$$FastClassBySpringCGLIB$$dc3fed7a.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ... 49 more 빨간색 오류 메세지 입니다 ㅜㅜ 어떤 문제가 있는걸까요?
-
미해결스프링 핵심 원리 - 기본편
스프링 동작 과정에 대해 질문이 있습니다!
스프링 동작방식에 대해 질문이 있습니다! 스프링 컨테이너에서 동시에 수많은 Request를 받아도 Controller 1개에서 처리되는것으로 알고 있습니다. 중간에 Tomcat이 요청 개수 만큼 쓰레드를 만들어주고 이 쓰레드 각각이 하나의 Controller를 참고하고 이에 따라 서비스가 진행되는 것으로 알고 있습니다. 질문 1. 동시 요청이라고 가정하였을때 쓰레드 개수마다 객체 하나씩 만드는게 맞나요?! 질문 2. 쓰레드들이 Controller를 참고할 때 Controller는 Memory 영역에 올라가서 1개여도 서비스를 진행할때 각각 Heap 영역에서 객체를 만들고 그것을 통해 서비스한다고 보는게 맞을까요?! 음 이해되는데로 그림을 그려본건데 이게 맞다고 볼 수 있을까요?! 질문 3. 다른 블로그에서 Spring Framework는 동시에 요청이 들어와서 수 많은 쓰레드가 생성되고 이를 하나의 객체만으로 모든것을 관리하는게 맞다고 하는데 그렇게 되면 각 Client들이 요청하는게 달라 서비스 처리 과정에서 문제가 생기지 않을까요?! 항상 좋은 강의 감사합니다!
-
해결됨퍼블리셔 취업 진짜 실전 가이드(PDF)
퍼블리셔 취업 준비 공부 기간과 웹디자인기능사
선생님 안녕하세요! 이번에 선생님의 '웹 퍼블리셔' 강의 로드맵을 통째로 구매하게 되었고 가이드와 너튜브, 교재를 보면서 촉박하다는 생각에 궁금증이 생겨 질문을 남기게 되었습니다. > 1. 퍼블리셔를 준비하는 공부 기간은 얼마나 잡고 취업을 하는 게 좋을까요? 때 이른 걱정이기도 하고 사람 마다 습득 속도나 환경을 고려하면 당연히 달라지겠지만 평균적인 준비와 (이 정도 만큼은) 공부해야될 기간(적당하다고 판단되는) 을 알고 싶어요. 보통 국비과정은 4-5개월 정도인 걸로 아는데, 학원의 커리큘럼에 맞지 않는 타입이기도 하고 앞으로도 소수 정예가 아닌 이상 학원 다닐 생각은 전혀 없습니다. 오로지 선생님의 인강과 교재만으로 스스로 공부해 나갈 계획이라 어느 정도 인지를 해야 초심을 잡을 때 좋을 것 같습니다. > 2. HTML을 처음 공부하는데 웹디자인기능사(필기, 실기)를 올해 안에 치를 계획입니다. 실기는 선생님 강의의 어디까지 듣고 응시하는 게 나을까요? 시험이 6월, 8월, 11월 남았는데 얼마 안남은 기간에 초조하기만 합니다. HTML의 기초 상태인 지금부터 '웹디실기 시험가이드'를 먼저 학습하고 '포트폴리오 실전 퍼블리싱'을 보는 게 괜찮은 학습 방향일까요? 필기는 한달정도 여유를 잡고 반드시 6월에 치를 것입니다. 그렇게 되면 실기 공부 시간이 빠듯하다고 생각되는데 제가 지금부터 HTML을 시작해도 늦지 않은지 알고 싶어요. 내년부터는 출제 기준이 바뀔 수도 있다니 올해 안에는 보는 게 목표입니다. > > 가이드에서 신입 나이의 끝(27살) 을 보고 이제 곧 마지노선이라고 생각이 들며 자극을 받았습니다. 물론 그게 정답이다 아니다 할 수 없는 기준치인 걸 압니다. 웹디자이너가 되고 싶어서 학원도 알아 보고 국비과정도 알아봤지만 환경+다니던 그래픽학원에서 뜯어말려서 포기했다 생각했는데 미련이 남아 도전하게 되었어요. (그래픽과 복잡하고 계산적인 능력이 필요한 코딩은 다른 분야라고..) 저도 제 능력이 어디까지고 퍼블리셔를 배워도 될만한 실력인진 모르겠는데 지금 배우면서 너무 재밌다고 생각합니다. 미래를 다시 생각해보게 해주신 강의 감사합니다.
-
미해결[2026년 출제기준] 웹디자인개발기능사 실기시험 완벽 가이드
공지사항 만들기 시작부분 부터의 html과 css 코딩파일을 얻고 싶습니다.
안녕하세요. 위의 다른 강의로 html과 css로 만든걸로 하니까 좀 다른것 같아서요. 해당 강의 부분의 html과 css 파일을 올려주시면 감사하겠습니다.
-
미해결피그마(Figma)를 활용한 UI디자인 입문부터 실전까지 A to Z
또다른 예제파일은 어떻게 이용할 수 있을까요?
안녕하세요:) 첨부해주신 예제파일 말고 개인적으로 잘된 예제를 가져와서 만들려고 하는데 그냥 캡쳐해서 이미지로 가져오면 되나요??
-
미해결UX/UI 시작하기 : UI 디자인 (Inflearn Original)
질문드립니다
제가 질문은
-
미해결Vue.js 완벽 가이드 - 실습과 리팩토링으로 배우는 실전 개념
github 레파지토리 권한 요청 드립니다.
인프런 아이디 : cds301인프런 이메일 : cds301@gmail.com깃헙 아이디 : cds301@gmail.com깃헙 Username : cds9046
-
미해결자바스크립트 비기너: 튼튼한 기본 만들기
정리
중고급 과정을 듣고 나서 다시 한 번 정리하였습니다. const test = ["<ul>"]; for(var i = 1; i <= 10; i++) { test.push(`<li id=id${i}>id${i}</li>`); } test.push("</ul>"); document.body.innerHTML = test.join(""); 우선 코딩시간에 나와있는 배열 사용의 예제풀이 입니다. 텍스트로 덧붙이는 형태라 DOM 구조를 이해하는게 아닌 듯한 느낌이 들었습니다. 따라서 Tag요소부터 만들어 나가는 형태로 반복문을 진행해보았습니다. const newUl = document.createElement('ul'); document.body.append(newUl); const Ul = document.querySelector('ul'); for(var i = 0; i < 10; i++) { const newLi = document.createElement('li'); Ul.append(newLi); const Li = document.querySelectorAll('li')[i]; Li.id = `id${i+1}`; Li.textContent = `id${i+1}`; } 보완할 요소가 더 있을 거 같은데 도통 떠오르질 않네요. 배열 구조로 한꺼번에 추가하는 형식으로 트리를 만들어가는 건 어려울 거 같아 질문드려요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
트랜잭션에 대해서 질문이 있습니다.
프로그래밍적으로 트랜잭션은 객체를 생성할 때와 객체의 상태를 변경할 때와 객체를 삭제할 때 함께 영향을 받는 것들을 묶어 주라는 걸로 이해하면 되는 걸까요 ?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
아예 종료시키는 방법
졌을 때나 로비에서 바로 종료시키는 ending()을 추가하고싶은데 어케해야하나요.. break는 빠져나갈 루프가 없다고 안되네요. while문이 있는 main메소드에서 직접 처리해야하나요?
-
미해결코로나맵 개발자와 함께하는 지도서비스 만들기 2
서버접속시 오류가 발생하네요
C:\Users\ms\first_map\bin\www:14 TypeError: Cannot read property 'on' of undefined 이런오류가 나는데 이유가 있는것인지요? 무엇인가 위에서 정의를 해줘야하는것인지요? var app = require("../app"); var debug = require("debug")("first-map:server"); var http = require("http"); const mongoose = require("mongoose"); const userConfig = require("../config/userConfig.json"); let db = mongoose.collection; db.on("error", console.error); db.once("open", () => { console.log("Connected to mongo Server"); }); mongoose.connect( `mongodb+srv://jinnise21:${userConfig.pw}@firstmap.roaz5.mongodb.net/firstmap?retryWrites=true&w=majority`, { useNewUrlParser: true, useUnifiedTopology: true } );
-
미해결스프링 핵심 원리 - 기본편
애러 질문이 있습니다.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'orderService' defined in class path resource [appConfig.xml]: Cannot resolve reference to bean 'discountPolicy' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'discountPolicy' available 이렇게 애러가 발생하네요,,다시 코딩 해보면서 실수한거 없는지 살펴봤는데.. 잘 모르겠습니다 ㅠ_ㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI 접근 질문이요.!!
강사님 강의도 듣고 다른 강의도 들어보면서 UI관련 궁금한점이 생겼습니다.!! 예를들어 총을발사 후 총알수보여주는 UI에서 총알수를 변경을 하고싶은데요. 어떤식으로 접근해야하는지 궁금합니다. 예를들어 총 관련스크립트{ 총알 발사 => 총알숫자감소 총알관련 UI접근 =>감소 } UI스크립트{ Update() { 총관련스크립트에서 총알 수를 읽어 온 후 UI변경 } } 주로 첫번째 방법을 이용했었는데요. 첫번째 방법처럼한다면 Manager.UI. 이런식으로 어떻게 접근을 해야할것같은데 어떻게 접근을 해야하는지 궁금합니다. 이런 총알 관련 UI가 UI_Scene을 상속받은 후 접근을 해야하는지.. 아니면 UI_HpBar.cs 코드처럼 2번째 방법을 이용하는게 나중에 코드들이많아지면 이방법이 더 좋은방법인가요?.이방법도 옵저버패턴인지도 궁금합니다.!
-
미해결[NarP Series] MVC 프레임워크는 내 손에 [나프1탄]
JDBC와 DB(오라클기반)수업 연계
수업 잘 듣고 있습니다. JDBC와 DB(오라클기반)수업 교육도 해 주실 수 있는지요??
-
미해결스프링 핵심 원리 - 기본편
궁금한점이 있어서 질문드립니다.
안녕하세요 강의 잘 보고 있습니다, 영상을 3번 들어도 이해가 조금 안되는 문제가 있습니다. 영상 18:20쪽에 보시면 생성자에서 MemberRepository , DisconuntPolicy 타입으로 스프링 빈 저장소에서는 -> memoryMemberRepository 와 rateDiscountPolicy 을 가지고 와서 주입시킨다라고 이해를 하였습니다. 그런데 궁금한점은 AutoAppConfig에서 AppConfig 를 필터를 걸어서 제외를 시켰는데, 어떤방식으로 스프링 빈 저장소에서 rateDisCountPolicy하고 memoryMemberRepository 를 주입시켰는지 궁금합니다.. 간단하게 말씀드리자면 AppConfig 에선 Bean등록 한건 제외시킨걸로 이해를 하였는데.. Appconfig도 실행이 되는거 같아서 질문드립니다.
-
미해결해커를 위한 iOS 앱 모의 해킹 전문 과정
탈옥 버전 질문드립니다.
아이폰 6s ios 14.4.2 버전으로 탈옥 하려는데요. checkra1n 0.12.2 beta 버전을 써도 ios 14.3 버전까지만 지원하네요. unc0ver도 마찬가지고요. 다운그레이드 하려고 보니 ipsw.me 에서도 14.4.2 버전밖에 구할수가 없는데 실습진행이 불가할까요??
-
미해결스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
통합 컨트롤러에서 핸들러의 기준은 컨트롤러인가요? 메서드인가요?
안녕하세요. 먼저 좋은 강의 감사합니다. MVC 패턴을 구현할 때에는 handlerMapping 정보에 key로 URL과 value로 controller 객체를 담고 실행했는데요. 통합된 컨트롤러를 하게되면 URL 정보가 메서드마다 매핑되는데 handler Mapping에 controller를 handler로 담고 있다면 어떻게 해당 메서드를 찾는지 궁금합니다. 감사합니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
actuator 인증 관련
안녕하세요 선생님, actuator 관련해서 질문이 있습니다. 실습에서 actuator 관련해서 user-service의 WebSecurity에는 아래와 같은 코드를, http.authorizeRequests().antMatchers("/actuator/**").permitAll(); apigateway-service의 application.yml 파일에서는 아래와 같은 코드를 추가했습니다. - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/actuator/** - Method=GET, POST filters: - RemoveRequestHeader=Cookie - RewritePath=/user-service/(?<segment>.*), /$\{segment} 제가 궁금한 것은, actuator로 누구나 접근할 수 있게 permitAll() 설정을 해주었고, 인증 필터 또한 설정하지 않았는데 포스트맨으로 actuator 접근할 시 토큰이 필요한 이유에 대해 잘 모르겠습니다. (8분 15초 이후 관련)
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
patch명령어 질문입니다.
현재 스프링은 아니고 javax.servlet.http 기반으로 was를 구축해서 사용중입니다. 최신버전(?)을 사용중인데도 patch명령어가 없는데 스프링 rest api개발할때는 있는 건가요? https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api
-
미해결1:1채팅 만들기(Android + Kotlin + Firebase)
4강 회원가입 강의중입니다 오류납니다.
조인 버튼 눌렀는데 실패라고 뜹니다. package com.example.chatting108import android.content.Intentimport android.nfc.Tagimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport com.google.firebase.auth.FirebaseAuthimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() { private val TAG : String? = MainActivity :: class.simpleName private lateinit var auth: FirebaseAuth private val IAG:String = MainActivity::class.java.simpleName override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) auth = FirebaseAuth.getInstance() join_button.setOnClickListener { val email =email_area.text.toString() val password = passwordarea.text.toString() auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Log.d(TAG,"성공") } else { Log.d(TAG, "실패") } } } login_button_main.setOnClickListener{ val intent = Intent(this, LoginActivity::class.java) startActivity(intent) } }} // Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript { ext.kotlin_version = "1.4.32" repositories { google() jcenter() } dependencies { classpath "com.android.tools.build:gradle:4.1.3" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.google.gms:google-services:4.3.5' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}allprojects { repositories { google() jcenter() }}task clean(type: Delete) { delete rootProject.buildDir} plugins { id 'com.android.application' id 'kotlin-android'}apply plugin: 'kotlin-android-extensions'apply plugin: 'com.google.gms.google-services'apply plugin: 'com.android.application'apply plugin: 'kotlin-kapt'android { compileSdkVersion 29 defaultConfig { applicationId "com.example.chatting108" minSdkVersion 21 targetSdkVersion 29 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' }}dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation 'androidx.core:core-ktx:1.3.2' implementation 'androidx.appcompat:appcompat:1.2.0' implementation 'com.google.android.material:material:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:2.0.4' implementation 'com.google.firebase:firebase-auth:20.0.4' testImplementation 'junit:junit:4.+' androidTestImplementation 'androidx.test.ext:junit:1.1.2' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' //로그인 kapt 'com.google.dagger:dagger-compiler:2.8' kapt 'com.android.databinding:compiler:2.3.1' //파이어베이스 implementation platform('com.google.firebase:firebase-bom:27.0.0') implementation 'com.google.firebase:firebase-analytics'}