【Spring】核心概念:注解开发 [ 编程杂谈 ]
大数据男孩 文章 正文
明妃
{{nature("2022-09-12 18:41:00")}}更新注解开发
配置文件的作用降低,只需要完成扫描器的定义就行,类上添加一个注解,就表示该类是容器管理的 Bean
类添加注解
import cn.bigdataboy.service.NameService;
import org.springframework.stereotype.Component;
@Component("nameService") // 参数就是 id
public class NameServiceImpl implements NameService {
public void save() {
System.out.println("service save ...");
}
}
类注解的官方推荐使用
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import org.springframework.stereotype.Component;
@Controller // 表现层
@Service // 业务层
@Repository // 数据层
@Component("nameService") // 其他层
配置添加 扫描器
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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
">
<!-- 定义扫描器 上面的命名空间要完整,idea自动的生成的不完整-->
<context:component-scan base-package="cn.bigdataboy"/>
</beans>
纯注解开发
不再需要配置文件,所以也很容易想到,配置文件转变成配置类,同时也就能想到,在初始化容器时,传入的也就不是配置文件,而是配置类了
配置类格式
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration // 表示配置类
@ComponentScan({"cn.bigdataboy.dao","cn.bigdataboy.service"}) // 扫描器定义多个路径,可以通配,建议准确一点,毕竟有些类不建议 Bean 化
public class SpringConfig {
}
使用
import cn.bigdataboy.config.SpringConfig;
import cn.bigdataboy.dao.NameDao;
import cn.bigdataboy.service.NameService;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class AppForAnnotation {
public static void main(String[] args) {
// 加载配置类
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringConfig.class);
// 从容器获取对象
NameService nameService = (NameService) context.getBean("nameService");
NameDao nameDao = context.getBean("nameDao", NameDao.class);
System.out.println(nameService);
System.out.println(nameDao);
}
}
案例代码:https://pan.bigdataboy.cn/s/y4jie
{{nature('2020-01-02 16:47:07')}} {{format('12641')}}人已阅读
{{nature('2019-12-11 20:43:10')}} {{format('9527')}}人已阅读
{{nature('2019-12-26 17:20:52')}} {{format('7573')}}人已阅读
{{nature('2019-12-26 16:03:55')}} {{format('5017')}}人已阅读
目录
标签云
一言
评论 0
{{userInfo.data?.nickname}}
{{userInfo.data?.email}}