欢迎光临
我们一直在努力

SSM框架从入门到入土(SpringFrameWork)

前言:在web前端我们学习了springboot这种简洁的spring框架,但是我们并不知道spring boot具体操作的原理,而springboot是基于springframework改造的,所以我们这章节通过对其的学习来加深对springboot的理解。

Framework的系统架构

如图所示:

IOC(Inversion of Control)控制反转

 使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。

Spring技术对IOC思想进行了实现: Spring提供了一个容器,称为IOC容器,用来充当IOC思想中的外部 IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean

DI (Dependency Injection )依赖注入

在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入

依赖的本质

Service依赖DAO的意思是: "我的业务逻辑需要操作数据库,但我不想自己写SQL,所以我需要一个助手(DAO)帮我做这些脏活累活!"

依赖的可视化表现:

依赖绑定(传统Framework方式):

<!– applicationContext.xml –>
<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">

<!– 1. 定义DAO Bean –>
<bean id="userDao" class="com.example.dao.UserDaoImpl">
<!– 可以注入DAO自己的依赖 –>
<property name="dataSource" ref="dataSource"/>
</bean>

<!– 2. 定义Service Bean –>
<bean id="userService" class="com.example.service.UserServiceImpl">
<!– 绑定关键:ref属性指向userDao –>
<property name="userDao" ref="userDao"/>
</bean>

<!– 3. 数据源配置 –>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
</beans>

与Springboot的不同:

核心区别:入口方式不同

Spring Framework的传统方式:需要自己创建一个"启动类"来初始化Spring容器

类比:

为什么需要这个App类? 因为Spring Framework只是一个"工具箱",你需要:

  • 自己组装:告诉Spring配置文件在哪

  • 自己启动:调用API初始化容器

  • 自己管理:获取Bean并使用

  • public class MainApp {
    public static void main(String[] args) {
    // 1. 读取XML,创建容器
    ApplicationContext context = new ClassPathXmlApplicationContext(
    "classpath:applicationContext.xml",
    "classpath:service-context.xml" // 可能还有多个配置文件
    );

    // 2. 手动获取Bean(麻烦!)
    UserService userService = (UserService) context.getBean("userService");

    // 3. 使用
    User user = new User("张三", "123456");
    userService.register(user);

    // 4. 关闭容器(还要自己管理生命周期!)
    ((ClassPathXmlApplicationContext) context).close();
    }
    }

    Spring Boot的现代方式:Spring Boot自动帮你创建容器

    @SpringBootApplication 这个注解包含了一切!
    public class MyApp {
    public static void main(String[] args) {
    // 这一行代码做了Spring Framework中100行代码的事!
    SpringApplication.run(MyApp.class, args);
    }
    }
    实际上@SpringBootApplication = 三个注解的合并
    @SpringBootConfiguration 相当于@Configuration
    @EnableAutoConfiguration 自动配置魔法!
    @ComponentScan 自动扫描组件
    public @interface SpringBootApplication {}

    SpringApplication.run()内部做了:
    1. 创建Spring容器(根据classpath判断是Web还是普通应用)
    2. 自动配置(根据依赖自动配置Bean)
    3. 启动内嵌服务器(如果是Web应用)
    4. 发布ApplicationStartedEvent事件
    5. 调用CommandLineRunner
    6. 启动完成!

    bean的基础配置:我们在javaweb里学习过了,这里就不过多赘述。

    赞(0)
    未经允许不得转载:171主机测评 » SSM框架从入门到入土(SpringFrameWork)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址