Java 설정 으로 Spring 설치 하기
1.@Configuration 과@Bean 을 조합 해서 사용
@Configuration 으로 이 종 류 를 설명 하고 등가 와 XML 에 beans 를 설정 합 니 다.@Bean 레이 블 방법 으로 XML 에 bean 을 설정 합 니 다.
실례:
package com.sitech.ddoe.server.all.config;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Iterator;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.AbstractAttribute;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.core.JdbcTemplate;
import com.sitech.ddoe.comm.common.HeartBeatConfig;
import com.sitech.ddoe.comm.server.core.ServerConfig;
/** * server.xml * * @author zhaojing_bcc * */
@Configuration
public class ServerReader {
private DataSource dataSource;
public Logger logger = LoggerFactory.getLogger(getClass());
@PostConstruct
public void init() {
File xmlFile = new File("src/main/resources/server.xml");
FileInputStream fis = null;
try {
fis = new FileInputStream(xmlFile);
} catch (FileNotFoundException e) {
logger.debug("File is not exsit!");
e.printStackTrace();
}
SAXReader saxReader = new SAXReader();
try {
//
Document doc = saxReader.read(fis);
// , data row
Element root = doc.getRootElement();
Iterator iterator = root.elementIterator();
while (iterator.hasNext()) {
//
Element ele = (Element) iterator.next();
//
String elementName = ele.getName();
switch (elementName) {
case "ServerConfig":
handlerServerConfig(ele.attributes());
break;
case "Datasource":
handlerDatasource(ele.attributes());
break;
case "HeartBeat":
handlerHeartBeat(ele.attributes());
break;
default:
break;
}
}
} catch (DocumentException e) {
logger.debug("parse xml error!");
e.printStackTrace();
}
}
/** * HeartBeatConfig * * @param attributes * @return HeartBeatConfig */
@Bean
public HeartBeatConfig handlerHeartBeat(List elementList) {
Integer heartbeatSeconds = null;
Integer channelReadIdleSeconds = null;
for (Iterator it = elementList.iterator(); it.hasNext();) {
// ,
AbstractAttribute aa = (AbstractAttribute) it.next();
String name = aa.getName();
String value = aa.getValue();
switch (name) {
case "heartbeatSeconds":
heartbeatSeconds = Integer.valueOf(value);
break;
case "channelReadIdleSeconds":
channelReadIdleSeconds = Integer.valueOf(value);
break;
default:
throw new RuntimeException(name + "is error property");
}
}
return new HeartBeatConfig(heartbeatSeconds, channelReadIdleSeconds);
}
/** * ServerConfig * * @param elementList * @return ServerConfig */
@Bean
public ServerConfig handlerServerConfig(List elementList) {
Integer port = null;
Integer businessThreadNum = null;
Integer nioThreadNum = null;
for (Iterator it = elementList.iterator(); it.hasNext();) {
// ,
AbstractAttribute aa = (AbstractAttribute) it.next();
String name = aa.getName();
String value = aa.getValue();
switch (name) {
case "port":
port = Integer.valueOf(value);
break;
case "businessThreadNum":
businessThreadNum = Integer.valueOf(value);
break;
case "nioThreadNum":
nioThreadNum = Integer.valueOf(value);
break;
default:
throw new RuntimeException(name + "is error property");
}
}
return new ServerConfig(port, businessThreadNum, nioThreadNum);
}
/** * DataSource * * @param elementList * @return DataSource */
@Bean
public DataSource handlerDatasource(List elementList) {
BasicDataSource dataSource = new BasicDataSource();
for (Iterator it = elementList.iterator(); it.hasNext();) {
// ,
AbstractAttribute aa = (AbstractAttribute) it.next();
String name = aa.getName();
String value = aa.getValue();
switch (name) {
case "driverClassName":
dataSource.setDriverClassName(value);
break;
case "url":
dataSource.setUrl(value);
break;
case "username":
dataSource.setUsername(value);
break;
case "password":
dataSource.setPassword(value);
break;
case "defaultAutoCommit":
dataSource.setDefaultAutoCommit(Boolean.valueOf(value));
break;
case "defaultReadOnly":
dataSource.setDefaultReadOnly(Boolean.valueOf(value));
break;
case "maxActive":
dataSource.setMaxActive(Integer.valueOf(value));
break;
case "maxIdle":
dataSource.setMaxIdle(Integer.valueOf(value));
break;
case "maxWait":
dataSource.setMaxWait(Integer.valueOf(value));
break;
case "initialSize":
dataSource.setInitialSize(Integer.valueOf(value));
break;
default:
break;
}
}
this.dataSource = dataSource;
return dataSource;
}
/** * JdbcTemplate * * @return JdbcTemplate */
@Bean
public JdbcTemplate jdbcTemplate() {
return new JdbcTemplate(dataSource);
}
}
2.main 함수 시작 항목
public class Run {
public static void main(String[] args) {
ApplicationContext annotationContext = new AnnotationConfigApplicationContext("com.sitech.ddoe");
NettyServer n = annotationContext.getBean("nettyServer", NettyServer.class);// bean
n.start();
}
}
3.참고:
Spring Boot 통합 JdbcTemplate 문제 요약~~
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.