@Component,@Service,@Controller,@Repository
这四个注解作用是完全样的一样的.都表示当前类交给spring去创建对象,然后放到容器当中.
@Component
在需要注入容器的对象上增加注解,如@Component
@Component("名字")
然后XML扫描指定包下面有注解标识的类
<context:component-scan base-package="com.xy.entity"/>
测试
@Test
public void phoneTest(){
ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring-context.xml");
Phone p=(Phone) context.getBean("Phone");
System.out.println(p);
}
结果:
Phone(brand=null, price=null)
@Value
spring的注解,赋值属性给对象
结果 >Phone(brand=小米, price=1500)
@Configuration
注解开发
userConfig.class
@Configuration
@ComponentScan(basePackages="com.xy.entity")
public class userConfig {
@Bean("userinit")
public User userinit(){
User user = new User();
user.setName("xy");
user.setAge(18);
user.setSex("男");
return user;
}
}
创建一个配置类
@Configuration
@ComponentScan(basePackages="com.xy.entity")@Configuration表示这个类为配置类,并且@ComponentScan扫描指定包下面被@Component标识的类
User.calss
@Data
@Component
public class User {
private String name;
private int age;
private String sex;
}
测试:
User(name=xy, age=18, sex=男)
Dog(name=null, color=null)
因为开启了
@ComponentScan(basePackages="com.xy.entity")
所以:Dog dog=context.getBean(Dog.class);
System.out.println(dog);也有结果,不过是空的对象,因为
Dog.class也开启了组件@Component注解
@Component
public class Dog {
private String name;
private String color;
}@PropertySource
@PropertySource是一个用于加载外部属性文件(如.properties或.xml文件)到 Spring 环境(Environment)中的注解。它允许将配置信息从代码中分离出来,实现配置与业务逻辑的解耦,这是 Spring 中实现外部化配置的重要手段之
比如:@PropertySource(value = "classpath:config/user.properties", encoding = "UTF-8")
使用@Value("${xxx}")来获取配置文件的值(SPEL表达式),xxx是配置文件对于的键
评论已关闭