Framework2024. 10. 15. 11:00

@Autowired

  • Spring 프레임워크에서 제공하는 애노테이션입
  • **타입(Type)**을 기준으로 의존성 주입을 수행
  • 기본적으로는 필드, 세터 메서드, 생성자에 사용할 수 있음
  • 타입에 맞는 빈이 여러 개 있을 경우, @Qualifier를 함께 사용하여 특정 빈을 지정
  • 주입할 빈이 없을 경우, 예외가 발생
    required=false로 설정하면, 주입할 빈이 없어도 예외를 발생시키지 않는다.

 

@Autowired
private MyService myService;


@Autowired(required = false)
private MyService myService;

 

 @Resource

  • JDK 표준(JSR-250) 애노테이션으로, Spring 외의 Java EE 환경에서도 사용
  • **이름(Name)**을 기준으로 의존성 주입
  • 이름을 먼저 검색하고, 이름으로 주입할 빈이 없으면 타입을 기준으로 빈을 주입
  • 기본적으로 필드 또는 세터 메서드에 사용할 수 있음
  • 주입할 빈을 이름으로 명시하고 싶을 때 사용
@Resource(name = "myService")
private MyService myService;

 

주요 차이점 요약

  1. 주입 방식:
    • @Autowired는 타입을 기준으로 주입
    • @Resource는 기본적으로 이름을 기준으로 주입 (이름으로 찾지 못할 경우 타입으로 주입)
  2. 애노테이션 출처:
    • @Autowired는 Spring 전용 애노테이션
    • @Resource는 Java 표준 애노테이션(JSR-250)으로, Spring 외의 Java EE 환경에서도 사용될 수 있음
  3. 추가 설정:
    • @Autowired는 @Qualifier와 함께 사용할 수 있어 여러 빈 중 특정 빈을 선택할 수 있음
    • @Resource는 name 속성을 통해 빈 이름을 지정할 수 있음

어느 것을 사용할지

  • Spring에 종속적인 애플리케이션에서는 **@Autowired**를 더 자주 사용
  • 표준 Java 애노테이션을 선호하거나 이름 기반 주입이 필요한 경우 **@Resource**를 사용할 수 있음.
Posted by 비니미니파파
Framework2024. 6. 21. 10:07

commit 오류

프로젝트(마우스오른쪽클릭) > team > Refresh/cleanup

끝!

 

Posted by 비니미니파파
Framework2020. 6. 11. 14:24

Thymeleaf 를 이요한 layout 적용 하기

내용이 들어갈 파일

- contents.html

레이아웃 파일

- layout.html

 

1. pom.xml 에 dependency 추가

		<dependency>
			<groupId>nz.net.ultraq.thymeleaf</groupId>
			<artifactId>thymeleaf-layout-dialect</artifactId>
		</dependency>	

 

2. layout.html

<!DOCTYPE html>
<html lang="ko" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
<head>
	<meta charset="UTF-8">
	<title>Thymeleaf Layout Test</title>
</head>
<body>
	<div id="header"> 헤더가 들어갈 영역 </div>
    <div id="contents"> 
    	
        <!-- Thymeleaf Content 가 들어갈 영역 -->
        <th:block layout:fragment="content"></th:block>
    
    </div>
</body>
</html>

 

3. contensts.html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" lang="ko"
	  xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout"
  	  layout:decorator="layout">
<head>
	<meta charset="UTF-8">
</head>  	  
  	  
<body>
	<th:block layout:fragment="content">
    
    	본문(콘텐츠) 영역
        
    </th>    
</body>
</html>

 

4. 테스트

contents.html 을 호출 하면 layout.html 이 적용되어 화면에 표시된다.

Posted by 비니미니파파
Framework2020. 6. 11. 10:49

Thymeleaf 에서 Session 을 처리 하는 방법

HTML 에서 처리


<span  th:text="${session.user_id}"> USER_ID </span>

Javascript 에서 처리


<script>

let user_id = "[[${session.user_id}]]";

</script>

 

Session 을 처리 하는 방법

HTML 에서 처리

<span  th:text="${param.user_name}"> USER_NAME </span>

Javascript 에서 처리

<script>

let user_name = "[[${param.user_name}]]";

</script>

 

* 간단하지만 자꾸 까먹는다... 

Posted by 비니미니파파
Framework2020. 4. 10. 17:59

eclipse Maven 환경

pom.xml 을 열고 

 dependencies 탭에서 Add

spring-boot-devtools 를 찾아서 추가.

xml 에 잘 추가되어 있다.

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
		</dependency>

src/main/resources 

application.properties 를 열고

spring.devtools.livereload.enabled=true

추가 설정 하면

끝!

 

Posted by 비니미니파파
Framework2020. 4. 10. 11:46

[Spring + Mybatis] 연동 시 나타나는 java.sql.SQLException: 부적합한 열 유형: 1111

Error setting null for parameter #8 with JdbcType OTHER . Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 부적합한 열 유형: 1111

#{NAME} 을

#{NAME, jdbcType=VARCHAR} 로 수정 하면 된다.

jdbcType 은 컬럼 Type 을 맞춰주자!

끝!

