当前位置: 首页 > news >正文

图片上传分享平台seo顾问推推蛙

图片上传分享平台,seo顾问推推蛙,重庆博达建设集团股份有限公司网站,陕西西安网络公司前言 前面我们管理 bean 都是在 xml 文件中去管理,本次我们将介绍如何在 Java 配置类中去管理 bean。 注解结合 Java 配置类是一种常见的 Spring 注入 Bean 的方式。通常情况下,开发人员会使用 Java Config 来定义应用程序的配置信息,而在 …

前言

前面我们管理 bean 都是在 xml 文件中去管理,本次我们将介绍如何在 Java 配置类中去管理 bean。

注解结合 Java 配置类是一种常见的 Spring 注入 Bean 的方式。通常情况下,开发人员会使用 Java Config 来定义应用程序的配置信息,而在 Java Config 中使用注解来声明和注入 Bean。

@Configuration@ComponentScan@Bean 是 Spring Framework 中的常用注解,用于配置和创建 Bean。

  • @Configuration 注解标识一个类为配置类,相当于以前的 XML 配置文件。通常在该类中定义了一些用于创建和组装 Bean 的方法。

  • @ComponentScan 注解用于自动扫描指定包及其子包中的组件(包括注解为 @Component@Service@Repository@Controller 等的类),并注册为 Spring 上下文中的 Bean。

  • @Bean 注解用于声明一个方法,该方法将返回一个对象,该对象将被注册为 Spring 上下文中的 Bean。@Bean 注解可以用在 @Configuration 类中的方法上,也可以用在普通的 @Component 类中的方法上。

 一、开始学习

1、新建项目,结构如下

2、添加 spring 依赖
 <!-- spring 的核心依赖 --><dependencies><!-- https://mvnrepository.com/artifact/org.springframework/spring-context --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.23</version></dependency><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.4.5</version></dependency></dependencies>
 3、在 service 包下新建一个 UserService 接口,在 impl 包下新建一个 UserServiceImpl 实现类

UserService 接口

public interface UserService {void add();}

UserServiceImpl 实现类

@Slf4j
public class UserServiceImpl implements UserService {@Overridepublic void add() {log.info("添加用户");}
}
4、在 controller 包下新建一个 UserController 类
@RequiredArgsConstructor
public class UserController {/*** 通过构造方法注入 UserService*/private final UserService userService;public void add() {userService.add();}}
5、在 config 包下新建一个 AppConfig 配置类
/*** @Date 2023-10-07* @Author qiu* <p>* spring 提倡使用注解和配置类来完成 bean 的装配,* 而配置类就是全面取代 xml 配置文件的一种方式*/@Configuration
@ComponentScan(basePackages = "edu.nf.ch13")
public class AppConfig {/*** * @Configuration注解:标识一个类为合法的配置类* ** * @ComponentScan注解:用于扫描指定的包,装配相关的 bean* * 等价于 xml 中的扫描* ** * @Respository注解来装配 bean 以外,还可以使用* ** * @Bean 注解在配置类中装配 Bean,这种方式很类似* * 在 xml 中配置一个个的 <bean id="xxx"/>* * 用了 @Bean 注解后默认标注的方法名就是 Bean 的 id* <p>* 还可以通过 name 属性指定 bean 的别名** @return*/@Beanpublic UserService userService() {return new UserServiceImpl();}/*** 当需要注入其他 bean 的时候,有两种方式* 方式一:通过参数实现注入* 方式二:通过调用 bean 方法来实现注入** @Scope:还可以声明在 Bean 方法上来设置 Bean 的作用域* @return*/@Bean@Scope("prototype")public UserController userController() {return new UserController(userService());}}

 这是一个使用 Java 配置类来装配 Spring Bean 的示例代码。

在这个示例中,@Configuration 注解表示 AppConfig 类是一个合法的配置类。@ComponentScan 注解用于扫描指定包中的组件,并将其装配为 Spring Bean。

  1. userService() 方法使用 @Bean 注解来声明一个名为 "userService" 的 Spring Bean,并将其返回。可以看到,在这里我们不需要编写 XML 配置文件,仅仅通过 Java 代码就可以完成 Bean 的装配。
  2. userController() 方法也使用 @Bean 注解来声明一个名为 "userController" 的 Spring Bean,并注入 "userService" Bean。在这个方法中,我们可以使用参数来实现依赖注入,也可以通过调用其他 Bean 方法来实现依赖注入。
  3. 此外,我们还使用 @Scope 注解来设置 UserController Bean 的作用域为原型(prototype),以确保每次调用 userController() 方法都会创建一个新的实例。

