Java研学-SpringBoot(一)

一 JavaConfig

1 介绍

  JavaConfig是Spring项目的一个子项目,在Spring 3.0开始从一个独立的项目并入到Spring中,并在Spring 4后成为核心功能。它提供了配置Spring IoC容器的纯Java方法,有助于避免使用传统的XML配置方式。使用JavaConfig的优点主要体现在以下几个方面:

  面向对象的配置:由于配置被定义为JavaConfig中的类,用户可以充分利用Java中的面向对象功能,如封装、继承和多态等。

  类型安全的配置:由于Java 5.0对泛型的支持,现在可以按类型而不是按名称检索bean,不需要任何强制转换或基于字符串的查找。

  灵活性和可维护性:通过Java代码来配置Spring容器,使得配置更加灵活,易于维护和管理。同时,JavaConfig也支持将多个配置类合并,类似于XML配置中的include标签。

  在JavaConfig中,通常会使用@Configuration注解来标记一个配置类,然后使用@Bean注解来定义和初始化bean。此外,还可以使用@ComponentScan注解来自动扫描和注册组件。

  需要注意的是,虽然JavaConfig提供了纯Java的配置方式,但很多人认为将JavaConfig与XML混合匹配是理想的。这取决于具体项目的需求和团队的偏好。JavaConfig为开发人员提供了一种更加灵活、面向对象和类型安全的配置Spring容器的方式,是现代Spring开发中不可或缺的一部分。

2 XML 方式配置 IoC

 ① 导入依赖

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>

 ② 定义Bean

// 第一个
public class OtherBean {
    public OtherBean() {
        System.out.println("OtherBean 被创建");
    }
}

// 第二个
public class SomeBean {
    private OtherBean otherBean;
    // set注入
    public void setOtherBean(OtherBean otherBean) {
        this.otherBean = otherBean;
    }
    public SomeBean() {
        System.out.println("SomeBean 被创建");
    }
    public void init() {
        System.out.println("SomeBean 被初始化");
    }
    public void destroy() {
        System.out.println("SomeBean 被销毁");
    }
    @Override
    public String toString() {
        return "SomeBean{" +
                "otherBean=" + otherBean +
                '}';
    }
}

 ③ 配置文件 – spring-core.xml

<?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
">
	<!--创建bean-->
    <bean id="someBean" class="cn.tj.bean.SomeBean">
        <property name="otherBean" ref="otherBean"></property>
    </bean>
    <bean id="otherBean" class="cn.tj.bean.OtherBean" ></bean>
</beans>

<!--<context:component-scan base-package="cn.tj"></context:component-scan>-->

 ④ 测试类

	/*xml配置bean对象*/
    @Test
    public void ioc_test01() {
        //获取somebean 加载配置文件
        ApplicationContext context=new ClassPathXmlApplicationContext("spring-core.xml");
        SomeBean someBean = (SomeBean) context.getBean("someBean");
        System.out.println(someBean);
    }

3 JavaConfig 方式配置 IoC

  JavaConfig 方式中使用注解彻底的替代 XML 文件,即通过注解告诉 Spring 容器,bean 没有定义在 XML 文件中,而是定义在一个 Java 配置类中。

  • @Configuration:在类上贴该注解表示该类是 Spring 的配置类,具有 applicationContext.xml 文件的作用。
  • @Bean:在 Spring 的配置类的方法上贴该注解后,该方法返回的对象会交给 Spring 容器管理,替代 applicationContext.xml 中的 bean 标签。
  • @ComponentScan:在 Spring 配置类上贴该注解表示开启组件扫描器,默认扫描当前配置类所在的包,也可以自己指定,替代 XML 配置中的 <context:component-scan /> 标签。
  • AnnotationConfigApplicationContext:该类是 ApplicationContext 接口的实现类,该对象是基于 JavaConfig 的方式来运作的 Spring 容器。(加载配置文件,也就是配置类)

 ① 配置类 – SpringConfig(主启动类需放在其他包和类的上一级目录才能进行扫描)

