spring注解及简单实用

/*
* 原始注解:用途,自己编写的类注入容器使用
* @Component
* @Controller
* @Service
* @Repository
* 以上4个功能基本一样,类似加入<bean id="userDao" class="cn.UserImpl"></bean>
*
* @Autowired:自动注入,需要注入的属性或构造函数加上,spring会自动从容器去查找类型匹配的的,然后赋值
* @Qualifier: 结合@Autowired一起使用,可以配置单独名字
* @Resource:相当于@Autowired+@Resource
* @Value:注入普通属性
* @Scope:标记bean在作用范围
*
*
*
* 新注解:用途,不是自己编写的类需要注入到容器使用
* @Configuration:标记该类为spring配置类,从该类加载注解 类似applictionContxt.xml文件
* @ComponentScan:spring初始化时候需要扫描的包 类似:<context:component-scan base-package="com.itheima"/>
* @Bean:用在方法上,标记将该方法的返回值加入spring容器
* @PropertySource:用于加载.properties 文件中的配置
* @Import:用于导入其他配置类
*
*
* */

1.测试方法入口
import cn.web.config.SpringCofiguration;
import cn.web.domain.User;
import cn.web.server.UserServer;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;


/*
 * 利用SpringJUnit4ClassRunner注入spring测试
 * 步骤:
 * 1.引入junit和SpringJUnit
 * 2.测试类加载类 @RunWith(SpringJUnit4ClassRunner.class)
 * 3.加载配置 @ContextConfiguration("classpath:applictionContext.xml")
 * 4.自动获取属性值
 * 5.测试
 * */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = SpringCofiguration.class)
public class NewAnnoTest {

    @Autowired
    private UserServer server;

    @Test
    public void test(){
        List<User> all = server.findAll();
        System.out.println(all);
    }
}

2.注解配置

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/*
* 原始注解:用途,自己编写的类注入容器使用
* @Component
* @Controller
* @Service
* @Repository
* 以上4个功能基本一样,类似加入<bean id="userDao" class="cn.UserImpl"></bean>
*
* @Autowired:自动注入,需要注入的属性或构造函数加上,spring会自动从容器去查找类型匹配的的,然后赋值
* @Qualifier: 结合@Autowired一起使用,可以配置单独名字
* @Resource:相当于@Autowired+@Resource
* @Value:注入普通属性
* @Scope:标记bean在作用范围
*
*
*
* 新注解:用途,不是自己编写的类需要注入到容器使用
* @Configuration:标记该类为spring配置类,从该类加载注解 类似applictionContxt.xml文件
* @ComponentScan:spring初始化时候需要扫描的包 类似:<context:component-scan base-package="com.itheima"/>
* @Bean:用在方法上,标记将该方法的返回值加入spring容器
* @PropertySource:用于加载.properties 文件中的配置
* @Import:用于导入其他配置类
*
 *
 * */


@Configuration//标志该类是Spring的核心配置类
@ComponentScan("cn.web")//需要扫描包 <context:component-scan base-package="com.itheima"/>
@Import(DataSourceConfiguration.class)//分包导入配置
public class SpringCofiguration {

}

3.数据库链接配置

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;


@PropertySource("classpath:jdbc.properties")
public class DataSourceConfiguration {

    @Value("${jdbc.driver}")
    private String driver;

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Bean("dataSource")  //Spring会将当前方法的返回值以指定名称存储到Spring容器中
    public DruidDataSource getDataSource(){
        DruidDataSource dataSource=new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);

        return dataSource;
    }
}

4.server层,接口代码就不列出了

import cn.web.dao.UserDao;
import cn.web.domain.User;
import cn.web.server.UserServer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServerImpl implements UserServer {

    @Autowired
    private UserDao dao;

    public List<User> findAll() {
        return dao.findAll();
    }
}

5.dao层

import cn.web.dao.UserDao;
import cn.web.domain.User;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidPooledConnection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import sun.dc.pr.PRError;

import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

@Repository
public class UserDaoImpl implements UserDao {

    @Autowired
    private DruidDataSource ds;

    public List<User> findAll() {
        String sql="SELECT * FROM USER";
        try {
            DruidPooledConnection connection = ds.getConnection();
            System.out.println(connection);
        } catch (SQLException e) {
            e.printStackTrace();
        }

        List<User> list =new ArrayList<User>();
        User user=new User();
        user.setId(1);
        user.setPassword("123");
        user.setUsername("admin");
        list.add(user);
        return list;
    }
}

 

posted @ 2020-10-28 10:24  zhuyapeng  阅读(136)  评论(0编辑  收藏  举报