SpringMVC 환경 세팅
Spring setting
spring legacy project -> Spring MVC project ->com.tis.mvc 생성 -> pom.xml
<java-version> 1.6 -> 1.8 변경 -> <org.springframework-version>5.0.7변경
<org.aspectj-version> 1.9.0으로 변경
Dependencies 탭 누르고 maven에 add -> Group id= javax.servlet ,Artifact id=javax.servlet-api
version= 3.1.0 완료
Test version 4.12 로 변경
Test 밑에 주석 ADD My Module
Dependencies add누르고 -> org.projectlombok, lombok, 1.18.0 생성
add -> org.springframework, spring-test, ${org.springframework-version} 생성
add -> com.oracle, ojdbc6, 11.2.0.3 scope : system 생성 후
<systemPath>${basedir}/src/main/webapp/WEB-INF/lib/ojdbc6.jar</systemPath> 추가
src->main->webapp->WEB-INF->lib폴더 생성 후 ojdbc6.jar 복붙
<!-- DBCP Module -->주석만들기
add->org.apache.commons, commons-dbcp2, 2.1.1
<!-- MyBatis Module -->주석만들기
add->org.mybatis, mybatis, 3.4.6 생성
add->org.mybatis, mybatis-spring, 1.3.2 생성
add->org.springframework, spring-ibatis, 2.0.8 생성
<!-- Spring JDBC Module -->주석만들기
add->org.springframework, spring-jdbc, ${org.springframework-version} 생성
add->org.springframework, spring-tx, ${org.springframework-version} 생성
<!-- HikariCP --> 주석만들기 (커넥션풀)
add->com.zaxxer, HikariCP, 2.7.4 생성
C:\Users\user\.m2\repository 들어가면 등록한 라이브러리 파일 있음
<groupId>org.apache.maven.plugins</groupId>
build에
source, target =>1.8로 변경
SpringMVC 우클릭 후 Maven -> update project
----------------파일로 복붙하기 가능-----------------------
우측상단에 검색 옆에꺼 누르고 Java EE Open
server new 아파치 톰캣 8.5 -> directory Browse 클릭 후 톰캣 8.5폴더로 설정 ->
Installed JREs... 클릭 후 Edit 눌러서 Jre파일을 JdK파일로 변경 후 apply and close ->
jre를 다시 눌러서 workspace jre1.8.0변경 후 피니시
서버 우클릭 add and Remove 들어가서 SpringMVC 우측으로 보내고 피니시
더블클릭 후 Tomcat admin port - -> 9091 변경 후 저장하고
서버 실행 후 SpringMVC run as 눌렀을 때 Hello World! 뜨면 성공
--------------------------------------------------------------------------------
src -> main -> webapp -> web.xml
거기서 Processes application requests 주석 안 param값을
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml,
/WEB-INF/spring/appServlet/memo-context.xml
</param-value>
으로 변경
Bean properties파일 사용
<context:property-placeholder location="classpath:ex11/admin.properties"/>를 명시해준다.
AdminInfo.java
package ex11;
public class AdminInfo {
private String adminId;
private String adminPwd;
public String getAdminId() {
return adminId;
}
public void setAdminId(String adminId) {
this.adminId = adminId;
}
public String getAdminPwd() {
return adminPwd;
}
public void setAdminPwd(String adminPwd) {
this.adminPwd = adminPwd;
}
}
admin.properties
admin=sys
adminPwd=Abcd1234
application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- context 네임스페이스를 추가한 뒤, context:property-placeholder를 통해
admin.properties 파일이 위치한 경로를 잡아주자. -->
<context:property-placeholder location="classpath:ex11/admin.properties"/>
<!-- 다른 스키마와 충돌을 막기위해서 context를 추가한다.
다른파일에 admin.properties가 없다면 context를 빼고 property-placeholder만 적으면 된다 -->
<!-- [1] AdminInfo빈을 생성하고, 아이디와 비번을 setter injection으로 주입하세요. scott, tiger -->
<bean id="admin1" class="ex11.AdminInfo">
<property name="adminId" value="scott"/>
<property name="adminPwd" value="tiger"/>
</bean>
<!-- [2] admin.properties파일에 설정된 아이디와 비번을 갖는 AdminInfo빈 생성하기 -->
<bean id="admin2" class="ex11.AdminInfo">
<property name="adminId" value="${admin}"/>
<property name="adminPwd" value="${adminPwd}"></property>
</bean>
<!-- context:property의 설정된 key값으로 el표현식 -->
</beans>
config 생성에서 주입
package ex12;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
@Configuration
public class AppConfig {
@Value("${admin}")
private String adminId; //sys주입
@Value("${adminPwd}") //ex12/admin.properties 파일에 key값을 찾아서 넣는다.
private String adminPwd;
@Value("scott")
private String subAdminId;//scott주입
@Value("tiger")
private String subAdminPwd;
//외부파일(admin.properties)의 데이터 얻어오기 위한 빈을 생성
@Bean
public static PropertySourcesPlaceholderConfigurer properties() {
PropertySourcesPlaceholderConfigurer config = new PropertySourcesPlaceholderConfigurer(); //기본생성자 생성
//PropertySourcesPlaceholderConfigurer객체에 admin.properties파일이 위치한 경로를 주입한다.
Resource res= new ClassPathResource("ex12/admin.properties"); //파일위치 참조하는 것
config.setLocation(res); //리소스 객체 넣기
return config;
}
@Bean
@Scope("prototype") //객체가 호출될 때마다 새로 생성됨
public AdminInfo admin1() {
AdminInfo a=new AdminInfo();
a.setAdminId(adminId);
a.setAdminPwd(adminPwd);
return a;
}
@Bean
public AdminInfo admin2() {
//AdminInfo a=new AdminInfo();
AdminInfo a= admin1();
a.setAdminId(subAdminId);
a.setAdminPwd(subAdminPwd);
return a;
}
}
annotation
package ex13;
import javax.inject.Inject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
//어노테이션을 통해 주입하는 방법
//[1] @Value ==> 기본자료형이나 문자열 값을 주입할 때 사용하는 어노테이션
//[2] @Autowired ==> 참조형을 주입할 때 사용 (by type으로 주입)
//[3] @Resource ==> 참조형을 주입할 때 사용 (by name으로 주입)
//[4] @Inject ==> 참조형을 주입할 때 사용 [단, pom.xml에 Inject라이브러리를 등록해야 사용 가능]
public class ServiceImpl implements Service {
@Autowired
@Qualifier("emp2")
private Emp emp;
/**Emp라는 클래스 유형의 빈이 있을 경우 주입해준다.
* 이 때 같은 타입이 여러 개 있을 경우 예외가 발생한다.
* 이럴 때는 이름 식별하기 위해 @Qualifier("빈이름")을 함께 사용하여
* 어떤 빈인지 이름을 명시해주면 해결 가능하다.
* */
//@Resource(name="member")
@Inject
private Member user;
/*@Resource : 리소스 이름이 member인 객체를 주입해준다. 즉 빈의 이름으로 주입한다.
* 주로 xml에 설정된 빈을 주입할 때 많이 사용한다. */
/*@Inject : 자바에서 지원하는 어노테이션 by type으로 주입한 뒤, 만약 타입으로 연결되지 않으면 name으로 연결한다.
* pom.xml에 아래와 같이 라이브러리 등록해야 사용가능하다.
* <dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>*/
@Override
public void test1() {
System.out.println(emp);
}
@Override
public void test2() {
System.out.println(user);
}
}
'개발자 > 국비지원 SW' 카테고리의 다른 글
국비지원 89일차 - Spring memo db연결 및 CRUD (0) | 2020.08.20 |
---|---|
국비지원 88일차 - NodeJS 회원 삭제, 수정, id 중복 (0) | 2020.08.19 |
국비지원 86일차 - Spring Bean xml < - > java(config), NodeJS oracleDB (0) | 2020.08.14 |
국비지원 85일차 - Spring container, DI(의존성 주입), bean위치, bean 자료구조, config 클래스 (0) | 2020.08.14 |
국비지원 84일차 - NodeJS 미들웨어, 뷰엔진, MVC설정 (0) | 2020.08.12 |