[사용 소감] 마벤2의 m2eclipse 사용 매뉴얼의 4가지 일반적인 Dao 실례 작성 (3)

13093 단어 m2eclipse
서비스에 대해 Dao와 기능이 많이 다르지 않기 때문에 저는 주요 호출 방법의 부분을 추출하여 공용으로 만들었습니다. 업무는 아직 테스트를 하지 않았기 때문에 먼저 제거하고 인터페이스 코드는 첨부하지 않았습니다.
AbstractBasicService:spring 주석으로basicDao를 주입하고 사용하는 모든 서비스 클래스는AbstractBasicService를 계승하여 인용된bean의class를AbstractBasicService에 주입합니다
public abstract class AbstractBasicService<T extends JavaBean, PK extends Serializable>

		implements BasicServiceIf<T, PK> {



	private BasicDaoIf<T, PK> basicDao;



	protected Class<T> javabeanclass;



	/**

	 *          AbstractBasicService.

	 * 

	 * @param javabeanclass

	 */

	protected AbstractBasicService(Class<T> javabeanclass) {

		this.javabeanclass = javabeanclass;

	}



	/**

	 * basicDao

	 * 

	 * @return the basicDao

	 * @since CodingExample Ver(      ) 1.0

	 */



	public BasicDaoIf<T, PK> getBasicDao() {

		return basicDao;

	}



	/**

	 * @param basicDao

	 *            the basicDao to set

	 */

	@Resource(name = "basicDao")

	public void setBasicDao(BasicDaoIf<T, PK> basicDao) {

		this.basicDao = basicDao;

	}



	@Override

	public List<T> findAll() {



		return basicDao.findAll(javabeanclass);

	}

}
          ,    ,   src/test/java   , spring       src/test/resources   ,
spring     applicationContext.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:p="http://www.springframework.org/schema/p"

	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"

	xsi:schemaLocation="http://www.springframework.org/schema/beans 

	http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 

	http://www.springframework.org/schema/tx

	http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

	http://www.springframework.org/schema/context

	http://www.springframework.org/schema/context/spring-context-3.0.xsd">

	

	<context:annotation-config />

	<context:component-scan base-package="org.lxh" />

	<tx:annotation-driven transaction-manager="hibernateTransactionManager" />

</beans>


스프링 3.02 현재 자바 클래스를 bean 탭으로 사용할 수 있는 새로운 기능이 있습니다. 따라서 스프링 프로필은 두 마디만 쓰면 됩니다. 업무를 가지고 가려면 세 마디입니다. 스프링 코드는 다음과 같습니다.
@Configuration
public class BeanConfig {
    private static PropertiesFactory factory = PropertiesFactory.getInstance();
 
    @Bean(name = { "basicDao" })
    public BasicDaoIf<JavaBean, Serializable> basicDao() {
        return BasicDaoFactory.getBasicDao();
    }
 
    @Bean(name = { "dataSource" })
    public BasicDataSource dataSource() {
 
        BasicDataSource bds = new BasicDataSource();
        bds.setDriverClassName((String) factory
                .getPropertyValueOrProperties("driverClassName"));
        bds.setUrl((String) factory.getPropertyValueOrProperties("url"));
        bds.setUsername((String) factory
                .getPropertyValueOrProperties("username"));
        bds.setPassword((String) factory
                .getPropertyValueOrProperties("password"));
 
        return bds;
    }
 
    @Bean(name = { "sessionFactory" })
    public SessionFactory getSessionFactory() throws Exception {
        AnnotationSessionFactoryBean sessionFactoryBean = new AnnotationSessionFactoryBean();
        sessionFactoryBean.setDataSource(this.dataSource());
        sessionFactoryBean.setHibernateProperties((Properties) factory
                .getPropertyValueOrProperties(""));
        String packagesToScan = (String) factory
                .getPropertyValueOrProperties("packages");
        String[] packages = packagesToScan.split(":");
        if (null == packages) {
            sessionFactoryBean
                    .setPackagesToScan(new String[] { packagesToScan });
        } else {
            sessionFactoryBean.setPackagesToScan(packages);
        }
        sessionFactoryBean.afterPropertiesSet();
        return sessionFactoryBean.getObject();
    }
 
    @Bean(name = { "hibernateTemplate" })
    public HibernateTemplate getHibernateTemplate() throws Exception {
        HibernateTemplate hibernateTemplate = new HibernateTemplate();
        hibernateTemplate.setSessionFactory(this.getSessionFactory());
        return hibernateTemplate;
    }
 
    @Bean(name = { "hibernateTransactionManager" })
    public HibernateTransactionManager getHibernateTransactionManager()
            throws Exception {
        HibernateTransactionManager hibernateTransactionManager = new HibernateTransactionManager();
        hibernateTransactionManager.setSessionFactory(this.getSessionFactory());
        return hibernateTransactionManager;
    }
 
}

bean 중 하나는properties를 읽어야 하기 때문에 설정 파일을 읽는 공장에 추가해야 합니다
PropertiesFactory:
public class PropertiesFactory {
 
    private static final String FILE = "springApplicationContext.properties";
 
    private static PropertiesFactory propertiesFactory = new PropertiesFactory();
 
    private InputStream in;
 
    private Properties p;
 
    public static PropertiesFactory getInstance() {
 
        return propertiesFactory;
 
    }
 
    /**
     *          PropertiesFactory.
     * 
     */
    private PropertiesFactory() {
        super();
    }
 
    public void init() {
        in = this.getClass().getClassLoader().getResourceAsStream(FILE);
    }
 
    public Object getPropertyValueOrProperties(final String property) {
        try {
            init();
            p = new Properties();
            p.load(in);
            if (StringUtils.isNotEmpty(property))
                return p.getProperty(property);
            else
                return p;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

springApplicationContext.properties:
url:구동 주소
driverClassName:드라이버 이름
username: 데이터베이스 이름
password: 데이터베이스 암호
packages:spring 스캔할 패키지
# JDBC Config



url=jdbc:mysql://localhost:3306/testUser

driverClassName=com.mysql.jdbc.Driver

username=root

password=root



#Hibernate Config

hibernate.dialect=org.hibernate.dialect.MySQLDialect

hibernate.hbm2ddl.auto=update

hibernate.format_sql=true

hibernate.show_sql=true



#Spring Config

packages=org.lxh.bean

좋은 웹페이지 즐겨찾기