Java 설정 으로 Spring 설치 하기

13140 단어 spring작업 노트
최근 프로젝트 는 Spring 0 설정 을 요구 하 며 자바 설정 을 사용 합 니 다.필요 한 주 해 를 정리 해 보 겠 습 니 다.
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 문제 요약~~

좋은 웹페이지 즐겨찾기