從Spring3.0開始,Spring支持以Java配置的方式來代替XML配置。這一點提及來其實有點好笑,XML配置的方式最初被建立出來就是爲了讓配置與程序員無關。但是最終咱們發現,絕大多數的那些配置最終仍是回到了程序員手裏。因而,從Spring3.0開始,咱們又將主動權交回到了本身手裏。java
讓咱們看一個最簡的Spring註解案例:mysql
1.建立測試項目程序員
Userspring
package com.zuikc.bean;sql
public class User {ide
private String username;測試
private String password;ui
private int age;this
public User(String username, String password, int age){url
this.username = username;
this.password = password;
this.age = 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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
}
}
UserDao
package com.zuikc.dao;
import com.zuikc.bean.User;
import java.util.ArrayList;
import java.util.List;
public class UserDao {
public List<User> queryUserList(){
List<User> result = new ArrayList<User>();
for (int i = 0; i < 10; i++) {
User user = new User("username_" + i,"password_" + i ,i);
result.add(user);
}
return result;
}
}
UserService
package com.zuikc.service;
import com.zuikc.bean.User;
import com.zuikc.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserDao userDAO;
public List<User> queryUserList() {
return this.userDAO.queryUserList();
}
}
2.Spring的Java配置方式
一直到目前爲止,咱們看到的從bean到service,跟傳統的ssm沒有任何區別。理論上,這個時候咱們就要去配置spring的配置文件了,可是這個時候咱們決定拋棄這種傳統的作法,改而使用java配置的方式。
讓咱們首先建立一個java類,好比叫SpringConfig(名字其實能夠任意),代碼以下:
SpringConfig,
package com.zuikc.config;
import com.zuikc.dao.UserDao;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration //代表該類爲配置類,至關於xml配置
@ComponentScan(basePackages = "com.zuikc") //配置掃描包
public class SpringConfig {
@Bean // 配置bean
public UserDao getUserDAO(){
return new UserDao(); // 直接new對象作演示
}
}
如今讓咱們依次解釋這個類中的3個註解。
@Configuration,做用於類上,這代表這就是一個配置類,至關於當前這個類就是以前的xml配置文件;
@ ComponentScan,是否是有點熟悉,這是在配置spring的掃描包;
@Bean 做用於方法上,至關於xml配置中的<bean>。之前的bean,是在xml中配置,而後由spring容器生產出來。如今呢,不要容器生產了,由咱們本身生產;
3.測試
寫一個測試主類吧:
package com.zuikc;
import com.zuikc.bean.User;
import com.zuikc.config.SpringConfig;
import com.zuikc.service.UserService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import java.util.List;
public class SampleTest01 {
public static void main(String[] args) {
// 實例化Spring容器
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
// 獲取Bean對象
UserService userService = context.getBean(UserService.class);
List<User> list = userService.queryUserList();
for (User user : list) {
System.out.println(user);
}
// 容器銷燬
context.destroy();
}
}
結果爲:
4.用Java配置支持配置文件讀取
咱們能夠經過@PropertySource指定配置文件,並經過@Value註解獲取值,具體用法以下,
建立配置文件properties,內容以下
url=jdbc:mysql://localhost:3306/jdbctestdb
而後好比修改UserDao,
啓動代碼,看看是否已經url是否已經獲得了:)。
感謝關注「碼農星球」。本文版權屬於「碼農星球」。咱們提供諮詢和培訓服務,關於本文有任何困惑,請關注並聯系咱們。