SSM学习笔记
Spring_quickstart的对象注入
- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码- //bookService类的bookDao对象创建方式
- public class bookServiceImpl implements bookService {
- bookDao bookDao;//只用声明对象,但不用new,对象由IOC容器提供(在XML中配置)
- @Override
- public void save() {
- System.out.println("bookService save...");
- bookDao.save();
- }
- //创建对象的方法
- public void setBookDao(bookDao bookDao){
- this.bookDao = bookDao;
- }
- }
复制代码- //main方法的写法
- public class APP {
- public static void main(String[] args) {
- ApplicationContext ctx=new ClassPathXmlApplicationContext("ApplicationContext.xml");
- bookService bookService = (bookService) ctx.getBean("bookService");
- bookService.save();
- }
- }
复制代码 Bean配置
根本配置
- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码 别名配置
- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码 作用范围配置
spring默认配置的对象是单例,我们需要用scope配置,prototype是多例,singleton是单例
bean的实例化
1、容器通过构造方法实现对象- public class bookDaoImpl implements bookDao {
- public bookDaoImpl(){//可以用public,也可以用private
- System.out.println("无参构造器...");
- }
- @Override
- public void save() {
- System.out.println("bookdao save...");
- }
- }
复制代码 2、利用静态工厂实现对象
3、利用实例工厂实现对象
4、利用FactoryBean实现对象
Bean的生命周期
依赖注入方式
setter注入
1、引用范例- public class bookServiceImpl implements bookService{
- bookDao bookDao;
- public void setBookDao(bookDao bookDao){
- this.bookDao = bookDao;
- }
- //其他事务处理
- }
复制代码- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码 2、根本范例- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码- public class bookDaoImpl implements bookDao {
- private int num;
- private String name;
- public void setName(String name){
- this.name = name;
- }
- public void setNum(int num){
- this.num = num;
- }
- //其他事务处理
- }
复制代码 构造器注入 (本身做模块不推荐利用)
依赖自动装配
聚集注入
1、数组注入
2、list注入
3、set注入
4、map注入
5、property注入
第三方数据管理
- <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" />
复制代码 用properties文件加载数据
加载properties文件的方式
创建容器的方式
获取Bean的方式
注解开辟
注解开辟界说Bean
- @component:
- @service 业务层
- @repository 数据层
- @controller 表现层
- //上述四个是相同的意思,只是用下面的三个增强可读性
复制代码
注解方式界说Bean的生命周期
注解方式的依赖注入
引用范例的注入
简单范例的注入
加载外部properties文件
第三方Bean的管理
第二种扫描式不太推荐
第三方Bean的依赖注入
Spring整合Mybatis
spring整合Junit
面向AOP编程
- //pom.xml中的maven配置
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>5.2.10.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.9.4</version>
- </dependency>
复制代码- //main方法
- public class app {
- public static void main(String[] args) {
- AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext(SpringConfig.class);
- BookDao bookDao = ctx.getBean(BookDao.class);
- bookDao.update();
- }
- }
复制代码 dao层
- //接口
- public interface BookDao {
- public void save();
- public void update();
- }
复制代码- //实现类
- @Repository
- public class BookDaoImpl implements BookDao {
- @Override
- public void save() {
- System.out.println(System.currentTimeMillis());//切面,用于对比
- System.out.println("book dao save...");
- }
- @Override
- public void update() {
- System.out.println("book dao update...");
- }
- }
复制代码 aop层
- //aop
- @Component //表示一个Bean
- @Aspect //添加此注解,下面的那些才能有用
- public class MyAdvice {
- @Pointcut("execution(void com.cwnu.dao.BookDao.update())") //切入点,表示执行到update()方法
- private void pc(){}
- @Before("pc()") //表示在执行到update()方法之前执行method()方法,method()是切入方法
- public void method(){
- System.out.println(System.currentTimeMillis());
- }
- }
复制代码 config层
- @Configuration //这是一个配置类
- @ComponentScan("com.cwnu") //扫描包,在这个扫描路径下的Bean才能实现对象
- @EnableAspectJAutoProxy //切面驱动,有这个注解才能使用面向AOP编程
- public class SpringConfig {
- }
复制代码 SpingMvc
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>5.2.10.RELEASE</version>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.1.0</version>
- <scope>provided</scope>
- </dependency>
复制代码 controller
- @Controller
- public class UserController {
- @RequestMapping("/save")
- @ResponseBody
- public String save(){
- System.out.println("user save..");
- return "{'name':'zhoujin'}";
- }
- }
复制代码 config
- //SpringMvc配置
- @Configuration
- @ComponentScan("com.cwnu.controller")
- public class SpringMvcConfig {
- }
复制代码- //Servlet容器,加载tomcat时候加载这个类
- public class ServletContainerInitConfig extends AbstractDispatcherServletInitializer {
- @Override
- protected WebApplicationContext createServletApplicationContext() {
- AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
- ctx.register(SpringMvcConfig.class); //容器加载springmvc配置
- return ctx;
- }
- @Override
- protected String[] getServletMappings() {
- return new String[]{"/"};
- }
- @Override
- protected WebApplicationContext createRootApplicationContext() {
- return null;
- }
- }
复制代码 乱码处理
对于post类请求,假如提交的数据有中文,可能会出现乱码,对此我们在ServletContainerInitConfig类里面添加过滤器- //乱码处理
- @Override
- protected Filter[] getServletFilters() {
- CharacterEncodingFilter filter = new CharacterEncodingFilter();
- filter.setEncoding("UTF-8");
- return new Filter[]{filter};
- }
复制代码 传参
根本范例的传参
- @RequestMapping("/commonParam")@ResponseBodypublic String commonParam(@RequestParam("name") String name, @RequestParam("sex") String <bean id = "bookService" >
- <property name="bookDao" ref="bookDao"/>
- </bean>
- <bean id = "bookDao" /> sex){ System.out.println(name); System.out.println(sex); return name;}
复制代码 pojo对象的传参
- @RequestMapping("/pojoParam")
- @ResponseBody
- public String pojoParam(User user){
- System.out.println(user);
- return user.toString();
- }
- //直接在请求路径后面添加pojo的属性,springmvc自动封装成对象
复制代码 嵌套pojo对象的传参
日期范例
相应
很简单,不赘述
Rest风格
SSM整合
SpringConfig.java
- @Configuration
- @ComponentScan("com.cwnu.service")
- @PropertySource("jdbc.properties")
- @Import({JdbcConfig.class, MybatisConfig.class})
- public class SpringConfig {
- }
复制代码 Spring整合Mybatis
JdbcConfig.java
- public class JdbcConfig {
- @Value("${jdbc.driver}")
- private String driver;
- @Value("${jdbc.url}")
- private String url;
- @Value("${jdbc.username}")
- private String username;
- @Value("${jdbc.password}")
- private String password;
- @Bean
- public DataSource dataSource(){
- DruidDataSource dataSource = new DruidDataSource();
- dataSource.setDriverClassName(driver);
- dataSource.setUrl(url);
- dataSource.setUsername(username);
- dataSource.setPassword(password);
- return dataSource;
- }
- }
复制代码 MybatisConfig.java
- public class MybatisConfig {
- @Bean
- public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){
- SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
- sqlSessionFactoryBean.setTypeAliasesPackage("com.cwnu.domain");
- sqlSessionFactoryBean.setDataSource(dataSource);
- return sqlSessionFactoryBean;
- }
- @Bean
- public MapperScannerConfigurer mapperScannerConfigurer(){
- MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
- mapperScannerConfigurer.setBasePackage("com.cwnu.dao");
- return mapperScannerConfigurer;
- }
- }
复制代码 Spring整合SpringMvc
ServletConfig.java
- public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
- @Override
- protected Class<?>[] getRootConfigClasses() {
- return new Class[]{SpringConfig.class};
- }
- @Override
- protected Class<?>[] getServletConfigClasses() {
- return new Class[]{SpringMvcConfig.class};
- }
- @Override
- protected String[] getServletMappings() {
- return new String[]{"/"};
- }
- }
复制代码 SpringMvcConfig.java
- @Configuration
- @ComponentScan("com.cwnu.controller")
- @EnableWebMvc
- public class SpringMvcConfig {
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |