zoukankan      html  css  js  c++  java
  • [Java] Spring_1700_Spring_DataSource

    package com.bjsxt.aop;

    LogInterceptor        这里有源码。 其实 : XML 的好处是没有源码的时候照样,可以AOP,所以IOC-Annotation 比较好, AOP-XML比较好

    package com.bjsxt.aop;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.AfterReturning;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;
    
    @Aspect
    @Component
    public class LogInterceptor {
    	@Pointcut("execution(public * com.bjsxt.service..*.add(..))")
    	public void myMethod(){};
    	
    	@Before("myMethod()")
    	public void before() {
    		System.out.println("method before");
    	}
    	
    	@Around("myMethod()")
    	public void aroundMethod(ProceedingJoinPoint pjp) throws Throwable {
    		System.out.println("method around start");
    		pjp.proceed();
    		System.out.println("method around end");
    	}
    }
    //

    package com.bjsxt.dao;

    interface UserDAO

    package com.bjsxt.dao;
    
    import com.bjsxt.model.User;
    
    public interface UserDAO { // 和数据库打交道
    	public void save(User u); // 访问  mysql 的代码
    }

    package com.bjsxt.dao.impl;

    UserDAOImpl

    package com.bjsxt.dao.impl;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.annotation.Resource;
    import javax.sql.DataSource;
    
    import org.springframework.stereotype.Component;
    
    import com.bjsxt.dao.UserDAO;
    import com.bjsxt.model.User;
    
    @Component("u") 
    public class UserDAOImpl implements UserDAO {
    
    	private DataSource dataSource;
    	
    	public DataSource getDataSource() {
    		return dataSource;
    	}
    	@Resource
    	public void setDataSource(DataSource dataSource) {
    		this.dataSource = dataSource;
    	}
    	
    	public void save(User user) {
    		//Hibernate
    		//JDBC
    		//XML
    		//NetWork
    		try {
    			Connection conn = dataSource.getConnection();
    			conn.createStatement().executeUpdate("insert into user values (null, 'zhangsan')");
    			conn.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("user saved!");
    		//throw new RuntimeException("exeption!");
    	}
    
    }

    packagecom.bjsxt.model;

    User  (用户类 : 具有 名字 和 密码 两个属性)

    package com.bjsxt.model;
    
    public class User {
    	private String username;
    	private String password;
    
    	public String getUsername() {
    		return username;
    	}
    
    	public void setUsername(String username) {
    		this.username = username;
    	}
    
    	public String getPassword() {
    		return password;
    	}
    
    	public void setPassword(String password) {
    		this.password = password;
    	}
    
    }

    package com.bjsxt.service;
    UserService  
    用户服务层
    package com.bjsxt.service;
    import javax.annotation.Resource;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Component;
    
    import com.bjsxt.dao.UserDAO;
    import com.bjsxt.model.User;
    
    
    @Component("userService")
    public class UserService {
    	
    	private UserDAO userDAO;  
    	
    	public void init() {
    		System.out.println("init");
    	}
    	
    	public void add(User user) {
    		userDAO.save(user);
    	}
    	public UserDAO getUserDAO() {
    		return userDAO;
    	}
    	
    	@Resource(name="u")
    	public void setUserDAO( UserDAO userDAO) {
    		this.userDAO = userDAO;
    	}
    	
    
    	
    	public void destroy() {
    		System.out.println("destroy");
    	}
    }
    beans.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:aop="http://www.springframework.org/schema/aop"
    	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/aop     
            http://www.springframework.org/schema/aop/spring-aop-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="com.bjsxt" />
    
    	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    
    		<!-- results in a setDriverClassName(String) call -->
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/spring" />
    		<property name="username" value="root" />
    		<property name="password" value="root" />
    	</bean>
    
    	<bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean>
    	<aop:config>
    		<aop:aspect id="logAspect" ref="logInterceptor">
    			<aop:before method="before"
    				pointcut="execution(public * com.bjsxt.service..*.add(..))" />
    		</aop:aspect>
    	</aop:config>
    </beans>


    Test 目录

    package com.bjsxt.service;

    UserServiceTest

    package com.bjsxt.service;
    
    import static org.junit.Assert.*;
    
    import org.junit.Test;
    
    import org.springframework.beans.factory.BeanFactory;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    import com.bjsxt.dao.UserDAO;
    import com.bjsxt.model.User;
    
    public class UserServiceTest {
    
    	@Test
    	public void testAdd() throws Exception {
    		
    		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
    		
    		UserService service = (UserService) ctx.getBean("userService"); // new UserService();
    		System.out.println(service.getClass());
    		service.add(new User());
    		
    		ctx.destroy();
    	}
    }

      写程序推荐,面向接口编程。

    输出如下 :

    mysql-notes

    create database spring;
    use spring;
    create table user (id int primary key auto_increment, name varchar(20));

    -------------------------------------------------------------------------------------------
    数据库连接池的三种实现方式之一 dbcp 的使用,小例子
    SRC目录下
    beans.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:aop="http://www.springframework.org/schema/aop"
    	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/aop     
            http://www.springframework.org/schema/aop/spring-aop-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="com.bjsxt" />
    
    	<!-- 
    		<bean id="dataSource"
    		class="org.apache.commons.dbcp.BasicDataSource"
    		destroy-method="close">
    		
    		
    		<property name="driverClassName" value="com.mysql.jdbc.Driver" />
    		<property name="url" value="jdbc:mysql://localhost:3306/spring" />
    		<property name="username" value="root" />
    		<property name="password" value="bjsxt" />
    		</bean>
    	-->
    
    	<bean
    		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    		<property name="locations">
    			<value>classpath:jdbc.properties</value>
    		</property>
    	</bean>
    
    	<bean id="dataSource" destroy-method="close"
    		class="org.apache.commons.dbcp.BasicDataSource">
    		<property name="driverClassName"
    			value="${jdbc.driverClassName}" />
    		<property name="url" value="${jdbc.url}" />
    		<property name="username" value="${jdbc.username}" />
    		<property name="password" value="${jdbc.password}" />
    	</bean>
    
    	
    </beans>
    jdbc.properties
    jdbc.driverClassName=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/spring
    jdbc.username=root
    jdbc.password=root


  • 相关阅读:
    titanium开发教程0107分组和嵌套view
    titanium开发教程0103理解windows和views
    titanium开发教程0202创建按钮
    titanium开发教程0106理解 ZDepth
    titanium开发教程0204创建开关
    titanium开发教程0201监听事件
    Flex更改Image
    R语言中统计数据框中指定字符出现的次数
    linux shell实现将匹配字符行的最后一个字符替换为指定字符
    plink 软件中 updatemap 命令
  • 原文地址:https://www.cnblogs.com/robbychan/p/3786813.html
Copyright © 2011-2022 走看看