• 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;
        }
    }
  • 相关阅读:
    BZOJ5368:[PKUSC2018]真实排名(组合数学)
    【HDU2222】Keywords Search
    KMP算法
    【BZOJ3262】 陌上花开
    【POJ2104】kth num
    【BZOJ1251】序列终结者
    【BZOJ3524】 [Poi2014]Couriers
    【BZOJ2049】 [Sdoi2008]Cave 洞穴勘测
    【BZOJ1468】Tree
    【BZOJ2152】聪聪可可
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/13889545.html
Copyright © 2020-2023  润新知