整体结构:
1.建立一个DTO
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;
}
}
2.建立Dao类,这里模拟数据查询,没有连接数据库(没有使用注解)
package com.spring.javaconfig;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
public List<User> querryUserList(){
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;
}
}
3.建立service,使用注解
@Service
public class UserService {
@Autowired
private UserDao userdao;
public List<User> querryUserList(){
return userdao.querryUserList();
}
}
4.建立配置文件类 SpringConfig
package com.spring.javaconfig;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import com.jolbox.bonecp.BoneCPDataSource;
/*
* @Configuration 该注解表明该类相当于spring的xml配置文件
* @PropertySource 注解 ignoreResourceNotFound=true 查找不到配置文件就自动忽略
* 加载多个配置文件value={"classpath:jdbc1.properties","classpath:jdbc2.properties"}
*/
@Configuration
@ComponentScan(basePackages="com.spring.javaconfig") //包扫描
@PropertySource(value={"classpath:jdbc.properties"},ignoreResourceNotFound=true) //加载配置文件
public class SpringConfig {
@Bean //ͨ相当于spring中的<bean>
public UserDao getUserDao(){
return new UserDao();
}
//加载配置jdbc配置文件
@Value("${jdbc.driverClassName}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean(destroyMethod="close") //关闭连接,将连接放回连接池
public BoneCPDataSource boneCPDataSource(){
BoneCPDataSource boneCPDataSource= new BoneCPDataSource();
boneCPDataSource.setDriverClass(driverClassName);
boneCPDataSource.setJdbcUrl(url);
boneCPDataSource.setUsername(username);
boneCPDataSource.setPassword(password);
boneCPDataSource.setIdleMaxAgeInMinutes(30);
boneCPDataSource.setMaxConnectionsPerPartition(100);
boneCPDataSource.setMinConnectionsPerPartition(5);
return boneCPDataSource;
}
}
5.建立主方法类,AnnotationConfigApplicationContext类来加载配置文件,启动Spring.
package com.spring.javaconfig;
import java.util.List;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class Main {
public static void main(String[] args) {
//ͨ容器加载Spring配置文件
AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
//获取指定的bean
UserService service=context.getBean(UserService.class);
//通过注解了的service来调用我们没有注解的Dao
List<User> list=service.querryUserList();
for(User user:list){
System.out.println(user.getUsername()+":"+user.getPassword()+":"+user.getAge());
}
//关闭容器
context.destroy();
}
}
这里只使用了spring
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>