//声明当前类是一个配置类
@Configuration
//@configuration componentScanconfigutation componentScan
//注解扫描:扫描当前包及其子包注解
@ComponentScan
public class SpringConfig {
	//相当于Bean标签
   @Bean
   public SomeBean someBean(OtherBean otherBean){
       SomeBean someBean=new SomeBean();
       someBean.setOtherBean(otherBean);//bean作为方法的形参传入 完成注入
        return someBean;
    }

    @Bean
    public OtherBean otherBean(){
        return new OtherBean();
    }

//    @Bean(initMethod = "init",destroyMethod = "destroy")
//    @Scope("prototype")
//    @Bean
//    public SomeBean someBean( ){
//        SomeBean someBean=new SomeBean();
//        someBean.setOtherBean(otherBean());//调用bean的方法注入也可以
//        return someBean;
//    }
}

 ② 测试类

	/*javaconfig配置bean对象*/
    @Test
    public void ioc_test02() {
    // 加载配置类 由于2个Bean都在配置类中 故直接生成2个Bean
        AnnotationConfigApplicationContext context=new AnnotationConfigApplicationContext(SpringConfig.class);
        SomeBean someBean = (SomeBean) context.getBean("someBean");
        System.out.println(someBean);
        context.close();
    }

4 使用 IoC DI 注解简化配置

  通过注解简化 JavaConfig
 ① Bean

// 第一个
@Component
public class OtherBean {
    public OtherBean() {
        System.out.println("OtherBean 被创建");
    }
}

// 第二个
@Component
public class SomeBean {
    @Autowired
    private OtherBean otherBean;
//    public void setOtherBean(OtherBean otherBean) {
//        this.otherBean = otherBean;
//    }
    public SomeBean() {
        System.out.println("SomeBean 被创建");
    }
    public void init() {
        System.out.println("SomeBean 被初始化");
    }
    public void destroy() {
        System.out.println("SomeBean 被销毁");
    }
    @Override
    public String toString() {
        return "SomeBean{" +
                "otherBean=" + otherBean +
                '}';
    }
}

 ② 配置类

@Configuration
//@configuration componentScanconfigutation componentScan
//注解扫描:扫描当前包及其子包注解
@ComponentScan
public class SpringConfig {
// 略
}

5 Spring Test 方式加载配置类

 ① 导入依赖

     <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.8.RELEASE</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.junit.jupiter</groupId>
      <artifactId>junit-jupiter-api</artifactId>
      <version>5.6.3</version>
      <scope>test</scope>
    </dependency>

 ② JUnit4 的方式

@RunWith(SpringJUnit4ClassRunner.class)
//读取xml配置文件 需配置<context:component-scan>扫描
//@ContextConfiguration("classpath:spring-core.xml")
//读取配置类 需配置注解
@ContextConfiguration(classes = {SpringConfig.class})
public class Junit4BeanTest {
    @Autowired
    private SomeBean someBean;
    
    @Test
    public void test1() {
        System.out.println(someBean);
    }
}

 ③ JUnit5 的方式

// 读配置文件
//@SpringJUnitConfig(locations = {"classpath:spring-core.xml"})
// 读配置类
@SpringJUnitConfig(classes = {SpringConfig.class})
public class Junit5BeanTest {
    @Autowired
    private SomeBean someBean;

    @Test
    public void test1() {
        System.out.println(someBean);
    }
}

6 配置类的导入

  项目中一般都会有多个 Spring 的配置文件,分别配置不同的组件,最后关联到主配置文件中,该功能也是同样可以在配置类的方式中使用的。
 ① xml方式

<!-- mvc.xml 中导入 applicationContext.xml -->
<import resource="classpath:applicationContext.xml"/>

 ② 配置类方式

