我在网上看了很多写注解开发,写的模棱两可的,没有提及怎么使用,讲的太底层,我们先会用再去看底层的,耐心看完,绝对可以彻底搞懂
使用注解开发的最大的好处就在于可以大大的减少开发中代码的编写,柬扫那些冗余的代码
我们首先把spring-config.xml中的bean的东西都删掉,修改成这样,(推荐直接CV)
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="com.itheima" />
</beans>
增加的这行context就是和注解对应的,base-package代表要放入的包,也就是我们配置class前面的包
之前配置Spring-config.xml的时候写bean要做很多的事情,但是现在有了@Componen这个注解,一切都不用配置,我们截图看一下,都是配好的
声明一个@Component之后,在后面填写这个id值,就会自动的配置一个bean但是我们是看不到的
我们先看普通使用
类中写成这样,记住@Component后面跟的就是bean中的id
@Component("settingDao")
public class SettingDao {
void S(){
System.out.println("the secoundy running");
}
}
测试类不变
public class test {
public static void main(String[] args) {
ApplicationContext acc = new ClassPathXmlApplicationContext("Springconfig.xml");
SettingDao settingDao= (SettingDao)acc.getBean("settingDao");
settingDao.S();
}
}
这样我们就可以运行出结果
完全没问题,下面使用的就是依赖注入的
依赖注入也很简单,就是使用@Autowired来进行注解,但是注解的位置不一样,这个注解得设置在我们引用的地方,因为我们需要一进来就让其注入
源码中就需要一个boolean类型的来接收,是否一进来就开始注入,默认就是true,如果有报错,手动加一个参数true就可以了,我看网上还有用@Requried的绑定在方法上面的 ,但这种方法已经不用了
我们的SettingDao的文件不动
@Component("serviceDao")
public class ServiceDao {
@Autowired()
public SettingDao settingDao;
public void setSettingDao(SettingDao settingDao) {
this.settingDao = settingDao;
}
public void setting() {
System.out.println("the main is running ");
settingDao.S();
}
}
service这个模块写成这样,就可以使用了,把测试文件的id接收换一换
public class test {
public static void main(String[] args) {
ApplicationContext acc = new ClassPathXmlApplicationContext("Springconfig.xml");
ServiceDao serviceDao= (ServiceDao)acc.getBean("serviceDao");
serviceDao.setting();
}
}
这样就可以了
当然这个只是半注解开发吧,毕竟还是需要配置xml文件,我们后面出一个使用类来配置xml文件