1. 程式人生 > >java的配置方式簡介

java的配置方式簡介

ica .get ont ram context new對象 fig xml配置 jdbc

1,java的配置方式簡介
java的配置方式是為了代替使用xml配置方式,
主要使用兩個註解:
@Configuration//通過該註解來表明該類是一個spring的配置,相當於一個xml文件
@ComponentScan(basePackages="com.SpringBoot.javaConfig")//配置掃碼包

設置bean的方式,既可以直接在bean類上面使用@Component,@Service
也可在java配置類裏面使用@bean,搭配類似如下方法代替xml中bean的配置:
@Bean //通過該配置來表明是一個bean對象,相當於xml裏面的<bean>

    //以下也可通過直接在User上面使用@Component代替
@Bean //通過該配置來表明是一個bean對象,相當於xml裏面的<bean> public UserDAO getUserDAO() { return new UserDAO();//直接new對象做演示 }

初始化spring容器,由於不再使用配置文件了:

ApplicationContext = new ClassPathXmlApplicationContext(xmlPath); 

而是使用如下方式代替:

AnnotationConfigApplicationContext context=
new AnnotationConfigApplicationContext(SpringConfig.class
);

該方式,會通過SpringConfig這個配置類進行容器初始化。

獲取bean的方式,同樣可以使用context.getBean(類.class)方式,如下:

UserService userService=context.getBean(UserService.class);

這種方式依然可以使用@Autowired等註解。

這種java配置方式,完全不需要xml配置,簡單易懂。


二,讀取外部的資源配置文件
通過@propertySource可以讀取指定的配置文件,通過@value註解獲取值。具體用法:

@propertySource(value={"classpath:jdbc.properties"})
public class SpringConfig {   @Value("${jdbc.url}")   private String jdbcUrl;   @Bean   public UserDAO getUserDAO()   {     return new UserDAO();   } }

為了保證如果讀取的配置文件不存在忽略他,加上屬性:ignoreResourceNotFound=true
如果多個配置文件,可以修改value值:

@propertySource(value={"classpath:jdbc.properties","xxxx","xxxx"},ignoreResourceNotFound=true)

實例:

第一步:新建一個實體類:User

package com.SpringBoot.javaConfig;

public class User {

    private String username;
    private String password;
    private Integer age;
    
    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;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

新建一個UserDAO模擬DAO數據庫查詢

package com.SpringBoot.javaConfig;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Component;

public class UserDAO {
    
    public List<User> queryUserList(){
        
        List<User> result=new ArrayList<User>();
        //模擬數據庫查詢
        for(int i=0;i<10;i++)
        {
            User user=new User();
            user.setUsername("username_"+i);
            user.setPassword("password_"+i);
            user.setAge(i+1);
            result.add(user);
        }
        return result; 
    }

}

第三步:新建一個UserService調用UserDAO

package com.SpringBoot.javaConfig;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    //註入spring容器中的bean對象
    private UserDAO userDAO;
    
    public List<User> queryUserList(){
        return userDAO.queryUserList();
    }
}

最後一步:新建一個main方法測試:

package com.SpringBoot.javaConfig;

import java.util.List;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Main {

    public static void main(String[] args) {
        
        //通過java配置來管理Spring容器
        AnnotationConfigApplicationContext context=
                new AnnotationConfigApplicationContext(SpringConfig.class);
        //在spring容器中獲取bean對象
        UserService userService=context.getBean(UserService.class);
        
        //調用對象中的方法
        List<User> list=userService.queryUserList();
        for(User user:list)
        {
            System.out.println(user.getUsername()+","+user.getPassword()+","+user.getAge());
        }
        
        //銷毀容器
        context.destroy();
    }

}

java的配置方式簡介