基于Java类进行配置Bean
实体类:
package com.lmy.pojo;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* Component注解的意思是说明这个类被spring接管,注册到了容器中
* @author lmy
*/
@Component
public class User {
/**
* 属性注入值
*/
@Value("张三")
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
'}';
}
}
java配置类:
package com.lmy.config;
import com.lmy.pojo.User;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
* @Configuration标识的类也会被spring容器托管,注册到容器中,因为它本身也是一个@Component
* @Configuration代表这是一个配置类,相当于配置文件bean.xml
* @ComponentScan扫描指定包
* @Import 合并其它java配置类
* @author 86152
*/
@Configuration
@ComponentScan("com.lmy.pojo")
@Import(MyConfig2.class)
public class MyConfig {
/**
* 注册一个bean,相当于配置文件中的一个bean标签
* 方法的名字相当于bean标签中的id属性
* 方法的返回值相当于bean标签的class属性
* @return
*/
@Bean
public User user(){
// 返回要注入到bean的对象
return new User();
}
}
@Configuration
public class MyConfig2 {
}
测试:
package com.lmy;
import com.lmy.config.MyConfig;
import com.lmy.pojo.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class MyTest {
public static void main(String[] args) {
// 如果完全使用了配置类方式,就只能通过AnnotationConfig 上下文来获取容器,通过配置类的class对象加载
ApplicationContext context = new AnnotationConfigApplicationContext(MyConfig.class);
User user = context.getBean("user", User.class);
System.out.println(user.toString());
}
}