**
@Service
**
java编译器扫描指定路径下的包,如果一个类带了@Service注解,将这个类作为javabean自动注册到Spring容器,不需要再在applicationContext.xml配置文件中定义bean了,类似的还包括@Component、@Repository、@Controller
所以@service 相当于ApplicationContext.xml中的以下代码
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<!-- singleton-->
<bean id="UserSingleton" class="com.chenxi.demo.po.User" scope="singleton">
<property name="id" value="1"/>
<property name="name" value="辰兮"/>
<property name="age" value="22"/>
</bean>
<!-- prototype-->
<bean id="UserPrototype" class="com.chenxi.demo.po.User" scope="prototype" >
<property name="id" value="2"/>
<property name="name" value="辰兮要努力"/>
<property name="age" value="23"/>
</bean>
</beans>
当用@service标注类中,无须在ApplicationContext.xml配置此类的javabean了。
@Autowired 自动装配
javabean定义遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量。并且要配套写上 get 和 set方法。虽然可以通过eclipse等工具来自动生成。但是还是会引起程序阅读性上的不便。用@Autowired就可以将他简化掉
可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作
1,对成员变量进行注释,其作用是替代Java代码里面的getter/setter与bean属性中的property。如果私有属性需要对外提供的话,getter应当予以保留。引入@Autowired注解
通常javabean中定义一个成员变量,需要getter/setter,如下
public class Users {
private String username;
public Users(){}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
然而用@Autowired 修饰时,即可替代getter/setter,如下
- 在applicationContext.xml中加入:
public class Users {
@Autowired
private String username;
public Users(){}
}
简化版去掉了get和set方法了
2,对构造函数进行注解,如果构造函数有两个入参,分别是 bean1 和 bean2,@Autowired 将分别寻找和它们类型匹配的 Bean,将它们作为 CountryService (Bean1 bean1 ,Bean2 bean2) 的入参来创建 CountryService Bean
后续用到继续补充
@Override
检查被@Override注解的方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误
示例:
public class Annotation1 extends Object{
@Override
public String toString1(){
return"我是重新定义过的toString方法";
}
}
Object类中要有toString1()方法,且使用了@Override(重写)注解,方法名、方法参数必须得和父类保持一致,否则会报错。
如果不加@Override(重写)注解,则正常编译
@Data注解
自动生成getter、setter、equals、hashCode和toString等等
示例:
private String yhz;
public String getYhz() {
return yhz;
}
public void setYhz(String yhz) {
this.yhz = yhz;
}
使用注解后
@Data
public class Class {
private String yhz;
}