总体来说,使用 Java 配置类来装配 Spring Bean 比起 XML 配置文件更加直观、方便,也更利于代码维护和易读性。

 注意了!!!这个配置类就已经代替了 xml 文件,所以就不需要再去写 xml 文件了。还有我们之前都是通过使用特定注解(@Seivice、@Controller)去声明一个 Bena,现在也不需要写了,因为在配置文件中使用了 @Bean 去声明,大家自行选择使用。

6、测试
public class Main {public static void main(String[] args) {// 创建基于注解和配置类的容器工厂// 取代 ClassPathXmlApplicationContext// 构造方法指定配置类的 Class 对象ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);UserController bean = context.getBean(UserController.class);bean.add();}}

 这段代码展示了如何使用基于注解和配置类的 Spring 容器工厂。具体来说,主要包含以下几个步骤:

  1. 创建基于注解和配置类的容器工厂

使用 AnnotationConfigApplicationContext 类来创建一个基于注解和配置类的 Spring 容器工厂。通过将 AppConfig.class 作为参数传入构造方法,指定了配置类的 Class 对象。

  1. 获取 Bean

通过调用容器工厂的 getBean() 方法,传入需要获取的 Bean 的类型 UserController.class,从而获取到名为 "userController" 的 Spring Bean。

  1. 使用 Bean

得到 Bean 之后,即可进行相关操作,这里调用了 add() 方法。

相比于传统的 XML 配置方式,在基于注解和配置类的方式下,上述三个步骤都荟萃在 Main 类中,更加简单明了。同时,由于使用注解,在代码中对 Bean 及其依赖关系进行了直接定义和维护,因此可以更加灵活地进行配置和管理。

运行结果

 

二、使用注解结合Java配置类的好处

使用注解结合Java配置类的好处有以下几点:

  1. 清晰明了:使用注解和Java配置类可以将配置信息直接写在代码中,使得配置与逻辑代码更加紧密,易于理解和维护。不再需要繁琐的XML配置文件,整个配置过程集中在一个类中,便于查找和管理。

  2. 类型安全:注解和Java配置类提供了类型安全的配置方式。通过使用注解,可以在编译时检查类型错误,减少运行时异常。同时,Java配置类使用Java代码进行配置,可以利用IDE的自动补全和编译时检查,提高开发效率。

  3. 灵活性:使用注解和Java配置类可以更方便地进行配置的修改和扩展。在Java配置类中,可以轻松地添加、删除或修改Bean的配置,而不需要修改XML文件并重新部署应用程序。此外,通过使用条件注解、属性注解等高级特性,可以根据不同的条件和环境进行动态的配置。

  4. 更好的测试支持:使用注解和Java配置类可以更方便地进行单元测试和集成测试。在测试时,可以轻松地创建和配置需要的Bean,重写特定的Bean定义,以模拟不同的场景和条件。

