Spring的Java配置
1.创建maven工程
创建maven工程,打包方式为jar,引入相关依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.7.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<!-- java编译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
2.案例演示
①.SpringConfig类
//通过该注解来表明是一个Spring的配置,该类就相当于application.xml文件
@Configuration
//通过该注解来申明扫描的包名,相当于xml文件中的<context:component-scan base-package="xxx" />标签
@ComponentScan(basePackages={"com.xin.service"})
//引入属性配置至Spring容器中,如果键相同则后引入的值会覆盖原来的值
@PropertySource(value={"classpath:config.properties","classpath:config2.properties"})
public class SpringConfig {
//通过该注解来表明是一个Bean对象,相当于xml中的<bean>
@Bean
public IUserDao getIUserDao(){
return new UserDaoImpl();
}
}
②.service层
public interface IUserService {
public List<User> getUserList();
public void testPropertier();
}
@Service
public class UserServiceImpl implements IUserService {
@Resource
public IUserDao userDao;
@Override
public List<User> getUserList() {
return userDao.getUserList();
}
@Override
public void testPropertier() {
userDao.testPropertier();
}
}
③.dao层
public interface IUserDao {
public List<User> getUserList();
public void testPropertier();
}
//没有Repository注解,通过配置配置类的@Bean注解管理
public class UserDaoImpl implements IUserDao {
@Override
public List<User> getUserList() {
//模拟查询出的用户数据
List<User> result = new ArrayList<>();
for (int i = 0; i < 10; i++) {
result.add(new User("user" + i, "password" + i));
}
return result;
}
@Value("${TestPropertier}")
private String testProperties;
@Override
public void testPropertier() {
System.out.println(testProperties);
}
}
④.pojo类
public class User {
private String username;
private String password;
//省略getter,setter方法及空参有参构造
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
⑤.测试方法
public class Main {
@SuppressWarnings("resource")
public static void main(String[] args) {
//创建Spring容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
IUserService userService = context.getBean(IUserService.class);
List<User> userList = userService.getUserList();
for (User user : userList) {
System.out.println(user);
}
//销毁容器
context.destroy();
}
}
⑥.main方法测试结果
十月 03, 2017 5:17:49 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext prepareRefresh
信息: Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@5876a9b6: startup date [Tue Oct 03 17:17:49 CST 2017]; root of context hierarchy
User [username=user0, password=password0]
User [username=user1, password=password1]
User [username=user2, password=password2]
User [username=user3, password=password3]
User [username=user4, password=password4]
User [username=user5, password=password5]
User [username=user6, password=password6]
User [username=user7, password=password7]
User [username=user8, password=password8]
User [username=user9, password=password9]
Test2
十月 03, 2017 5:17:49 下午 org.springframework.context.annotation.AnnotationConfigApplicationContext doClose
信息: Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@5876a9b6: startup date [Tue Oct 03 17:17:49 CST 2017]; root of context hierarchy