1. 程式人生 > 實用技巧 >spring註解及簡單實用

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;
    }
}