java的配置方式簡介
阿新 • • 發佈:2018-07-17
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的配置方式簡介