后端主流框架--Spring02

前言:上篇关于Spring的文章介绍了一些Spring的基本知识,此篇文章主要分享一下如何配置Spring环境,如何注入等。

Spring项目构建

导入Spring相关JAR包

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

准备Spring配置文件

  1. 在classpath的根目录下新建一个applicationContext.xml配置文件,文件名可以自定义,但是通常使用applicationContext这个名字;

  2. 添加文档声明和约束(这个东西不需要记忆):

    1. 可以参考文档,中英文文档都可以;

      1. spring-framework-4.1.2.RELEASE\docs\spring-framework-reference\pdf

    2. 可以参考资源中的资料;

    3. 可以百度spring的配置文件;

    4. 也可以直接拿以下内容去修改

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
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">
	<bean id="..." class="...">
	<!-- collaborators and configuration for this bean go here -->
	</bean>
</beans>

编写一个类

public class MyBean {
	public void hello(){
		System.out.println("hello spring...");
	}
}

将编写的类交给Spring容器管理

  1. Spring是一个容器,我们需要把我们的类交给Spring去管理。 因为,我们的测试是创建一个普通的类,然后再通过Spring帮我们把这个类的对象创建出来就算是成功了;

  2. 在配置文件中将这个Java类交给Spring管理。在applicationContext.xml中配置

    <beans ...>
      <bean id="myBean" class="org.com.Spring._01_hello.MyBean"></bean>
    </beans>
  3. 元素和属性讲解:

    bean元素:表示对象配置或注册标签;

    id属性:这个bean对象在Spring容器中的唯一标识,也可以使用name,常用id(唯一特性),获取这个对象的时候就可以通过这个表示来获取;

    class属性:对应对象所属类的完全限定名。注意这里可以是JDK自带的类,也可以是自己新建的类;

Spring容器实例化

  1. Spring容器对象有两种:BeanFactory和ApplicationContext;

  2. ApplicationContext继承自BeanFactory接口,拥有更多的企业级方法,推荐使用该类型;

BeanFactory

BeanFactory是一个接口,可以通过其实现类XmlBeanFactory获取其实例。接口中有一个getBean()方法可以获取Spring容器中配置或注册的Bean对象;

@Test
public void testHelloSpring() throws Exception {
	/**
	 *我们第一步是要启动框架,而启动框架则需要拿到Spring的核心对象	
	 */
	
	//第一步:读取资源文件
	Resource resource = new ClassPathResource("applicationContext.xml");
	//第二步:拿到核心对象 BeanFactory
	BeanFactory factory = new XmlBeanFactory(resource);
}

ApplicationContext

ApplicationContext的中文意思是"应用程序上下文",它继承自BeanFactory接口,除了包含BeanFactory的所有功能之外,在国际化支持、资源访问(如URL和文件)、事件传播等方面进行了良好的支持,被推荐为JavaEE应用之首选,可应用在Java APP与Java Web中;

加载工程classpath下的配置文件实例化
String conf = "applicationContext.xml";
ApplicationContext factory = new ClassPathXmlApplicationContext(conf);

获取对象方式

方式一:通过id直接拿到相应的Bean对象

//通过[xml]{.ul}中配置的id拿到对象

MyBean bean = (MyBean)factory.getBean("myBean");

System.out.println(bean);

方式二:通过id与对象的Class对象拿到Bean对象(推荐使用)

//通过id与对象的class拿到Bean对象

MyBean bean = factory.getBean("myBean",MyBean.class);

System.out.println(bean);

ApplicationContext与BeanFactory的区别

联系

ApplicationContext是BeanFactory的子类,拥有更多的功能与方法;

区别

ApplicationContext默认是在读取配置文件的时候就会根据配置创建Bean对象(迫切加载)。而BeanFactory是在使用的时候才进行对象的创建(懒加载/延迟加载)

Spring管理bean的方式

XML

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd"
>    
    <bean id="myBean" class="com.ss._04di._01xml.MyBean">

    </bean>

    <bean id="otherBean" class="com.ss._04di._01xml.OtherBean"></bean>
</beans>

注解

配置扫描注解

<?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
        https://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/context
        https://www.springframework.org/schema/context/spring-context.xsd
