[学习笔记] SpringMVC之零配置开发回顾

# 学习 # · 2021-03-01

Spring注解回顾

Spring框架从5.x版本推荐使用注解形式来对java应用程序进行开发与配置,并且可以完全替代原始的XML+注解形式的开发,在使用注解形式进行项目开发与环境配置时,Spring框架提供了一种针对环境配置与业务bean开发的相关注解。

1、声明Bean注解:

@Compoent    // 组件,在没有明确规定其角色,作用在类级别上声明当前类为一个业务组件,被SpringIoC容器维护

@Service    // 在业务逻辑层类级别上进行声明

@Repository    // 在数据访问层类级别上进行声明

@Controller    // 在控制器层类级别上进行声明

2、注入Bean注解:

@Autowired    // Spring官方提供的注解

@Resource    // JSR-250提供的注解

@Inject    //JSR-330提供的注解(标准制定方)

3、配置与获取Bean注解:

@Configuration    // 作用在类上,将当前类声明为一个配置类,相当于一个xml配置文件

@ComponentScan    // 自动扫描指定包下标注有Bean注解的类

@Component    //注解的类并由IoC容器进行实例化和维护

@Bean    // 作用于方法上,相当于xml文件中的<bean>,声明当前方法返回值为一个bean

@Value    // 获取properties文件指定的k/v值

IoC中Bean的实例化与获取

1、创建Dao Bean对象:

/**
 * @Package: com.demo.dao
 * @Description: UserDao Bean
 * @Author 多仔
 */
@Repository
public class UserDao {
    public void test() {
        System.out.println("UserDao is run");
    }
}

2、创建Service Bean对象:

/**
 * @Package: com.demo.service
 * @Description: UserService Bean
 * @Author 多仔
 */
@Service
public class UserService {
    @Autowired
    UserDao userDao;

    public void test() {
        System.out.println("UserService is run");
        userDao.test();
    }
}

3、创建IocConfig配置类:

/**
 * @Package: com.demo.config
 * @Description: IocConfig
 * @Author 多仔
 */
// 将当前类声明为一个配置类
@Configuration
//设置扫描包的范围
@ComponentScan("com.demo")
public class IocConfig {

}

4、创建启动类执行测试:

@Test
public void test() {
    // 基于Java的配置类加载Spring的应用上下文
    AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(IocConfig.class);

    // 获取指定的Bean对象
    UserService userService = ac.getBean(UserService.class);

    // 调用Bean对象的方法
    userService.test();
}

5、运行测试:

UserService is run
UserDao is run

Bean注解的使用

1、创建Dao Bean对象:

// 不使用@Repository注解
public class UserDao {
    public void test() {
        System.out.println("UserDao is run");
    }
}

2、修改IocConfig配置类:

@Bean
public UserDao getUserDao() {
    return new UserDao();
}

3、运行测试:

UserService is run
UserDao is run

读取外部配置文件

1、编写配置文件user.properties:

user.name=张三
user.pwd=123456

2、修改IocConfig配置类:通过@PropertySource加载配置文件。

// 将当前类声明为一个配置类
@Configuration
//设置扫描包的范围
@ComponentScan("com.demo")
@PropertySource(value = {"classpath:user.properties"})
public class IocConfig {

    @Value("${user.name}")
    private String name;

    @Value("${user.pwd}")
    private String pwd;

    @Bean
    public UserDao getUserDao() {
        return new UserDao();
    }

}

SpringMVC零配置

1、创建MvcConfig配置类:

// 配置类
@Configuration
// 扫描包范围
@ComponentScan("com.demo")
// 添加SpringMVC功能
@EnableWebMvc
public class MvcConfig {

}

2、加载MvcConfig配置类:

/**
 *实现webApplicationinitializer接口的类都可以在web应用程序启动时被加载
 **/
public class webInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        // 基于Java的配置类加载Spring的应用上下文
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        // 注册Mvc配置信息
        ctx.register(MvcConfig.class);
        // 设置ServletContext 上下文信息
        ctx.setServletContext(servletContext);
        // 配置转发器Dispatcher
        ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(ctx));
        //设置映射路径
        servlet.addMapping("/");
        // 启动时即实例化 Bean
        servlet.setLoadOnStartup(1);
    }
}
如无特殊说明,本博所有文章均为博主原创。

如若转载,请注明出处:一木林多 - https://www.l5v.cn/archives/295/

评论