Spring注解
@Component:
加入context约束:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation= "http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
<!--扫描包指定的包-->
<context:component-scan base-package="Com"/>
<!--开启注解-->
<context:annotation-config/>
</beans>
package Com;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
@Component("user")//就是<bean id="user" class="Com.User"/>
@Scope("singleton")
public class User {
@Value("小瘠薄")//就是<property name="name" value="小瘠薄"/>
public String name;
public String getName() {
return name;
}
//也可以直接将 @Value("小瘠薄")加在set方法上,同样注入成功
public void setName(String name) {
this.name = name;
}
public void show(){
System.out.println("用户产生");
}
}
import Com.User;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Test {
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("Bean.xml");
User user=context.getBean("user");
System.out.println(user.name);
}
}
结果:
小瘠薄
Process finished with exit code 0
- 当然,component也可以不加括号,但是,测试类中的getBean方法中不能仅仅一个名称就够
User user=applicationContext.getBean("user")
❌- 于是可以写成:
User user=applicationContext.getBean(User.class);
,或者User user=applicationContext.getBean("user",User.class)
依然运行成功(注意:当Component不加括号时,即不写id,那么测试类中的getBean(“”)内的user应当都是小写)
除此之外
有三个@Component衍生注解
@Service service层(业务层bean定义)
@Repository dao层(数据层bean定义)
@Controller web层(表现层bean定义)
他们与@Component的功能用法一样