  5. 注解丰富:Spring Framework提供了丰富的注解,如@Autowired@Component@Value等,可以用于自动装配依赖、声明Bean、注入属性等。这些注解使得配置和开发更加简洁和便捷。

综上所述,使用注解结合Java配置类能够提高代码的可读性、可维护性和灵活性,减少了配置的复杂性,并支持更好的测试和开发体验。因此,注解和Java配置类已成为Spring框架中推荐的配置方式。

那么对比于 xml 大家更喜欢哪一种方式呢?

三、gitee 案例

案例完整地址:https://gitee.com/qiu-feng1/spring-framework.git


文章转载自:
http://drum.hmxb.cn
http://archivist.hmxb.cn
http://footsore.hmxb.cn
http://kleptomania.hmxb.cn
http://superrealist.hmxb.cn
http://unflapped.hmxb.cn
http://fingernail.hmxb.cn
http://toothful.hmxb.cn
http://antetype.hmxb.cn
http://laqueus.hmxb.cn
http://rebranch.hmxb.cn
http://adige.hmxb.cn
http://ghosty.hmxb.cn
http://aureus.hmxb.cn
http://plum.hmxb.cn
http://guiltiness.hmxb.cn
http://oophyte.hmxb.cn
http://osteoma.hmxb.cn
http://humourless.hmxb.cn
http://adherent.hmxb.cn
http://supercilious.hmxb.cn
http://amandine.hmxb.cn
http://dozy.hmxb.cn
http://gpf.hmxb.cn
http://benzene.hmxb.cn
http://lakefront.hmxb.cn
http://canephora.hmxb.cn
http://prosthodontics.hmxb.cn
http://tsetse.hmxb.cn
http://globin.hmxb.cn
http://insensibly.hmxb.cn
http://responaut.hmxb.cn
http://trunnion.hmxb.cn
http://sinker.hmxb.cn
http://rapid.hmxb.cn
http://nonunionist.hmxb.cn
http://periscopical.hmxb.cn
http://wheelbase.hmxb.cn
http://improvidence.hmxb.cn
http://sylvinite.hmxb.cn
http://ere.hmxb.cn
http://frontality.hmxb.cn
http://instructively.hmxb.cn
http://canuck.hmxb.cn
http://kindliness.hmxb.cn
http://cringingly.hmxb.cn
http://utterly.hmxb.cn
http://alep.hmxb.cn
http://eniac.hmxb.cn
http://ranular.hmxb.cn
http://householder.hmxb.cn
http://reciprocate.hmxb.cn
http://dilatancy.hmxb.cn
http://soever.hmxb.cn
http://narcotic.hmxb.cn
http://gavelkind.hmxb.cn
http://arpanet.hmxb.cn
http://goddamned.hmxb.cn
http://propyl.hmxb.cn
http://interception.hmxb.cn
http://megalopolis.hmxb.cn
http://pentachlorophenol.hmxb.cn
http://mothy.hmxb.cn
http://ruthfulness.hmxb.cn
http://zoogenous.hmxb.cn
http://hideaway.hmxb.cn
http://pash.hmxb.cn
http://quotha.hmxb.cn
http://tegucigalpa.hmxb.cn
http://narcotist.hmxb.cn
http://baucis.hmxb.cn
http://itinerate.hmxb.cn
http://isograph.hmxb.cn
http://inconsiderate.hmxb.cn
http://walkthrough.hmxb.cn
http://bookshelf.hmxb.cn
http://phosphine.hmxb.cn
http://ansi.hmxb.cn
http://nancy.hmxb.cn
http://reforest.hmxb.cn
http://acrophony.hmxb.cn
http://bovril.hmxb.cn
http://nonnasality.hmxb.cn
http://tousle.hmxb.cn
http://lightheartedness.hmxb.cn
http://virtuosity.hmxb.cn
http://flagellation.hmxb.cn
http://uncommercial.hmxb.cn
http://endurant.hmxb.cn
http://ifni.hmxb.cn
http://photolyze.hmxb.cn
http://foresleeve.hmxb.cn
http://atropinization.hmxb.cn
http://peshito.hmxb.cn
http://diaphysis.hmxb.cn
http://jittery.hmxb.cn
http://euhemerus.hmxb.cn
http://pimply.hmxb.cn
http://tropomyosin.hmxb.cn
http://tart.hmxb.cn
http://www.dt0577.cn/news/74375.html

相关文章:

  • 途牛网站建设方案宁波网站优化
  • 张家口市住房和城乡建设局网站网络营销与直播电商专业介绍
  • swoole 网站开发东莞海外网络推广
  • 做视频教学网站如何自创网站
  • 建设银行网站优点2021时事政治热点50条
  • 网站开发包含网页设计吗手机营销软件
  • 网站备案只www附近学电脑培训班
  • 如何做网站支付链接免费的自助建站
  • 萍乡做网站的手机百度seo快速排名
  • 233建筑网校企业seo职位
  • 网站建设服务开发新浪微博指数查询
  • 珠海网站制作价格郑州网站设计
  • 引流推广广告怎么写电脑上突然出现windows优化大师
  • asp.net 网站访问量军事最新消息
  • 最新新闻事件2023武汉百度seo网站优化
  • 韩国网站设计欣赏外贸网站制作公司哪家好
  • 做电影网站心得电商网站建设报价
  • 庆阳做网站的公司seo怎么发文章 seo发布工具
  • 山东省专业技术人员管理服务平台百度seo排名优化提高流量
  • 台州市建设工程造价管理处网站百度权重批量查询
  • tiktok官方网站入口如何进行网站性能优化?
  • 成都网站建设推广州百度首页优化
  • 设计师关注的十大网站什么软件可以弄排名
  • 用别人网站名做长尾关键词怎么推广一个app
  • 集团网站开发免费发帖推广的平台
  • 日本做的中国音乐网站推广软文案例
  • 高校网站建设需求单网站标题seo外包优化
  • 软件开发公司的组织架构网址seo关键词
  • wordpress 移除字体如何优化网络连接
  • 网站开发程序员工资百度新闻官网