Posted by 비니미니파파
Framework2020. 4. 6. 18:06

Spring boot 에서 tomcat Port 변경 하기

/src/main/resources

application.properties 파일에다 

server.port = 8085

설정 하면 끝...

application.properties 파일 설정을 더 알고 싶다면.

https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-application-properties.html

Posted by 비니미니파파
Framework2018. 11. 27. 18:05

환경 : eclipse + spring + mybatis 

<appender name="console" class="org.apache.log4j.ConsoleAppender">

<param name="Target" value="System.out" />

<layout class="org.apache.log4j.PatternLayout">

<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %-5p: %c - %m%n" />

</layout>

</appender>


[%d{yyyy-MM-dd HH:mm:ss}] 추가 

Posted by 비니미니파파
Framework2018. 11. 9. 17:11

[개발 잡담]

Exception sending context destroyed event to listener instance of class ....

Eclipse + STS 개발 중 등록한 리스너에서 말썽 이다.

짜증 나서 리스너 막고 개발 하다 이건 아닌거 같아서 구글링 해서 적용해 봐도 결국 충돌 ㅠㅠ

Tomcat 도 clean , Project 도 clean 하면 오류가 안난다.

언제 다시 날지 모르겠다. 

 

Posted by 비니미니파파
Framework2018. 10. 12. 09:28

Spring + Mybatis + Log4j 환경에서 SQL 로그 출력

환경에 따라 다를 수 있으니 참고만 하세요!

1. pom.xml

log4jdbc-remix 추가

 

2. log4j.xml 수정

~/src/main/resources/log4j.xml

    <!-- Query Loggers -->
    <logger name="jdbc.sqlonly" additivity="false"> 
        <level value="INFO"/> 
        <appender-ref ref="console"/> 
    </logger>     

    <logger name="jdbc.resultsettable" additivity="false"> 
        <level value="INFO"/> 
        <appender-ref ref="console"/> 
    </logger>

    <!-- Root Logger --> 

 

3. mybatis-context.xml 수정

<!-- Root Context: defines shared resources visible to all other web components -->
 <context:property-placeholder location="/WEB-INF/spring/mybatis/jdbc.properties" />
 <bean id ="dataSourceSpied" class= "org.springframework.jdbc.datasource.SimpleDriverDataSource" >
            <property name ="driverClass" value= "${jdbc.driverClass}"></property >
            <property name ="url" value= "${jdbc.url}" ></property >
            <property name ="username" value="${jdbc.username}"></property>
            <property name ="password" value= "${jdbc.password}"></property >

     </bean>    

     <!-- Log4JDBC 설정 -->
     <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource"> 
      <constructor-arg ref="dataSourceSpied" /> 
      <property name="logFormatter"> 
      <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter"> 
      <property name="loggingType" value="MULTI_LINE" /> 
      <property name="sqlPrefix" value="SQL:::" /> 
      </bean> 
      </property> 
     </bean>

Posted by 비니미니파파
Framework2017. 2. 15. 09:19

Spring + Mybatis + log4j 연동 중 아래의 오류가 발생


The content of element type "log4j:configuration" must match "(renderer*,appender*,plugin*,(category|logger)*,root?,(categoryFactory|loggerFactory)?)".


log4j.xml 에 새로운 logger 추가 시 <root> 하단에 추가 하여 오류가 난 것이다.

<logger ...>

</logger>


logger 순서를 지켜야 한다.


새로운 logger 추가 시 logger 밑에다 추가 하자

Posted by 비니미니파파
Framework2015. 7. 21. 18:34

Mapped Statements collection does not contain value for .....

Mapper 의 namespace 가 잘 못 되었을 경우 도 발생

mapper namespace 를 확인해보자!

<mapper namespace="......">

Posted by 비니미니파파
Framework2015. 6. 12. 15:42
org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection;

JDBC 연결 오류다!

잘되던게 안된다면 DB 서버 연결을 확인해 봐야 한다!

 

Posted by 비니미니파파
Framework2015. 3. 10. 16:20

java.sql.SQLException: 해당 위치에 지원되지 않는 SQL92 토큰:

어제 오늘 어이없는 오타(?) 때문에 여러 Exception 을 영접한다.

UPDATE TEST_TABLE SET

    CNT = CNT+ 1

WHERE ROW_ID = {#ROW_ID}

이런... 오류가 바로 안보인다. 

WHERE ROW_ID = {#ROW_ID}

===>

WHERE ROW_ID = #{ROW_ID}

#{VAL} 이다 {#VAL} 하면 당연 안된다!!!!!!

내일은 또 어떤 오류를 낼까???  ㅠ.ㅠ

Posted by 비니미니파파
Framework2015. 3. 9. 17:52

Spring + Mybatis 연동 중 프로시져 콜 하는 부분에서

인덱스에서 누락된 IN 또는 OUT 매개변수:: 오류가 났다.

parameter 변수를 아무리 봐도 문제가 없었다...

statementType="CALLABLE" 이걸 빼먹었다....

헐~ ㅠ.ㅠ

결론, 프로시져 호출시에는 statementType="CALLABLE" 빼먹지 말자.

<select statementType="CALLABLE">

 

Posted by 비니미니파파