// 主配置类
@Configuration
@Import(JavaConfigA.class) // 在主配置类中关联次配置类
public class JavaConfig { ... }

// 次配置类
@Configuration
public class JavaConfigA { ... }

// 测试
@SpringJUnitConfig(classes = JavaConfig.class) // 加载主配置类
public class Test { ... }

 ③ 配置类导入 XML 配置

// 用@ImportResource指定导入 XML 配置文件的路径
// 主配置类
@Configuration
@ImportResource("classpath:XML文件路径") // 在主配置类中关联 XML 配置
public class JavaConfig { ... }

// 测试
@SpringJUnitConfig(classes = JavaConfig.class) // 加载主配置类
public class IoCTest { ... }
  • 28
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: idea-springboot-projectes是指使用IDEA开发工具构建Spring Boot项目的过程。Spring Boot是一个流行的开源框架,可以帮助Java开发者快速构建高效的微服务应用。IDEA则是一个以Java为基础的集成开发环境,可以提供代码编辑、调试、测试和部署等功能。 在构建Spring Boot项目时,IDEA可以通过自带的Spring Initializr工具或者通过手动配置的方式来进行。Spring Initializr可以自动生成项目基础框架,包括依赖库、项目结构、POM文件等。而手动配置则需要开发者自行添加所需要的依赖库和配置文件。 在项目开发过程中,IDEA可以提供强大的代码提示和自动补全功能,包括快捷键、代码重构、调试等。此外,IDEA还支持各种测试框架和部署方式,方便开发者快速进行测试和部署。 总的来说,使用IDEA开发Spring Boot项目可以提高开发效率和代码质量,并且可以使用各种插件和扩展来增强开发体验。这是一个非常流行的Java开发模式,适用于各种类型的应用程序和系统。 ### 回答2: Idea-SpringBoot-Project是一个使用了Spring Boot框架的项目,有助于Java开发者轻松构建Web应用程序。Spring Boot是一个流行的Java框架,它可以帮助开发者更快地构建更好的应用程序。使用Idea-SpringBoot-Project,开发者可以轻松创建具有高可用性和可扩展性的Java Web应用程序。 Idea-SpringBoot-Project引入了许多方便的功能,如Spring容器管理、数据访问和Web MVC框架等。通过使用Spring Boot,开发者可以在不需要手动配置的情况下快速构建应用程序。而使用Idea作为开发工具,则能帮助开发者更快地编写代码和进行调试。这个项目不仅可以在Windows和Linux平台上运行,还与许多其他大型Java库和框架兼容,如Spring Security和Hibernate等。 总之,Idea-SpringBoot-Project帮助开发者将更多的时间专注于应用程序逻辑和功能,而不是花费时间和精力去手动配置。通过这个项目,开发者可以构建出高性能、高度可用性和可扩展性的Java应用程序。 ### 回答3: idea-springboot-projectes是针对Spring Boot框架的项目管理功能的开发工具集成环境。它提供了一种方便快捷的方式来创建、维护和调试Spring Boot项目。 idea-springboot-projectes使开发人员能够在一个单一的界面中,管理不同的Spring Boot项目,包括应用程序、库和插件。它自动生成项目结构,提供依赖管理,支持代码重构、调试和测试等功能,同时也能够整合其他常用开发工具如Maven、Gradle等,进一步提升开发效率。 通过idea-springboot-projectes,开发人员可以快速创建Spring Boot应用程序。一旦项目创建完成,可以通过IDEA的自动配置机制,无需编写大量的代码即可完成基础设施的搭建和配置。同时,IDEA也提供了许多Spring Boot Starter库,这些库包含了大量常用的功能和组件,帮助开发人员轻松实现各种业务需求。 总之,idea-springboot-projectes是一款非常实用的开发工具,为Spring Boot开发提供了强大的项目管理和开发支持,同时提高了开发效率和代码质量,使得开发人员能够更专注于业务代码的编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒疯狂展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值