"
>
    <!--扫描组件:通过指定包,就是找到本包或者子孙包下面加了注解Component及@Controller等注解的类,把它交给spring管理
    就相当于我们xml当中一个一个配置-->
    <context:component-scan base-package="com.ss._04di._02annotation"></context:component-scan>
</beans>

加注解

@Component @Controller @ Service @Repository等注解,后面三个是前一个子注解。其实我们任意用一个都可以,但是为了代码可读性,最好分门别类的使用 。

Controller就用 @Controller 注解

Service就用@Service注解

dao/mapper用@Repository

Spring依赖注入

  1. IoC是一种思想,它的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的;

  2. Spring中的对象都是由Spring进行统一管理,但是在对象中还存在属性,这些属性实际上引用的也是别的对象,那么这些对象也是由Spring来管理的;

  3. 在实际使用时,我们需要给Spring中对象的属性字段赋值,这称为依赖注入DI(Dependency Injection);

  4. 依赖注入又分为xml注入和注解注入;

XML注入

Bean定义:

public class MyBean{
	private OtherBean otherBean;
	public void hello(){
		otherBean.hello();
	}
     public void setOtherBean(OtherBean otherbean){
         this.OtherBean = OtherBean
}
}

public class OtherBean{
	public void hello(){
		System.out.println("otherbean hello");
	}
}

xml定义

//xml配置:
<bean id="otherBean" class="org.com.bean.OtherBean"></bean>
<bean id="myBean" class="org.com.bean.MyBean">
  <property name="otherBean" ref="otherBean"></property>
</bean

测试

//测试:main方法测试
//加载工程classpath下的配置文件实例化
String conf = "applicationContext.xml";
ApplicationContext factory = new ClassPathXmlApplicationContext(conf);

注解注入

使用@Autowired

@Component
public class ServiceBean {
    @Autowired
    private DaoBean1 daoBean;

    public void sayHello(){
        System.out.println("hello spring!!!!");
        daoBean.hello();
    }
}
@Component
public class DaoBean1 {
    public void hello(){
        System.out.println("hello DaoBean1!!!!!");
    }
}
@Component
public class DaoBean {
    public void hello(){
        System.out.println("hello DaoBean!!!!!");
    }
}

使用@Resource

public class MyBean{
    @Resource //默认按照名字匹配【名字对了,类型也必须一致】,然后按照类型匹配
    //@Resource(name="otherBean1")//指定Bean的名称
	private OtherBean otherBean;
	public void hello(){
		otherBean.hello();
	}
}

public class OtherBean{
	public void hello(){
		System.out.println("otherbean hello");
	}
}

写在最后

Spring的依赖注入,翻转控制,面向切面编程是其最主要的特点与优势,后续博主也会继续分享相关的文章。博主小,中,大厂均有面试经历,每日分享JAVA全栈知识,希望能与大家共同进步。

  • 45
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java后端架构师-2023.xmind是一份关于Java后端架构师在2023年中可能面临的各种挑战和技能要求的思维导图。 首先,作为Java后端架构师,技术能力是最基本的要求之一。需要具备扎实的Java编程技能,熟悉Java的开发框架和工具,如Spring、Hibernate等。同时,掌握主流数据库系统,如MySQL、Oracle等。对微服务架构和云计算平台有一定的了解和实践经验,如Docker、Kubernetes等。 其次,架构设计能力也是核心要求。需要具备良好的架构思维,能够根据业务需求设计合理的系统架构,并保证系统的可伸缩性、高性能、高可用性和安全性。对于分布式系统、消息队列、缓存、负载均衡等技术有深入的理解和应用能力。 此外,团队协作能力也是不可忽视的。作为架构师,需要与产品经理、项目经理、开发团队以及其他相关部门进行良好的沟通和协作,理解和把握业务需求,并能够将架构设计有效地传递给开发团队。善于团队管理和培养能力,能够引导团队成员解决技术难题。 最后,不断学习和适应新技术也是非常重要的。在技术领域,变化日新月异,作为架构师需要保持敏锐的技术判断力,能够及时了解和掌握新的技术趋势,并应用到实际项目中。 综上所述,Java后端架构师-2023.xmind介绍了未来Java后端架构师的技能要求和面临的挑战。通过不断学习和提升,拥有扎实的技术基础和良好的架构设计能力,具备团队合作和沟通能力,以及不断学习和适应新技术,才能在竞争激烈的市场中脱颖而出,成为优秀的Java后端架构师。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值